From 68eb1b1932f77a34d13d0ec0ab2d76cd50fdda92 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Queru <jbq@google.com> Date: Thu, 12 Nov 2009 18:46:12 -0800 Subject: [PATCH] eclair snapshot --- AndroidManifest.xml | 4 +- ...oid_inputmethod_latin_BinaryDictionary.cpp | 36 +- dictionary/src/dictionary.cpp | 58 ++- dictionary/src/dictionary.h | 8 +- res/drawable-en-hdpi/sym_keyboard_delete.png | Bin 0 -> 2315 bytes .../sym_keyboard_feedback_delete.png | Bin 0 -> 1278 bytes .../sym_keyboard_delete.png | Bin .../sym_keyboard_feedback_delete.png | Bin .../btn_keyboard_key_normal.9.png | Bin 0 -> 696 bytes .../btn_keyboard_key_normal_off.9.png | Bin 0 -> 941 bytes .../btn_keyboard_key_normal_on.9.png | Bin 0 -> 1076 bytes .../btn_keyboard_key_pressed.9.png | Bin 0 -> 696 bytes .../btn_keyboard_key_pressed_off.9.png | Bin 0 -> 964 bytes .../btn_keyboard_key_pressed_on.9.png | Bin 0 -> 1055 bytes res/drawable-hdpi/cancel.png | Bin 0 -> 1811 bytes .../candidate_feedback_background.9.png | Bin 0 -> 833 bytes res/drawable-hdpi/caution.png | Bin 0 -> 1641 bytes res/drawable-hdpi/dialog_bubble_step02.9.png | Bin 0 -> 1475 bytes res/drawable-hdpi/dialog_bubble_step07.9.png | Bin 0 -> 6012 bytes .../dialog_top_dark_bottom_medium.png | Bin 0 -> 1976 bytes res/drawable-hdpi/highlight_pressed.png | Bin 0 -> 1527 bytes res/drawable-hdpi/ic_dialog_alert_large.png | Bin 0 -> 4918 bytes res/drawable-hdpi/ic_dialog_keyboard.png | Bin 0 -> 807 bytes res/drawable-hdpi/ic_dialog_voice_input.png | Bin 0 -> 1931 bytes res/drawable-hdpi/ic_dialog_wave_0_0.png | Bin 0 -> 15673 bytes res/drawable-hdpi/ic_dialog_wave_1_3.png | Bin 0 -> 15823 bytes res/drawable-hdpi/ic_dialog_wave_2_3.png | Bin 0 -> 16009 bytes res/drawable-hdpi/ic_dialog_wave_3_3.png | Bin 0 -> 16022 bytes res/drawable-hdpi/ic_dialog_wave_4_3.png | Bin 0 -> 15910 bytes .../ic_suggest_strip_scroll_left_arrow.png | Bin 0 -> 619 bytes .../ic_suggest_strip_scroll_right_arrow.png | Bin 0 -> 619 bytes res/drawable-hdpi/keyboard_background.9.png | Bin 0 -> 200 bytes .../keyboard_suggest_strip.9.png | Bin 0 -> 1577 bytes .../keyboard_suggest_strip_divider.png | Bin 0 -> 172 bytes res/drawable-hdpi/mic_slash.png | Bin 0 -> 3095 bytes res/drawable-hdpi/ok_cancel.png | Bin 0 -> 442 bytes res/drawable-hdpi/speak_now_level0.png | Bin 0 -> 1508 bytes res/drawable-hdpi/speak_now_level1.png | Bin 0 -> 1587 bytes res/drawable-hdpi/speak_now_level2.png | Bin 0 -> 1687 bytes res/drawable-hdpi/speak_now_level3.png | Bin 0 -> 1636 bytes res/drawable-hdpi/speak_now_level4.png | Bin 0 -> 1635 bytes res/drawable-hdpi/speak_now_level5.png | Bin 0 -> 1706 bytes res/drawable-hdpi/sym_keyboard_delete.png | Bin 0 -> 2282 bytes res/drawable-hdpi/sym_keyboard_done.png | Bin 0 -> 1593 bytes .../sym_keyboard_feedback_delete.png | Bin 0 -> 1278 bytes .../sym_keyboard_feedback_done.png | Bin 0 -> 1068 bytes .../sym_keyboard_feedback_numalt.png | Bin 0 -> 1336 bytes .../sym_keyboard_feedback_return.png | Bin 0 -> 838 bytes .../sym_keyboard_feedback_search.png | Bin 0 -> 1209 bytes .../sym_keyboard_feedback_shift.png | Bin 0 -> 885 bytes .../sym_keyboard_feedback_shift_locked.png | Bin 0 -> 700 bytes .../sym_keyboard_feedback_space.png | Bin 0 -> 287 bytes res/drawable-hdpi/sym_keyboard_num0.png | Bin 0 -> 1931 bytes res/drawable-hdpi/sym_keyboard_num1.png | Bin 0 -> 809 bytes res/drawable-hdpi/sym_keyboard_num2.png | Bin 0 -> 3214 bytes res/drawable-hdpi/sym_keyboard_num3.png | Bin 0 -> 2805 bytes res/drawable-hdpi/sym_keyboard_num4.png | Bin 0 -> 2647 bytes res/drawable-hdpi/sym_keyboard_num5.png | Bin 0 -> 2536 bytes res/drawable-hdpi/sym_keyboard_num6.png | Bin 0 -> 3573 bytes res/drawable-hdpi/sym_keyboard_num7.png | Bin 0 -> 3664 bytes res/drawable-hdpi/sym_keyboard_num8.png | Bin 0 -> 2904 bytes res/drawable-hdpi/sym_keyboard_num9.png | Bin 0 -> 3860 bytes res/drawable-hdpi/sym_keyboard_numalt.png | Bin 0 -> 2919 bytes res/drawable-hdpi/sym_keyboard_numpound.png | Bin 0 -> 1600 bytes res/drawable-hdpi/sym_keyboard_numstar.png | Bin 0 -> 1749 bytes res/drawable-hdpi/sym_keyboard_return.png | Bin 0 -> 1123 bytes res/drawable-hdpi/sym_keyboard_search.png | Bin 0 -> 1623 bytes res/drawable-hdpi/sym_keyboard_shift.png | Bin 0 -> 1495 bytes .../sym_keyboard_shift_locked.png | Bin 0 -> 1119 bytes res/drawable-hdpi/sym_keyboard_space.png | Bin 0 -> 371 bytes res/drawable-hdpi/voice_background.9.png | Bin 0 -> 2349 bytes res/drawable-hdpi/working.png | Bin 0 -> 8636 bytes .../btn_keyboard_key_normal.9.png | Bin 0 -> 737 bytes .../btn_keyboard_key_normal_off.9.png | Bin 0 -> 941 bytes .../btn_keyboard_key_normal_on.9.png | Bin 0 -> 1076 bytes .../btn_keyboard_key_pressed.9.png | Bin 0 -> 733 bytes .../btn_keyboard_key_pressed_off.9.png | Bin 0 -> 964 bytes .../btn_keyboard_key_pressed_on.9.png | Bin 0 -> 1055 bytes .../keyboard_suggest_strip_divider.png | Bin 0 -> 172 bytes .../btn_keyboard_key_normal.9.png | Bin 0 -> 818 bytes .../btn_keyboard_key_normal_off.9.png | Bin 0 -> 860 bytes .../btn_keyboard_key_normal_on.9.png | Bin 0 -> 926 bytes .../btn_keyboard_key_pressed.9.png | Bin 0 -> 740 bytes .../btn_keyboard_key_pressed_off.9.png | Bin 0 -> 836 bytes .../btn_keyboard_key_pressed_on.9.png | Bin 0 -> 886 bytes .../keyboard_suggest_strip_divider.png | Bin res/drawable-land/btn_keyboard_key.xml | 38 ++ .../btn_keyboard_key_normal.9.png | Bin 0 -> 809 bytes .../btn_keyboard_key_normal_off.9.png | Bin 0 -> 860 bytes .../btn_keyboard_key_normal_on.9.png | Bin 0 -> 926 bytes .../btn_keyboard_key_pressed.9.png | Bin 0 -> 736 bytes .../btn_keyboard_key_pressed_off.9.png | Bin 0 -> 836 bytes .../btn_keyboard_key_pressed_on.9.png | Bin 0 -> 886 bytes .../candidate_feedback_background.9.png | Bin .../dialog_bubble_step02.9.png | Bin .../dialog_bubble_step07.9.png | Bin .../highlight_pressed.png | Bin .../ic_dialog_keyboard.png | Bin .../ic_suggest_strip_scroll_left_arrow.png | Bin .../ic_suggest_strip_scroll_right_arrow.png | Bin res/drawable-mdpi/keyboard_background.9.png | Bin 0 -> 214 bytes .../keyboard_suggest_strip.9.png | Bin .../keyboard_suggest_strip_divider.png | Bin 0 -> 2846 bytes .../sym_keyboard_delete.png | Bin .../sym_keyboard_done.png | Bin .../sym_keyboard_feedback_delete.png | Bin .../sym_keyboard_feedback_done.png | Bin .../sym_keyboard_feedback_numalt.png | Bin .../sym_keyboard_feedback_return.png | Bin .../sym_keyboard_feedback_search.png | Bin .../sym_keyboard_feedback_shift.png | Bin .../sym_keyboard_feedback_shift_locked.png | Bin .../sym_keyboard_feedback_space.png | Bin .../sym_keyboard_num0.png | Bin .../sym_keyboard_num1.png | Bin .../sym_keyboard_num2.png | Bin .../sym_keyboard_num3.png | Bin .../sym_keyboard_num4.png | Bin .../sym_keyboard_num5.png | Bin .../sym_keyboard_num6.png | Bin .../sym_keyboard_num7.png | Bin .../sym_keyboard_num8.png | Bin .../sym_keyboard_num9.png | Bin .../sym_keyboard_numalt.png | Bin .../sym_keyboard_numpound.png | Bin .../sym_keyboard_numstar.png | Bin .../sym_keyboard_return.png | Bin .../sym_keyboard_search.png | Bin .../sym_keyboard_shift.png | Bin .../sym_keyboard_shift_locked.png | Bin .../sym_keyboard_space.png | Bin res/drawable/btn_keyboard_key.xml | 38 ++ .../keyboard_suggest_strip_divider.png | Bin 166 -> 0 bytes res/layout/candidates.xml | 2 +- res/layout/input.xml | 2 + res/values-cs/strings.xml | 6 + res/values-da/strings.xml | 18 +- res/values-de/strings.xml | 6 + res/values-el/strings.xml | 18 +- res/values-es-rUS/strings.xml | 18 +- res/values-es/strings.xml | 6 + res/values-fr/strings.xml | 6 + res/values-it/strings.xml | 6 + res/values-ja/strings.xml | 6 + res/values-ko/strings.xml | 18 +- res/values-land/dimens.xml | 2 + res/values-nb/strings.xml | 19 +- res/values-nl/strings.xml | 6 + res/values-pl/strings.xml | 6 + res/values-pt-rPT/strings.xml | 18 +- res/values-pt/strings.xml | 28 +- res/values-ru/strings.xml | 18 +- res/values-sv/strings.xml | 18 +- res/values-tr/donottranslate.xml | 23 + res/values-tr/strings.xml | 22 +- res/values-zh-rCN/strings.xml | 26 +- res/values-zh-rTW/strings.xml | 6 + res/values/bools.xml | 2 +- res/values/dimens.xml | 4 +- res/values/donottranslate.xml | 2 + res/values/strings.xml | 16 +- res/xml-de/kbd_qwerty.xml | 55 ++- res/xml-fr/kbd_qwerty.xml | 30 +- res/xml/kbd_phone.xml | 2 +- res/xml/kbd_phone_symbols.xml | 6 +- res/xml/kbd_qwerty.xml | 65 +-- res/xml/kbd_symbols.xml | 17 +- res/xml/kbd_symbols_shift.xml | 14 +- res/xml/popup_domains.xml | 12 +- res/xml/popup_punctuation.xml | 11 +- .../inputmethod/latin/BinaryDictionary.java | 29 +- .../inputmethod/latin/ContactsDictionary.java | 130 +++++ .../latin/ExpandableDictionary.java | 457 ++++++++++++++++++ .../inputmethod/latin/KeyboardSwitcher.java | 41 +- .../android/inputmethod/latin/LatinIME.java | 143 +++++- .../inputmethod/latin/LatinKeyboard.java | 15 +- .../android/inputmethod/latin/Suggest.java | 103 +++- .../inputmethod/latin/UserDictionary.java | 381 +-------------- .../inputmethod/latin/WordComposer.java | 18 +- 179 files changed, 1374 insertions(+), 665 deletions(-) create mode 100755 res/drawable-en-hdpi/sym_keyboard_delete.png create mode 100755 res/drawable-en-hdpi/sym_keyboard_feedback_delete.png rename res/{drawable-en => drawable-en-mdpi}/sym_keyboard_delete.png (100%) rename res/{drawable-en => drawable-en-mdpi}/sym_keyboard_feedback_delete.png (100%) create mode 100755 res/drawable-hdpi/btn_keyboard_key_normal.9.png create mode 100755 res/drawable-hdpi/btn_keyboard_key_normal_off.9.png create mode 100755 res/drawable-hdpi/btn_keyboard_key_normal_on.9.png create mode 100755 res/drawable-hdpi/btn_keyboard_key_pressed.9.png create mode 100755 res/drawable-hdpi/btn_keyboard_key_pressed_off.9.png create mode 100755 res/drawable-hdpi/btn_keyboard_key_pressed_on.9.png create mode 100755 res/drawable-hdpi/cancel.png create mode 100755 res/drawable-hdpi/candidate_feedback_background.9.png create mode 100755 res/drawable-hdpi/caution.png create mode 100755 res/drawable-hdpi/dialog_bubble_step02.9.png create mode 100755 res/drawable-hdpi/dialog_bubble_step07.9.png create mode 100755 res/drawable-hdpi/dialog_top_dark_bottom_medium.png create mode 100755 res/drawable-hdpi/highlight_pressed.png create mode 100755 res/drawable-hdpi/ic_dialog_alert_large.png create mode 100755 res/drawable-hdpi/ic_dialog_keyboard.png create mode 100755 res/drawable-hdpi/ic_dialog_voice_input.png create mode 100755 res/drawable-hdpi/ic_dialog_wave_0_0.png create mode 100755 res/drawable-hdpi/ic_dialog_wave_1_3.png create mode 100755 res/drawable-hdpi/ic_dialog_wave_2_3.png create mode 100755 res/drawable-hdpi/ic_dialog_wave_3_3.png create mode 100755 res/drawable-hdpi/ic_dialog_wave_4_3.png create mode 100755 res/drawable-hdpi/ic_suggest_strip_scroll_left_arrow.png create mode 100755 res/drawable-hdpi/ic_suggest_strip_scroll_right_arrow.png create mode 100755 res/drawable-hdpi/keyboard_background.9.png create mode 100755 res/drawable-hdpi/keyboard_suggest_strip.9.png create mode 100755 res/drawable-hdpi/keyboard_suggest_strip_divider.png create mode 100755 res/drawable-hdpi/mic_slash.png create mode 100755 res/drawable-hdpi/ok_cancel.png create mode 100755 res/drawable-hdpi/speak_now_level0.png create mode 100755 res/drawable-hdpi/speak_now_level1.png create mode 100755 res/drawable-hdpi/speak_now_level2.png create mode 100755 res/drawable-hdpi/speak_now_level3.png create mode 100755 res/drawable-hdpi/speak_now_level4.png create mode 100755 res/drawable-hdpi/speak_now_level5.png create mode 100755 res/drawable-hdpi/sym_keyboard_delete.png create mode 100755 res/drawable-hdpi/sym_keyboard_done.png create mode 100755 res/drawable-hdpi/sym_keyboard_feedback_delete.png create mode 100755 res/drawable-hdpi/sym_keyboard_feedback_done.png create mode 100755 res/drawable-hdpi/sym_keyboard_feedback_numalt.png create mode 100755 res/drawable-hdpi/sym_keyboard_feedback_return.png create mode 100755 res/drawable-hdpi/sym_keyboard_feedback_search.png create mode 100755 res/drawable-hdpi/sym_keyboard_feedback_shift.png create mode 100755 res/drawable-hdpi/sym_keyboard_feedback_shift_locked.png create mode 100755 res/drawable-hdpi/sym_keyboard_feedback_space.png create mode 100755 res/drawable-hdpi/sym_keyboard_num0.png create mode 100755 res/drawable-hdpi/sym_keyboard_num1.png create mode 100755 res/drawable-hdpi/sym_keyboard_num2.png create mode 100755 res/drawable-hdpi/sym_keyboard_num3.png create mode 100755 res/drawable-hdpi/sym_keyboard_num4.png create mode 100755 res/drawable-hdpi/sym_keyboard_num5.png create mode 100755 res/drawable-hdpi/sym_keyboard_num6.png create mode 100755 res/drawable-hdpi/sym_keyboard_num7.png create mode 100755 res/drawable-hdpi/sym_keyboard_num8.png create mode 100755 res/drawable-hdpi/sym_keyboard_num9.png create mode 100755 res/drawable-hdpi/sym_keyboard_numalt.png create mode 100755 res/drawable-hdpi/sym_keyboard_numpound.png create mode 100755 res/drawable-hdpi/sym_keyboard_numstar.png create mode 100755 res/drawable-hdpi/sym_keyboard_return.png create mode 100755 res/drawable-hdpi/sym_keyboard_search.png create mode 100755 res/drawable-hdpi/sym_keyboard_shift.png create mode 100755 res/drawable-hdpi/sym_keyboard_shift_locked.png create mode 100755 res/drawable-hdpi/sym_keyboard_space.png create mode 100755 res/drawable-hdpi/voice_background.9.png create mode 100755 res/drawable-hdpi/working.png create mode 100755 res/drawable-land-hdpi/btn_keyboard_key_normal.9.png create mode 100755 res/drawable-land-hdpi/btn_keyboard_key_normal_off.9.png create mode 100755 res/drawable-land-hdpi/btn_keyboard_key_normal_on.9.png create mode 100755 res/drawable-land-hdpi/btn_keyboard_key_pressed.9.png create mode 100755 res/drawable-land-hdpi/btn_keyboard_key_pressed_off.9.png create mode 100755 res/drawable-land-hdpi/btn_keyboard_key_pressed_on.9.png create mode 100755 res/drawable-land-hdpi/keyboard_suggest_strip_divider.png create mode 100644 res/drawable-land-mdpi/btn_keyboard_key_normal.9.png create mode 100644 res/drawable-land-mdpi/btn_keyboard_key_normal_off.9.png create mode 100644 res/drawable-land-mdpi/btn_keyboard_key_normal_on.9.png create mode 100755 res/drawable-land-mdpi/btn_keyboard_key_pressed.9.png create mode 100644 res/drawable-land-mdpi/btn_keyboard_key_pressed_off.9.png create mode 100644 res/drawable-land-mdpi/btn_keyboard_key_pressed_on.9.png rename res/{drawable-land => drawable-land-mdpi}/keyboard_suggest_strip_divider.png (100%) create mode 100644 res/drawable-land/btn_keyboard_key.xml create mode 100644 res/drawable-mdpi/btn_keyboard_key_normal.9.png create mode 100644 res/drawable-mdpi/btn_keyboard_key_normal_off.9.png create mode 100644 res/drawable-mdpi/btn_keyboard_key_normal_on.9.png create mode 100755 res/drawable-mdpi/btn_keyboard_key_pressed.9.png create mode 100644 res/drawable-mdpi/btn_keyboard_key_pressed_off.9.png create mode 100644 res/drawable-mdpi/btn_keyboard_key_pressed_on.9.png rename res/{drawable => drawable-mdpi}/candidate_feedback_background.9.png (100%) rename res/{drawable => drawable-mdpi}/dialog_bubble_step02.9.png (100%) rename res/{drawable => drawable-mdpi}/dialog_bubble_step07.9.png (100%) rename res/{drawable => drawable-mdpi}/highlight_pressed.png (100%) rename res/{drawable => drawable-mdpi}/ic_dialog_keyboard.png (100%) rename res/{drawable => drawable-mdpi}/ic_suggest_strip_scroll_left_arrow.png (100%) rename res/{drawable => drawable-mdpi}/ic_suggest_strip_scroll_right_arrow.png (100%) create mode 100644 res/drawable-mdpi/keyboard_background.9.png rename res/{drawable => drawable-mdpi}/keyboard_suggest_strip.9.png (100%) create mode 100644 res/drawable-mdpi/keyboard_suggest_strip_divider.png rename res/{drawable => drawable-mdpi}/sym_keyboard_delete.png (100%) rename res/{drawable => drawable-mdpi}/sym_keyboard_done.png (100%) rename res/{drawable => drawable-mdpi}/sym_keyboard_feedback_delete.png (100%) rename res/{drawable => drawable-mdpi}/sym_keyboard_feedback_done.png (100%) rename res/{drawable => drawable-mdpi}/sym_keyboard_feedback_numalt.png (100%) rename res/{drawable => drawable-mdpi}/sym_keyboard_feedback_return.png (100%) rename res/{drawable => drawable-mdpi}/sym_keyboard_feedback_search.png (100%) rename res/{drawable => drawable-mdpi}/sym_keyboard_feedback_shift.png (100%) rename res/{drawable => drawable-mdpi}/sym_keyboard_feedback_shift_locked.png (100%) rename res/{drawable => drawable-mdpi}/sym_keyboard_feedback_space.png (100%) rename res/{drawable => drawable-mdpi}/sym_keyboard_num0.png (100%) rename res/{drawable => drawable-mdpi}/sym_keyboard_num1.png (100%) rename res/{drawable => drawable-mdpi}/sym_keyboard_num2.png (100%) rename res/{drawable => drawable-mdpi}/sym_keyboard_num3.png (100%) rename res/{drawable => drawable-mdpi}/sym_keyboard_num4.png (100%) rename res/{drawable => drawable-mdpi}/sym_keyboard_num5.png (100%) rename res/{drawable => drawable-mdpi}/sym_keyboard_num6.png (100%) rename res/{drawable => drawable-mdpi}/sym_keyboard_num7.png (100%) rename res/{drawable => drawable-mdpi}/sym_keyboard_num8.png (100%) rename res/{drawable => drawable-mdpi}/sym_keyboard_num9.png (100%) rename res/{drawable => drawable-mdpi}/sym_keyboard_numalt.png (100%) rename res/{drawable => drawable-mdpi}/sym_keyboard_numpound.png (100%) rename res/{drawable => drawable-mdpi}/sym_keyboard_numstar.png (100%) rename res/{drawable => drawable-mdpi}/sym_keyboard_return.png (100%) rename res/{drawable => drawable-mdpi}/sym_keyboard_search.png (100%) rename res/{drawable => drawable-mdpi}/sym_keyboard_shift.png (100%) rename res/{drawable => drawable-mdpi}/sym_keyboard_shift_locked.png (100%) rename res/{drawable => drawable-mdpi}/sym_keyboard_space.png (100%) create mode 100644 res/drawable/btn_keyboard_key.xml delete mode 100644 res/drawable/keyboard_suggest_strip_divider.png create mode 100644 res/values-tr/donottranslate.xml create mode 100644 src/com/android/inputmethod/latin/ContactsDictionary.java create mode 100644 src/com/android/inputmethod/latin/ExpandableDictionary.java diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 5222ba5f46..697dce28a6 100755 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -4,9 +4,11 @@ <uses-permission android:name="android.permission.VIBRATE"/> <uses-permission android:name="android.permission.READ_USER_DICTIONARY" /> <uses-permission android:name="android.permission.WRITE_USER_DICTIONARY" /> + <uses-permission android:name="android.permission.BACKUP_DATA" /> <application android:label="@string/english_ime_name" - android:backupAgent="LatinIMEBackupAgent"> + android:backupAgent="LatinIMEBackupAgent" + android:killAfterRestore="false"> <service android:name="LatinIME" android:label="@string/english_ime_name" diff --git a/dictionary/jni/com_android_inputmethod_latin_BinaryDictionary.cpp b/dictionary/jni/com_android_inputmethod_latin_BinaryDictionary.cpp index a1f410db28..c9e158c4c4 100644 --- a/dictionary/jni/com_android_inputmethod_latin_BinaryDictionary.cpp +++ b/dictionary/jni/com_android_inputmethod_latin_BinaryDictionary.cpp @@ -42,7 +42,7 @@ static jmethodID sAddWordMethod; // // helper function to throw an exception // -static void throwException(JNIEnv *env, const char* ex, const char* fmt, int data) +static void throwException(JNIEnv *env, const char* ex, const char* fmt, int data) { if (jclass cls = env->FindClass(ex)) { char msg[1000]; @@ -66,7 +66,7 @@ static jint latinime_BinaryDictionary_open Asset *dictAsset = am->openNonAsset(resourcePath, Asset::ACCESS_BUFFER); if (dictAsset == NULL) { - LOGE("DICT: Couldn't get asset %s\n", resourcePath); + LOGE("DICT: Couldn't get asset %s\n", resourcePath); env->ReleaseStringUTFChars(resourceString, resourcePath); return 0; } @@ -79,15 +79,15 @@ static jint latinime_BinaryDictionary_open } Dictionary *dictionary = new Dictionary(dict, typedLetterMultiplier, fullWordMultiplier); dictionary->setAsset(dictAsset); - + env->ReleaseStringUTFChars(resourceString, resourcePath); - return (jint) dictionary; + return (jint) dictionary; } static int latinime_BinaryDictionary_getSuggestions( - JNIEnv *env, jobject object, jint dict, jintArray inputArray, jint arraySize, - jcharArray outputArray, jintArray frequencyArray, jint maxWordLength, jint maxWords, - jint maxAlternatives) + JNIEnv *env, jobject object, jint dict, jintArray inputArray, jint arraySize, + jcharArray outputArray, jintArray frequencyArray, jint maxWordLength, jint maxWords, + jint maxAlternatives, jint skipPos) { Dictionary *dictionary = (Dictionary*) dict; if (dictionary == NULL) @@ -96,9 +96,9 @@ static int latinime_BinaryDictionary_getSuggestions( int *frequencies = env->GetIntArrayElements(frequencyArray, NULL); int *inputCodes = env->GetIntArrayElements(inputArray, NULL); jchar *outputChars = env->GetCharArrayElements(outputArray, NULL); - + int count = dictionary->getSuggestions(inputCodes, arraySize, (unsigned short*) outputChars, frequencies, - maxWordLength, maxWords, maxAlternatives); + maxWordLength, maxWords, maxAlternatives, skipPos); env->ReleaseIntArrayElements(frequencyArray, frequencies, 0); env->ReleaseIntArrayElements(inputArray, inputCodes, JNI_ABORT); @@ -112,16 +112,16 @@ static jboolean latinime_BinaryDictionary_isValidWord { Dictionary *dictionary = (Dictionary*) dict; if (dictionary == NULL) return (jboolean) false; - + jchar *word = env->GetCharArrayElements(wordArray, NULL); jboolean result = dictionary->isValidWord((unsigned short*) word, wordLength); env->ReleaseCharArrayElements(wordArray, word, JNI_ABORT); - + return result; } static void latinime_BinaryDictionary_close - (JNIEnv *env, jobject object, jint dict) + (JNIEnv *env, jobject object, jint dict) { Dictionary *dictionary = (Dictionary*) dict; ((Asset*) dictionary->getAsset())->close(); @@ -131,10 +131,10 @@ static void latinime_BinaryDictionary_close // ---------------------------------------------------------------------------- static JNINativeMethod gMethods[] = { - {"openNative", "(Landroid/content/res/AssetManager;Ljava/lang/String;II)I", + {"openNative", "(Landroid/content/res/AssetManager;Ljava/lang/String;II)I", (void*)latinime_BinaryDictionary_open}, {"closeNative", "(I)V", (void*)latinime_BinaryDictionary_close}, - {"getSuggestionsNative", "(I[II[C[IIII)I", (void*)latinime_BinaryDictionary_getSuggestions}, + {"getSuggestionsNative", "(I[II[C[IIIII)I", (void*)latinime_BinaryDictionary_getSuggestions}, {"isValidWordNative", "(I[CI)Z", (void*)latinime_BinaryDictionary_isValidWord} }; @@ -153,7 +153,7 @@ static int registerNativeMethods(JNIEnv* env, const char* className, fprintf(stderr, "RegisterNatives failed for '%s'\n", className); return JNI_FALSE; } - + return JNI_TRUE; } @@ -161,21 +161,21 @@ static int registerNatives(JNIEnv *env) { const char* const kClassPathName = "com/android/inputmethod/latin/BinaryDictionary"; jclass clazz; - + clazz = env->FindClass("java/io/FileDescriptor"); if (clazz == NULL) { LOGE("Can't find %s", "java/io/FileDescriptor"); return -1; } sDescriptorField = env->GetFieldID(clazz, "descriptor", "I"); - + clazz = env->FindClass("android/content/res/AssetManager"); if (clazz == NULL) { LOGE("Can't find %s", "java/io/FileDescriptor"); return -1; } sAssetManagerNativeField = env->GetFieldID(clazz, "mObject", "I"); - + return registerNativeMethods(env, kClassPathName, gMethods, sizeof(gMethods) / sizeof(gMethods[0])); } diff --git a/dictionary/src/dictionary.cpp b/dictionary/src/dictionary.cpp index b37f4c9265..cc711f4198 100644 --- a/dictionary/src/dictionary.cpp +++ b/dictionary/src/dictionary.cpp @@ -49,11 +49,8 @@ Dictionary::~Dictionary() } int Dictionary::getSuggestions(int *codes, int codesSize, unsigned short *outWords, int *frequencies, - int maxWordLength, int maxWords, int maxAlternatives) + int maxWordLength, int maxWords, int maxAlternatives, int skipPos) { - memset(frequencies, 0, maxWords * sizeof(*frequencies)); - memset(outWords, 0, maxWords * maxWordLength * sizeof(*outWords)); - mFrequencies = frequencies; mOutputChars = outWords; mInputCodes = codes; @@ -62,8 +59,10 @@ int Dictionary::getSuggestions(int *codes, int codesSize, unsigned short *outWor mMaxWordLength = maxWordLength; mMaxWords = maxWords; mWords = 0; + mSkipPos = skipPos; + mMaxEditDistance = mInputLength < 5 ? 2 : mInputLength / 2; - getWordsRec(0, 0, mInputLength * 3, false, 1, 0); + getWordsRec(0, 0, mInputLength * 3, false, 1, 0, 0); if (DEBUG_DICT) LOGI("Returning %d words", mWords); return mWords; @@ -110,7 +109,11 @@ bool Dictionary::addWord(unsigned short *word, int length, int frequency) { word[length] = 0; - if (DEBUG_DICT) LOGI("Found word = %s, freq = %d : \n", word, frequency); + if (DEBUG_DICT) { + char s[length + 1]; + for (int i = 0; i <= length; i++) s[i] = word[i]; + LOGI("Found word = %s, freq = %d : \n", s, frequency); + } // Find the right insertion point int insertAt = 0; @@ -144,16 +147,14 @@ Dictionary::addWord(unsigned short *word, int length, int frequency) } unsigned short -Dictionary::toLowerCase(unsigned short c, const int depth) { +Dictionary::toLowerCase(unsigned short c) { if (c < sizeof(BASE_CHARS) / sizeof(BASE_CHARS[0])) { c = BASE_CHARS[c]; } - if (depth == 0) { - if (c >='A' && c <= 'Z') { - c |= 32; - } else if (c > 127) { - c = u_tolower(c); - } + if (c >='A' && c <= 'Z') { + c |= 32; + } else if (c > 127) { + c = u_tolower(c); } return c; } @@ -178,12 +179,16 @@ Dictionary::sameAsTyped(unsigned short *word, int length) static char QUOTE = '\''; void -Dictionary::getWordsRec(int pos, int depth, int maxDepth, bool completion, int snr, int inputIndex) +Dictionary::getWordsRec(int pos, int depth, int maxDepth, bool completion, int snr, int inputIndex, + int diffs) { // Optimization: Prune out words that are too long compared to how much was typed. if (depth > maxDepth) { return; } + if (diffs > mMaxEditDistance) { + return; + } int count = getCount(&pos); int *currentChars = NULL; if (mInputLength <= inputIndex) { @@ -194,7 +199,7 @@ Dictionary::getWordsRec(int pos, int depth, int maxDepth, bool completion, int s for (int i = 0; i < count; i++) { unsigned short c = getChar(&pos); - unsigned short lowerC = toLowerCase(c, depth); + unsigned short lowerC = toLowerCase(c); bool terminal = getTerminal(&pos); int childrenAddress = getAddress(&pos); int freq = 1; @@ -207,38 +212,41 @@ Dictionary::getWordsRec(int pos, int depth, int maxDepth, bool completion, int s } if (childrenAddress != 0) { getWordsRec(childrenAddress, depth + 1, maxDepth, - completion, snr, inputIndex); + completion, snr, inputIndex, diffs); } - } else if (c == QUOTE && currentChars[0] != QUOTE) { - // Skip the ' and continue deeper - mWord[depth] = QUOTE; + } else if (c == QUOTE && currentChars[0] != QUOTE || mSkipPos == depth) { + // Skip the ' or other letter and continue deeper + mWord[depth] = c; if (childrenAddress != 0) { - getWordsRec(childrenAddress, depth + 1, maxDepth, false, snr, inputIndex); + getWordsRec(childrenAddress, depth + 1, maxDepth, false, snr, inputIndex, diffs); } } else { int j = 0; while (currentChars[j] > 0) { - int addedWeight = j == 0 ? mTypedLetterMultiplier : 1; if (currentChars[j] == lowerC || currentChars[j] == c) { + int addedWeight = j == 0 ? mTypedLetterMultiplier : 1; mWord[depth] = c; if (mInputLength == inputIndex + 1) { if (terminal) { if (//INCLUDE_TYPED_WORD_IF_VALID || !sameAsTyped(mWord, depth + 1)) { - addWord(mWord, depth + 1, - (freq * snr * addedWeight * mFullWordMultiplier)); + int finalFreq = freq * snr * addedWeight; + if (mSkipPos < 0) finalFreq *= mFullWordMultiplier; + addWord(mWord, depth + 1, finalFreq); } } if (childrenAddress != 0) { getWordsRec(childrenAddress, depth + 1, - maxDepth, true, snr * addedWeight, inputIndex + 1); + maxDepth, true, snr * addedWeight, inputIndex + 1, + diffs + (j > 0)); } } else if (childrenAddress != 0) { getWordsRec(childrenAddress, depth + 1, maxDepth, - false, snr * addedWeight, inputIndex + 1); + false, snr * addedWeight, inputIndex + 1, diffs + (j > 0)); } } j++; + if (mSkipPos >= 0) break; } } } diff --git a/dictionary/src/dictionary.h b/dictionary/src/dictionary.h index b13e97795b..8f195ca9a5 100644 --- a/dictionary/src/dictionary.h +++ b/dictionary/src/dictionary.h @@ -32,7 +32,7 @@ class Dictionary { public: Dictionary(void *dict, int typedLetterMultipler, int fullWordMultiplier); int getSuggestions(int *codes, int codesSize, unsigned short *outWords, int *frequencies, - int maxWordLength, int maxWords, int maxAlternatives); + int maxWordLength, int maxWords, int maxAlternatives, int skipPos); bool isValidWord(unsigned short *word, int length); void setAsset(void *asset) { mAsset = asset; } void *getAsset() { return mAsset; } @@ -49,9 +49,9 @@ private: bool sameAsTyped(unsigned short *word, int length); bool addWord(unsigned short *word, int length, int frequency); - unsigned short toLowerCase(unsigned short c, int depth); + unsigned short toLowerCase(unsigned short c); void getWordsRec(int pos, int depth, int maxDepth, bool completion, int frequency, - int inputIndex); + int inputIndex, int diffs); bool isValidWordRec(int pos, unsigned short *word, int offset, int length); unsigned char *mDict; @@ -66,6 +66,8 @@ private: int mInputLength; int mMaxAlternatives; unsigned short mWord[128]; + int mSkipPos; + int mMaxEditDistance; int mFullWordMultiplier; int mTypedLetterMultiplier; diff --git a/res/drawable-en-hdpi/sym_keyboard_delete.png b/res/drawable-en-hdpi/sym_keyboard_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..569369e79927ae1eb3ca3728fc567c1f5586070b GIT binary patch literal 2315 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 literal 0 HcmV?d00001 diff --git a/res/drawable-en-hdpi/sym_keyboard_feedback_delete.png b/res/drawable-en-hdpi/sym_keyboard_feedback_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..ca7637552b5e256f445fc8dd497811ab7518f489 GIT binary patch literal 1278 zcmV<a1OfYrP)<h;3K|Lk000e1NJLTq001@s002Y?1^@s6%CE*30000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU$ph-kQRCwC#np;RzK^Vt9uB&Uc-LQ*h zUb>jt4JzrO-h`rupqGM#pvQWv=%L$V4;A%L5kVIUx*$nNWmZT;U=UaYNjJKp4;4j4 zsafi7-)H}UVVZOH%-OSfvNP~!*|Rfe<~Q@r_sx82C6mdl;aIY>hG_}GLa-1l1Pj6b z3$PrM%9dsE$4Jry(g-|Gkorlzq;I5dd{>LwPA=T$BR<u-UHGlXZd}?!20wHwlrnCn z=pE@1X*a0?1G1E^bnS!&NToJ)8Mee}!gXWyVv4#MpG2xA?Ic|$Eg;2Qw3D}lWm7jh zMca(*u^*(3q&=jEcs7f4j8yDk>fCMxX*N_&`rzv(^I(eAl9_xb%_WV+=Y8onHp|gc zS8BUThhdr2_01I3(ntD2dPO=aJzuGS1=lO4C_J-ma0C&>iKuSNf`bqf+XGYV4kB0r zd#4Xz>^w%<)XgJZQ=XOk36_Zf9f+H&pDUJ)l@Rajbyxvj*;S+t#S{YxmXG)q#rF>E zyQIykz9Bsg@``0+FO?#uiPA*+`mdTId$;MN<)k{&B0PUhI_Y4FCSK8-2Te0T>-2(D zi-W9P(ABBTV_of7y{wq-l--FSeT8%u`>V%AJCi=lOvxm#=x}Z6gBR@bcx_S5%cQRM z+TsN)a7D)u-k@!7ssSz5a9b%c`8ggYB9|0LP>uz_oD*;;pW#pvURIaA)lyPD;#D#r zdP`cz6RyNuBdCr50m<SOD>VVL5KorisFVz_s@$GDEbJpb;+$5FGJMEwB;B(K$bZA5 zFC*=foS<uGD6S$;l$kjU$b1*h!;+Lv9bF8bBVCPH)ox6YS86_~U4i0+%@mg&HG&LQ z1&&BjO`TliB`Z)jVgOfZ3Kr9((^w~vFO0gJ(E`#|oF&iU&K6am_}X(FXU#2`fJi35 z_<CPOx~o8)B29G(B?i5k^iz6Ay#yzqTBP5(?gp5+uV4%{lhmp}@qkJUpv1fC6fp6w z3Jj_x>(3niCcnYN4Bk>YYk;GO8hR~ZirY1Cmq@pjX9;+?$$pw5Lro(!E1flZgp!@d zMA8looDQnc@R;Wa#+?^o7Uj;a0ydgvyb*A_;6!v#`#nIV1ml6PRXY2GyhYr{)Laee zu?DOizvX*)Z^{)bM6N>a@D3bFUYbzC%x^fD;ss48@MVuh@!|%h!<%p@xoJW*Ys{}- z<1J0$TzN%)VL8r#a)(WLZaSOdeLAQkS-<~&)}LlraUI9(%;us8?>L5ZMgw&KfxZad zvR`u!jr$EI;AUvz*?Gg+<Ujfy)Ib%%`^lj|hTEGdF!@;3YI9c1acPRhFuMW7sUoGV zfZK*paNOYip1=eg-^1DzxI>x&I>8md0gbn5!*Jtp%qqx)^RPSR&m%ps*(WiVcPPun z@4nv0Qq4MFC7zSkV~<s%^UXNZajyOmOl>G`(6#BtSw0mkBs~jw&ZE*xmWmTPi%Bm7 z3dJe75>qfa1y_SW+8H3I_oOv)UePqgEoXw`u<xPH1dD$p8_Wa~)L<sq3jgmu1Pj4J oun;T+3&BFL5G(|<DZd0500zRZM#E{TS^xk507*qoM6N<$f<q-#&j0`b literal 0 HcmV?d00001 diff --git a/res/drawable-en/sym_keyboard_delete.png b/res/drawable-en-mdpi/sym_keyboard_delete.png similarity index 100% rename from res/drawable-en/sym_keyboard_delete.png rename to res/drawable-en-mdpi/sym_keyboard_delete.png diff --git a/res/drawable-en/sym_keyboard_feedback_delete.png b/res/drawable-en-mdpi/sym_keyboard_feedback_delete.png similarity index 100% rename from res/drawable-en/sym_keyboard_feedback_delete.png rename to res/drawable-en-mdpi/sym_keyboard_feedback_delete.png diff --git a/res/drawable-hdpi/btn_keyboard_key_normal.9.png b/res/drawable-hdpi/btn_keyboard_key_normal.9.png new file mode 100755 index 0000000000000000000000000000000000000000..90b51fa637037082d109eeba3edc5098939bb609 GIT binary patch literal 696 zcmV;p0!RIcP)<h;3K|Lk000e1NJLTq001%o002!01^@s6<V!cD0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!T1iAfRCwC#n>o(HFc5{uAz}%Lf{uco zQ&3USazV~Q!xi8JbVwi;vF2wi{40bkrU<;48OfrEBi_f%vlDEqFbt{aP)gmuCRBxf zM-T+m>-CDKDKO^qx$?-7@Lhnomo7Pz5qC>#x7*QnyQS0V1Sz;$tx~JiqGq$14zk&7 zsNHVUXf&d3w@W-Ue`0vH^#Ql#a!J$al-BFD)|v>ynHZ19RIk@H)a`bI0`WXgiysb$ zG?`4&L9W*;H5v`NTrRpHf^e`#)|TlJ?htPfqtXK+MN{|!!Wl4~IYTHJF*?$!BoQRu zP$El{fWU(!!JvUy&FscZ#_(tpqS5v{8F9|+@$nm>w6d~Nn$pVClWTUAM--El(wqJ5 zjG&r5Pm}u~$R7F4jFcWEItikIWKGbenn$AAWF8T-f7|R%l$Onn-+ZZ((keq~xw}5% z-0+M1h+^##^ieC(Bm4b6bipICsw*G@A|L`HAOgZ5K@cbxK%9B{6^{srfV^pTvoIfR z2$84Bx497s<n4^u-27>fEKP2g7CMMkY4P4cvk}tlBZL@UA9|vjG=C=}(T0|hG+p8m zc#oKlX*YZmB&zM@I-gF+n@13vwb?6`%F~RBkP+5oZFcVL`@Vh)V+f?Z@kX2Zk)ws= z$2%Vm2Yu{<A$V^*A_!}YXXOcmkMhlCGa3vA`s57av5WKhtTnRMr|T@V-|uU+oPpJ9 zMaSb2YMX2vs8*{{r_=c_vBhHXT3Xxz>9|D_h%tR?X_-z5W`Yl0TJaNPCeW7UlKxD* eYt)~A0t^6T+)o+WtCTAM0000<MNUMnLSTZ)oJAo3 literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/btn_keyboard_key_normal_off.9.png b/res/drawable-hdpi/btn_keyboard_key_normal_off.9.png new file mode 100755 index 0000000000000000000000000000000000000000..6ddd516e790627b773405917a89b9da4feee36c9 GIT binary patch literal 941 zcmV;e15*5nP)<h;3K|Lk000e1NJLTq001%o002Y?1^@s6!$f9n0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU#Pf0{URCwC#Te*(vKoD$mV-ATUAs|BH zGl+;t`9Z#ggkOLhfdmL~nj7BMXa^auZ47JUeqN6>TCp0NDyq7B%rwgFb|bHcq9|W) zb5lHh4^>sETCIA|#>3I?_mv0*WW<6%;>)@e7)63>t?hP8o6Uxf$0JL?i9~|3*(_x; z8EYb|)r#`@JhfUas#Ge3)clF`>@*HA$Kx?|yIoo?mjbIP5h&4aw<(oM2~yYVl@*al zBqG2!n@#F;I@UxkmkXuSX*!?JVsa#c0gS+A8zWd?oGh}^Hwg<&w;x2HfLsiPxF{lV zSh>WMh;iE89Fl*Mj1{JriQx5my{7$sFBFSLqr$UDiC&X(jR<6&&1Rz3fB<}pdV_4I zX&RNw<-3=CCt^lMl9)^;bUK|xde(pXSObNo)2XLq?5u8@we$fmFGO7d*km&K5PbI= z#bQD!*vwdU-7JU_+gpm@1|R`DS;YbV4>G&mj_{1*yCP;W0;|YR;aNJyI*{_B{=60J z#uN)RQ0?uA0DL?izgxg<YuTyd$Xb|4ugFYR_QD#ZW9)yt*xEd+Yfpn6^KdwbY=mG& z3>e8^J=6k;TrNk8#lo}wmQ}DvoGOA^QLonpP!K~J26+6%>q4PGwOUQAGrQi+`F5~l z04$0jz~Wf|)g8qU=@_;HLDUhD^ST)Ry0U}Ja5xloqEsr0bSo7ZjYc2ap1efFZW|9Z zF#UKYac$G+=QiHe-S2-xL|?tR5wY7@II1IDh92A7+jvga`c)kXgWd074}`UxT<8}O ztIQQzi<`BAdp;7l^vijR;y6aQXD!nh(KPKAgcymas;Y#+&M4T!bM}x(NaV#}m*)`r z$zeRh6mxPRCn7H^;^g8_6S2b-Y-@2R;>cP!W|Ms%ULG~SoL;~2=zCKBjw1TWO%W?x zVT`bk5xLOn0zZl9vHhJoA|=ETw7#NpP(*elIkFZO<B(H!JaB3Sl-T5ltQRb1T#SYQ z*~WxU29894(WuG;5p?zRdOd118lq8{W0xt8!-3J*f%NdR3n(z3&&9bp7XoI4(4<f- z7Vj1t3<f`~g$10tOU;PLptrP^Tx1eV?1y64?Z)j}NV6{!(RzjPPk;dcs>4Q{NHt&( P00000NkvXXu0mjf0<f<Z literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/btn_keyboard_key_normal_on.9.png b/res/drawable-hdpi/btn_keyboard_key_normal_on.9.png new file mode 100755 index 0000000000000000000000000000000000000000..65fdeb353f8d1de9d732405dceb11a9cc2f4e27b GIT binary patch literal 1076 zcmV-41k3x0P)<h;3K|Lk000e1NJLTq001%o002Y?1^@s6!$f9n0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU#)=5M`RCwC#THkNdP#8TerG=IuU^cUC zsEH3g&BV7o?ZqV~d-V_4zqbFvhb3m2CNt4Q9~Q%WGEQNe3u91z)7E|scPY?fAr!71 z-*VF|+zaP$zVqE%`U#e0A?y$Y!TuOa2=y~mRYg9Z51&nlQ79Ay5fKR~3MA~*MPw9- zZfe!*b?CZ|PN%~qU|E)tN~NG_nm>_hwTg5)jlI1+tgo+wO7lF*b5I}9D3wY$K0e0n z?X82=v-}o|MeOhIBaukJFbtTc$rTY%6cLNX&}y}CaBzT)jSc6uv$Hc{KoJ6;OeWFm z^_;;Y5emXc*v5K<CJYZQs#2eX4<>7b2r0lOlR~^G!f^Oyi6@ca!Ap$8G!>C{yX_c` z6q6(gilR8<zac`vE0qeY<Rwy@6)33=+BF5$iws2l5i*&~T`n)2h!+_Os$xW9ZR;nV zzq*8?3U(<Za!s`AHz*u7as4fiY&PqZ$S{cn+S!?znBm#NTCIjB+rO~&x{hQj4KYR= z6ur5<CTk)6M#opVgsW3&V56G#hRCo@r3k5^t<~^i*Fq*|f8)~VJyJrp@N%z%qw_j? zT{RR{CQ`)9Bjk<EXBM)V9Mq)bC^51wZYz`NV)e0!Ki`c|yfT&9-T#xM=?6)uiap}~ zw=kB{g_dsPx}O5GPOWjO1WGM>6Qh+tTu4KS$v)qfU6$=XqglPn<$0+Q$n4Bm<=+y_ zriS>6<`{iAjGjHWrQ@d52yG)BXLd1&A~deg1)P59px4kKnOVp}4vP5DxyFnPI=Y50 z@7mDIg6H~Kj;YPg;?rRTW=F>M?o%XH*;Yn`X_%<%Exdnwfzyw*xon0rIih?%y2Ot{ z6|3tj&{h=aw=G;<=qO({=XN}qh{(8O{8h2;j78j&%=FN>=#%gLBI3S@;f;v<I`uxn zL%6X`eT?V%?r>@L|H|x<NUb0X7e&OcaxGJfx73R6^O4AvU!IRBfjz=|)$;U6qtURU z;1N+(Rbgp%j?BJ%&b}nFBr>7d*>ec@;358nNeZ%%Cn6Io5@hkbiHyS(?bPC(NTAfB zM`o<=Bg{w56PMRM9(Pa5{ZYg{cvHj=*U}^0dxTB&Td+tXZfy5wA7K)*77Sj9Fie5X zPLrtzi!}=H)C$P3dGxsqHfPf0X0z#ZnL6DL{Z3Qfh!DnMRR)Mq>+H$N33hgNoJL_D zyG*;?u7i=V4!rK}`y~a+<+9W2$5SukFd=F?%;j=-DK^sgON?m(Pu-<nM40J)Q;SUs utCcTQg2TDy4&Hu+^!hQ;#^_xC3NQdwh&V8f<kfNj0000<MNUMnLSTa4uL`pO literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/btn_keyboard_key_pressed.9.png b/res/drawable-hdpi/btn_keyboard_key_pressed.9.png new file mode 100755 index 0000000000000000000000000000000000000000..efaad9612d2f3578707c27318e384bd11d0e3f7e GIT binary patch literal 696 zcmV;p0!RIcP)<h;3K|Lk000e1NJLTq001%o002!01^@s6<V!cD0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!T1iAfRCwC#o6qjSKoG}gt3gUgTyd0m z9Z%rmtsK3BXCZD5juL_(Sf=@nv}@V^eo23(o0(+OgAL!0`Lo-0R%xvvZ&OM=enzWY ze<O+_=ytpL)8uHg*-QoCiG@BuJVF<|@rb{nwcqbyx7)$_d}b-QTrNYsUWZz(_8w%r z-9o3+f#Glny<QJ)w;TLNdCr^%K>&-z0w$9QESF1YG#d8uyIQSaJRU={*@Wx$$`Yhh zD#2#6fzfCL?RGo<Y(Af>lt)lJLR>DF6v($>5Q0EZ3u;7dA9DmJAOsCg9zk!!6)JeC zQQ8WU9GpOCnBK5@ghDAfxY#F6;t}>9!Aaabk{QHB|4ol1uZ7ML(j_2;1F=;uZdEJO zHr~t7qEgJ_4)C$RN@~jlVy-2e?A@R1ToAc|ybE_{j&KC|RgNS*!|AclpVyJXf^g0e z0?C{sT&ouCd?mCB8CqQL5M7%54K1&7#Ea0PiJZ%?B)jAYha4#!$l-9%ww0aZHlA*G zZ6NYiS3m?rKm<fU1O!+1D2lK}PZxcQ;%}Rictnz2Km<fU1VlgtL_h?@xoJ$c+|l4* zE=~S~7M@OUd4%I|h88u_V>>xsxr7$#B5jtI@>dX?h$9Tc=NE8k@<&ai&zusP)Od!3 z4w=x?Z!R98KNvNdUP*!AS(52=3WLD_s@3ZAv;r58Ajt7}j5VUx)EpGq@AqS+D15zM z!|8Nl)s$&MRVo!|wOY>*dpQV$?!pP2&W+eWYzZIQCRvh+y~Uwro**MLU(0>lejX;8 e8sqC-fB^sjcZTw~DV(MN0000<MNUMnLSTYcL^eeL literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/btn_keyboard_key_pressed_off.9.png b/res/drawable-hdpi/btn_keyboard_key_pressed_off.9.png new file mode 100755 index 0000000000000000000000000000000000000000..43927172310d4d3b24260b4e1ec2280596d4d33b GIT binary patch literal 964 zcmV;#13UbQP)<h;3K|Lk000e1NJLTq001%o002Y?1^@s6!$f9n0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU#W=TXrRCwC#TFY+gFc6)DP^y$yd8{ZK zP&X|27ruZ^|B5C5&|hf*v0;G(s6boF8*+QB>noF*S1$n*c_b@sVv;#Nb7t(shT}No zwHb!-{TRpa^cl8oQ#PCR9*u|g`ub{^<P)>}0OC7z$v2GnH?+RKzGyTW(R@Bv(&3w% z8w!WRba!{R9mvPW2R%GIP`O;D$Hzxnuh(>r^n9=mOp_Xo234z7YPDJvjYj3^x7}`2 zrBb0-EJmx<N=YDrK!D!g-|6Y;i87fCyH=~!j15NMJU}d$%MBox1_KZr2z-H$@NK6? z&;cNLQ;89<!7`NjBS$$>AYxMq2ybpSq>S)T5}VA#^SJprY?n_*GlFxyUXO;uAxqJr zP>AC3IHgi48RhCRf+LbZv)QD#w>Js~gUs>qcubv6hx+|K<#IW)EXy;7j$#CzWQ;5p z3#!-aG?`3TK@vwFtbifp_<TOkKzhlD42Zcc_C@r_UKsVy&rjyGJB0B6?d>fM1_Q>H zn6^*d-1<C9BLIRC$Mj&E4sae!pjai7$&>3v)W<;@kpaOG`q&rya31|+4^jdM48;gp zYFAxBe_pgs4Q3w@b6<8q!woP&gW$IT!Od~~{{DVz_B*9ce$5DG#h4v~6`p#<-^^w+ zHV1+}yjTMKS7>p4z~Ef5SfrPi7nYp>hNnVYOQ+Lp>W{kOg+?%NqHhNQan}-l9t*BQ zp+Mbkm$3sDkai=H2&?S4?ga>0ojbZ9ia)~NsNh(gVOqjR3EDt<K8J0a$nMpM3_Yql z+9m90jfl*s^xEgwb>wP+?9zxTKn~W3ENiI(<lwBOLrb;LI&^MxZrkURe?!Yx8u3MF z@s28|UoCd65fwCYbwIwCrjD$#t2mA43ppte+qUtt%DHw%{QFf`GjeJDXdoJh2BLvz zAR34UqJdn&q*2^qz?&+|++99tMpR?Ok}W6k(I4A3a8v~d{NldJwuk%xf{tj|uEcMk z%AQ8}#Qk%3vD~Qf*_rRD<%@k)7~um9AKk2M0KwMT=jUfCl}haUIp3VA3L^kAolcpL z@O7h)xbGK^<2yPw0;sZ9mx02bu|y*AFT{TA`vqO-pwc#384#J^Em<dtn3Ole9c!Yw m-$Gv6{=Q6f`^b)e1Q-A#zPZbN1g+ix0000<MNUMnLSTaJhsJpT literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/btn_keyboard_key_pressed_on.9.png b/res/drawable-hdpi/btn_keyboard_key_pressed_on.9.png new file mode 100755 index 0000000000000000000000000000000000000000..c2cc3204482d9ee2a41d3bc2d4d5a3afd7f5402a GIT binary patch literal 1055 zcmV+)1mOFLP)<h;3K|Lk000e1NJLTq001%o002Y?1^@s6!$f9n0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU#!AV3xRCwC#n$2$7KoH0O#x@4?kwE$Z zBBYh7sD~b^_E4#hktfI{Z<S--AurHN4!yLhS`exlQIY0LR1gRTW4k+U78zp*iDI%K zue3r6llA=kpP5~oksQZC*h7*eb{R(s^%}aaqg*bBPZQ#(R4P&oD>9T-fMB7El~H7M zL#x~EqSNVMFc=8wa6BGII-N!;m6{IHZnv?yxryD~U2Jb}!?tZKqCC%?2eBAxwHgi% z4p6Vxk<Dg<%kRm_3HJB*v9`7b%d&(7k!2aJRttN3dnlDk?swH{RT@)-oF|Cka5x6? z*f0daLC6>Kk$jt(BV<4je2Sz9so_?r*hGzT0zte}BoIFRY6L36L&-Zu8MA!4mm*Z2 zX_}@9RaKG6WG2d?(29`bRN0zF1yZ^JDbaz`&*0DRGB)(rC>D!Q6h#b0$S6pWe!q`K zqXBc{2!)Sdpy`x+ROtYt`yH)s=Quw8fUT{qP++`@%ncGme|dR{Sm_8a-v2~0okdKh zMahnZW6oilQw^t|6<k~-Q79BbQ^fmu=Nut5hVkDhzCFWwJ_lKud`3#d9Z2u$IREsD z+2`Ec2}2R?*S$a}H<C|V$gSt0ClyzTiMz%8w%1Lxb1j&Cb5!$%0-*);lnPyAAnNq^ zcQg|ToqgX&;KddS5>&a|yK7~jN-{J#J|%w1|2|^Oj_kwOe`f7#b1PzXHemN8sF{?T z=>B01nZ3cvaqr1!9brO?mtuDz;~CDY>`<B3SeR)yRqKB#B#2(8kJBG<#D?rZ2m8U* zp!1d2x4A(4dkG({`g7FmE4+LoBdIf|Wwy9wquVj?>#Kt9S&mi+{g^WM&h8H{@Az9! zp><|J&sb13U|;~fEA~HwROk@i8-3>-38J@qakP6Ae_hDI@y<EoRYs)OKKI^7mKNl; z91#Iz?i`s`wL}1!yJ|(DC0b~S`pkZtPpcbRE0rTF5n9|(<nkLOdz2$0<jB&2Twh;1 zK|8yM$9Vp@8wjH7I=xA7mR*t6{Z%(o<gxQ70*OE(kO(9Ki9jNd2xJKkjouCeK1F%V zo#j)ch-iu^L64L4J2`dF(WfXN<QMlXpo4A_gbZo&4j<k}D1sW~6Zg+=qWGz)WtKOQ z@rQj;6yZ0ReDtd_212c~hlhvQ+1WuNkr*{+ilPXC7>42cNWPBQc>8|I@n*B>wl#^= z%jk#FG!6NDeiUL8eZM3Z8Hm&-8w3)R@Jf);L-$%O1kfLA-r;`>`Pk#;Wuo6l_w%0s Z0{{<_AlR|X^KAeC002ovPDHLkV1g0P?MDCr literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/cancel.png b/res/drawable-hdpi/cancel.png new file mode 100755 index 0000000000000000000000000000000000000000..6585bde17996f0306a5499f33cf0e9ddbd2fcc48 GIT binary patch literal 1811 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 literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/candidate_feedback_background.9.png b/res/drawable-hdpi/candidate_feedback_background.9.png new file mode 100755 index 0000000000000000000000000000000000000000..203c4e640d8369111e7e09102e1ef502d60fcff8 GIT binary patch literal 833 zcmV-H1HSx;P)<h;3K|Lk000e1NJLTq002h-002q|1^@s6=`KmZ0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!<4Ht8RCwC#oX?9=Q547TD;W@ik+wk) zjG&2NB1kJiC>V-Cu$HxIEp6v7C|bq)2MU6Lfou`}4gw)uL}DO{i6A@(f?!}o2*R{; z9S5#=B6_~@dV=qPFPC>jy?*@O<9&Lb)@(Kt9Ky1!(}`GI=HwH6!V=8lf<W+h4wt0_ z=Kv0aWtGe2Hu?f=+lF)g_kx@v-6P#0T{HCp6z4jmx1>XI(}#1}TX_AHpvhgQ;W_CR zqc{B}=`le%-WVJLBc1Ysbcx}r_)2<2fGWn}5STq0-jFUbFCF&@&}(CG2+R%*pGezk zKAB94cswq`;jnQ6olZy8>vhrV_4J#5$f*&awyA>rOb3(AW<@HM+L%2ek;q)NT1^xR z1@$IB=?UrX+MTl~z#TQ0$z()2oo2I+q=WMLyq=cs`MB<V&YpS@i^W)hneQpc!HGmd zPd_lR30#5`jYe5kVfm(Manl5x9rYj-3bBL}3<m!??{&f1TB_(iA4@oXzh6&n<J{_; zLVj%vIB*W&01n^)4&VR|-~bK+aQ+pJJcl5G1f1g@4r~MGxDOx4z8E+MZ~zBz00#j$ zfCD&y12}+VFs9R~p8DnTA*@y4{8SGnlL<>W<MCKeeK+Bp?$SZG%M#9DFwj$uoBPWX z@>Sq0H9$8S4VG}4&8D7uZ^AjR)b%?Y4n?_KW(B5Fsfc#_O!MgB+Tqx?{e^}DH7DT| zi$ykIN~O{nFf{MaZXavawyb?|a*e~~(?qpe6^`S~8x>{CSs)NF24plEiGIH?TCLWf z9CN&wuj}yA!7f`!<$Bs;{E04?|1P=aozZ;`J)tacw@F7#!5n!3<9QQEPh6+r#-d1b z3R!#;Uch*%Ir{$LA?c|&X@r(N{#Qv?48r)fn1^)p!7A4|tP761IovmG5nRT&p|J3~ z6`TV&fCD&y12}*KIDmry9KZn_z}Zk3zwTN2v&5C|Zt`1%-vSH(*kja>F`B{A00000 LNkvXXu0mjfD}Q=1 literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/caution.png b/res/drawable-hdpi/caution.png new file mode 100755 index 0000000000000000000000000000000000000000..5cb6c54b93459214c352dde5285d29647173d680 GIT binary patch literal 1641 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 literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/dialog_bubble_step02.9.png b/res/drawable-hdpi/dialog_bubble_step02.9.png new file mode 100755 index 0000000000000000000000000000000000000000..b338364c5fbef92c31d9d3fb5ba93993b3164166 GIT binary patch literal 1475 zcmV;!1w8tRP)<h;3K|Lk000e1NJLTq001%o002S=1^@s66&;0e0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU%Wl2OqRCwC#ntM!JRT#j(`zVjL)G<aS zP#gmW#%;z;F;OOx=^|TPoDzI2M*V|Ck}-{mG5j;L%piYgf-y0R%s|9wvc!z7Y?`oa zm1S<~U|CEgbIX{eWyoXDtw2j3_j(RHr`%q9yFz<g(0j?3-gA1({eIu$oOAE_7*P~K z?So+$bQ_UT^&ZIpNy?#tXdo))2uj99{YLW1$l6P`r{q(VwG$3Pm1eJBKVF=lpZg}y zbCoR1WV0;$aJ&{31mSl<5T^ox;8~}0^y~HOU$o<H8CYB(A%MQVZ}K;7Dm|E%rh6T= zITa%%==J(KdVBjntf|>IPJo1XKqv%fx1V_0VljV<tZz<M+#@eJ9gfjgii&n!#BkBP z6AdH;F*I~?TVdh-R&<_5zq~m$2tQx3g4Z_#V|Sc!D{VGeATvD+o-BVJ^0SMjgOT^z zHOKby@|S)kFv4O%SPWsaeOXdfwfP+KL=Ntp^LxPB-v;*aE2?>-*t`*5sCXMVmZzQ> zId<%)Cu(ayxTyrA1j3LUNSm2C*QwWM)Z$JLvi|oMK8MlUL#l^W-m10m+Sd0&FmCs3 zhsjj67oGYgVHRd}rLf}8pKpJJLg2&N*9Lzh2vIgpsv#pTJ9PbaD5OwUmi~?I?$$D5 zU?x)dM1sKmd|BDrS83<vzs|zY#MPuuayP~X=5vu8Tt&r(I;<DbkBJ2YQ|pj7Drx6{ z^CI9yK(gh+pFf5aGa551B_Lr3uV4&(p-!jc3uuRHW*oUZ`O6vC?8JhyJZHgr;W398 zT#N=nLyJQ{Tthpjy>}o59Cz;<0^xH>wEQbiqJgl|*;^2Wlq?2i_vIw{Aq5fnXiJjt zRdT9U=Mlp`rcrA}tlDD<Er_%%Uq&8@xD4Ur_=l+if%rgD^#luv23h7FS*gjc<;Z_2 z*_U^^Ys0TL{Ho;<{K_9<cuTnK=MlB{Ewp(=n@6-!OPkpfdf)$_M_`%n&}qr84ZoU4 zR(i5)p%vy<Q9#T5`8O>Luqk<w&4j<`2`XI{?RAhC2n45S!;oQ2%9fj43>jG=h5Y`& zl;ZP9G;7Sw`9|n@wjl>nL6U7)E!Rh0=Aj5eFA^puT$gC)mXgQk*FDMp+p%R=NU_n; z$xEP6G@t}BUoz3t^UDd^S-s&ISZ6Lx>i%JA-h=3#C82!n>av{#g$jsB`|KDl9f=Xi zs<E+CU*+azSK%)vr*A=9&lfN}=}<k%3)egVdw0AChIHe6dw6*42a9FryXe$~WCrf; zBMSG*5qv=aiLbTwyH8Nk;~&CmV-7Stw-1WU#j2)8NnTkP1WIz(fdg%yVSR{R!B{*( zx2H3RSMED<q-AGa-Ls$4p%@>%f1H8KH~PVO%K;vrCvFeu(+yzBDTK}I9)+hKs$Q_D zAOt!(x*O~3KeD0bZ6wpg8(}a?B^+2`TtJhF1do5F&d!6|_w1=@<~TMpS#t>TguA`n z+SJhSaW87(?Oit#Y&Ac~>QU}li-L_sV6qw;UoLNIdh4Bn0`pe2A?)^%)6LE8hYla^ zx=H}BCuT`_#S~gnuW%&sF^qwTe*gaZjk|YOZ!0Rwf6QbuSa_Z@B*OY`_pD=Z(Aj_V zsO@x1OUD4Q{xnH$DMZZGLDVY@S;nN1oY9kT%OHI^SlE*XSXy19C>daabdW*fCCYn< z_#jI0S<Dr5MCo*iP!Q=RemrYKI#LEmGE*2IgqJogx`Iv)!%Bd72?Pfb_Pv(~LcQWA z5|D&a)FRC#Rhde>z$U;Okzj;a0hR(H2a=vA3PfJ>8~bCBR#L8ksPrV6C=jyq6^}vV d%Cmn27yw65X^KDcpp^gs002ovPDHLkV1fcWxZ?l- literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/dialog_bubble_step07.9.png b/res/drawable-hdpi/dialog_bubble_step07.9.png new file mode 100755 index 0000000000000000000000000000000000000000..94b915432d34e3acdd8b6130e42718ed7eda1d8e GIT binary patch literal 6012 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 ImUY<w0HuD_RR910 literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/dialog_top_dark_bottom_medium.png b/res/drawable-hdpi/dialog_top_dark_bottom_medium.png new file mode 100755 index 0000000000000000000000000000000000000000..7c79a4f9083f0ce4496ab2ec0ed99b8965df50aa GIT binary patch literal 1976 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 Qw2A=^wn&?LEB};#0jff!n*aa+ literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/highlight_pressed.png b/res/drawable-hdpi/highlight_pressed.png new file mode 100755 index 0000000000000000000000000000000000000000..d2276feb82c5fc8041bf75e171470e98f8aa7830 GIT binary patch literal 1527 zcmV<T1qk|yP)<h;3K|Lk000e1NJLTq002$^002%11^@s6j;bIX0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU%nMp)JRCwCloNsd6L=eTh<#9q>1=rys zRKYQTPaJ_Sz%^3bgbP7oJ84#Ns2HQ^ey_V{cPpw|OS|5c)W3QCXGSCG+wWz~qP6dS z_p8{xe*5EOPe$zD`R=#BS<bxQe>nY7vD1sP6^5XVz*!ru`1^yO+v(3YznG43BeK74 zHjzy~KwP7^D$oibYdFMdAMa1EckiFxk5@zFi(8S`w@&~!U8pcEx-_CdTcf}o+T%Ns zzaKt=+o64RCvx}d3Er-}6f`|Eyb3hq;q6M>q5XOP5!?=IhxX+gkvFIH?M)LfB~_`- z(5$e1usod9_SgNV_a9>14sVBc_gZ9k-4ZlSDzXz?w4H!=|M=ha*kju6p1aa^Xs+T= zP%GiBfCj>Qc>EN~Mk$_Y@_#E5MFd-)t&cvlXXgOKy+J`k0A-Z8szgx`<P2yDTm>4d zIxPY^f;EE_DK3CFTA*DLT&D{Y@J6cM(t_&F0S;B!>^CpZ$xv_^g<TW46$zu{s@e!L z3rZJ)^5BKw*esa^*wy7y5LlE@X7O#}+Jl0oiS6!k<OrB&G?IZM#T}eKSB_KxvaUJ{ z)=W9V0t0Kgk*fGTP)Gl(Bn1VPhX6!CisQP^jyI_KEdm%pTj{D^%sPTO111i%|0xbl z0N#7lMOn3Zt~!Hbpb|Y`;+G|Z8aDEPAz8F*;4^Zu2&51IC)s;YF)adC?dWG*l`SnK z2~fNk7a2ACj4eSbMKBWEkkaC4{7omHO<fgL+YDA_aG(M(%6@2Poq?!qUsVE78uSXf z3gMYiOjl_Z@4Un_IiHP=H|oSWcCBFJWRejYI#BO<@qUBi8k+SgCqFYL0@gL8h1jh} zier_A)@!Wd1Td(gIGGggr1A!wK{LZW-D7e{g&)N_@M27KK3iyb#Z}QvTTxucu@iQ4 zmj|Q7AfO@HE?Cqhnq^Q=bx{VFNO4_5*Og0%S;egyZFX!MrP0`qVwU->72=cy+hnZU zpqA}ur4ChO)mA<K)WsSl;#-&MqAI>yZHZZ+o1AmW#yU2(onhI|3hdksv=ZFcKXuHI zU0^U;_FQP$mKc1EOY=EyfBf9Ao5Y;jvoFo(IIhk(b&Rvm%~hG!{!EUyUBsZ-`rqxN z8RSOpXYn%9EyqkLVBOR^cICDtZ+rHl6laaCXQbL#2&>gMVKKs%XM%Z$+H64#E8bOe z^xdsJs9Hg7Mz(&Znn~M6miRQzy;M;&^=dX8UaiRtENh6kcC0vaTG)~biwx;fT=m!q zyT{>9&}pJkY(!>#R~5%5h)jGmB&!<G3NKqE6L+jhaaM?TObKEy6=y(8dg?<axm;Rt zU9M_Kj6;=|J$ZA2G-`|`j~m$nG}54}cy;0-l0lK->r5ex6u%aP1wd)@<bcjz^jw&| z86#U~W$s56P;utF_Ha)Goxvyvszc_gDHulujKgTMLSZ@T9@B#%!P}d`7~Kb&Eq>X~ z`wSWyJ16@bRR0qN7%5H!yC@u83XHNVn~Y50e(i7%=&1skFB^eG6A$xQ)DK31S>&oh z1a|=x<K3JQ#kR`xl8~;PP2Qt}2#3kR$n3|=!N|ro<f=Uq-<WN%Cp4gzMW+!&AfxZB zaMdh8>R|>3be&jWQCF+WRS{S$G^f`wpemm!Ef_be6u%X<AqgNDX&JDaR&T~YmhJ+$ z3X*<&2J=K1mGfRV?E=R@gP#I{3``<jtrc+Dr*>sw1p^M8tI9$kmjIU?9H7gQ%z!0R zj#RTL)6p+L!@!B)kC@07u`9r_fXGXU+~vV*NEjD<eq0Wm2zNJfwotwlJhGk~sTOB$ z>%N4$vLF*h_$ZxtMqM2@rmcdv9GoOaO}e0Uz$<q3Mw{C(<8)p9R20a9CsC`}wa#|F d?&Ti=1^`|ex8Etv*zf=V002ovPDHLkV1lu5$P)kn literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/ic_dialog_alert_large.png b/res/drawable-hdpi/ic_dialog_alert_large.png new file mode 100755 index 0000000000000000000000000000000000000000..7e2646d654746924b7efe595bad9c94ef367559e GIT binary patch literal 4918 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 LHPo)ZgL(cxaPK}a literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/ic_dialog_keyboard.png b/res/drawable-hdpi/ic_dialog_keyboard.png new file mode 100755 index 0000000000000000000000000000000000000000..c7729566c241f096bde71b5da5f46453e9507f53 GIT binary patch literal 807 zcmV+?1K9kDP)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!$w@>(RCwC#Sxu`FQ5c@las1#$;75WX z;x!d7wCjIdgrX=4qE)M;Mavd#+XU@`y9%UeaiP_Pe#2e3Fi}(_6|Uc27!^lHd)~Qd zYI;H4oWq?151x5O=e*CEbKdtkC{CwSf#+rtIB$jkL%>ZJAZ0QcAruNdMgJ9Wo0GUN zfn=djI1v>^d1J9yKJhsFgTWvn4u``!`W{YKP@V)#jZJI_xXEdBm6%K>LaWu%`);>e z5JizmexrbNI<0m(ol|tp9*-v;i^a?=^7AD`c6tV6B%$4IAEW;ScvP>~pJ|%L9KRUz zk^o7PF05AT+3eckaD2xrQ(5B|V-``(7VCi4>-7%*pwU_j1Oi8PyFJYyKW}2c-(M|c zzkv^c47>;KG0I;FfI_Y-vBdkC_&)*I=|Zts)cfIZSa7*qO!8~f=x8(&a=BbmRaF;o zC!5Xwq(Z_Pzmz#w-oPck@DiV@o{}`}1@2QBR2bvu#mq#CW<aVkBUNcLmBC<8&$+De zOEII;t?uHF<MH?%{TS^tu3t0CU!_qPrRjz<C%vWv#(6<(Hk*9c0a{0^b{fk{x2;a6 zbII1O<Ebf%vi(8CWFl{~*SKrzKqiw>yWOsCU*W&wkx0aR9iK|21XT0$9VSmkPQM?G zMt2%_tpLiq@ZQJhp3!xq(RdsRg}#x6UB}bxVD=w?+C>08^C8CnvF*6@_SP0M?D7j) zmgn{r&QG_mn|OdW*ZJZzwgCe9wad6mcDh=vF4<|g)5A)oqT5%$-+yGY+0xhW1C;t( zwOUQv)>F|e`h32-Sl5*u#{HLtaC2WfeFA);!M0pMcHk`#-^)&y%VoaPD5@N-K`w)* z*d^?2#q0GR@F)O9xM3=lN=b+icskfntQ0e1Kcz~X$mjDi@O;sxGTta*d<7Ds@i(g> lzz|>vFa#I^cy50M7y$d=)#7A2T_ykk002ovPDHLkV1nlod^`XE literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/ic_dialog_voice_input.png b/res/drawable-hdpi/ic_dialog_voice_input.png new file mode 100755 index 0000000000000000000000000000000000000000..11a3cfe77321318d0e563df5cdd42eb06a49ef1f GIT binary patch literal 1931 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 R7g7KK002ovPDHLkV1j9npK|~J literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/ic_dialog_wave_0_0.png b/res/drawable-hdpi/ic_dialog_wave_0_0.png new file mode 100755 index 0000000000000000000000000000000000000000..33023c3f78b520a4d0c6ab9dd832855b39622a54 GIT binary patch literal 15673 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 KPP9hEAm~4v=v!C- literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/ic_dialog_wave_1_3.png b/res/drawable-hdpi/ic_dialog_wave_1_3.png new file mode 100755 index 0000000000000000000000000000000000000000..662686c0f0a5371898344cfcc679bf7eeb4a83a3 GIT binary patch literal 15823 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 PZ72m<Rhb$o<B<OW2du)S literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/ic_dialog_wave_2_3.png b/res/drawable-hdpi/ic_dialog_wave_2_3.png new file mode 100755 index 0000000000000000000000000000000000000000..e23ada57ed6508851f0ac4c139346afdddef46a9 GIT binary patch literal 16009 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 OC`DOSnQAGMkpBTzSkj9C literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/ic_dialog_wave_3_3.png b/res/drawable-hdpi/ic_dialog_wave_3_3.png new file mode 100755 index 0000000000000000000000000000000000000000..5fe5492ad95bfab73f6e6c424c20a14d5df54e39 GIT binary patch literal 16022 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 literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/ic_dialog_wave_4_3.png b/res/drawable-hdpi/ic_dialog_wave_4_3.png new file mode 100755 index 0000000000000000000000000000000000000000..81b803fd00c7ce17757553a2d82d15fdbc53bdc8 GIT binary patch literal 15910 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 AdH?_b literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/ic_suggest_strip_scroll_left_arrow.png b/res/drawable-hdpi/ic_suggest_strip_scroll_left_arrow.png new file mode 100755 index 0000000000000000000000000000000000000000..e375f262f875012c5893a2e2e08fa6d5ab8c9a16 GIT binary patch literal 619 zcmV-x0+juUP)<h;3K|Lk000e1NJLTq000;O0021%1^@s6EQjlB0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!4M{{nRCwC#mrF|mQ5c5LaYn`a4X=UF z%2iPiM2iUAwonvx8{)<b^aEVYqE)y`iNFYgpk4o<eXZK|C)#+yyS-;(#B99f)arcj zF?w*`=R5ED&YY2s$7AxBp(B4B9KZn_zyTb<0UYonGMP+tc1+YlIGs)lxJbw{l4=To z__j``d!Upa+3j|s=?qe-R7Mbl8-u~%@caE_G#Y6GNG6k3RDC6i;u)*j>-Eax-EMbt z0L1qo{s{3%AP^unn~mT*84ib=cTpmdIEUDa$z+Oz!{LcI{Fkq4vC<6U@wgWPcc}W* z<#G|X+fDG9!2bzAu2u!I6cCHWqPX!Mf?LcIi^U=fE8+@Z-aD?iphJXCrz1h2Y&M&T z&*vlPmT#id)w588%msu(Avdbs(d+f{0`_{niRd&$sh+i{8h|c)eXrGO`N3dNX}8-Z z<X2Tw{wtOD`+d@AG)SdVp=)(fu~@u@*gh8a&ExS9bkH|j6abrn+D2QcO-rTHJ2ufF z+VYZh5L*)_#;lvowJn;BdcDq`nD?z#YpdC8%GNNLVo|kPr5io2bGh6z#C9>8C#Ta% zj7H<aMgG-!kk98ove|3`;yFN?R;yJWSF>oN0|&FYMb!rmhvSv)aMseApJ;_b;T`L7 z49hNp!QjsyFyFLFNs>-x$0+}w%mEz00UW>q{{i?EU;y5403`qfvlajV002ovPDHLk FV1i%mBQ*d3 literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/ic_suggest_strip_scroll_right_arrow.png b/res/drawable-hdpi/ic_suggest_strip_scroll_right_arrow.png new file mode 100755 index 0000000000000000000000000000000000000000..d38ae7562d1c2ba5a9f7a61aad1079c71410a86d GIT binary patch literal 619 zcmV-x0+juUP)<h;3K|Lk000e1NJLTq000;O0021%1^@s6EQjlB0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!4M{{nRCwC#m%nPlP!z^*H2#TyQ3nS_ z!O@}g0V;h0(I_fd=%NnB!9Ib|PJM!IojP^t8x-s$6es6`&^IWkgBtC30=I-vwbj_6 z+zSW8HGIE&zH{$MBCXeJcFf^mM;-zo00JNY0w4hY98j;<m0GQKel&o~<#OYN;JI3@ zUL%~g10s<Kg%hLaa5(yaq-+Jy>r5~hWXWWbvN;1}RH;-{TZ=4767zUGES*lXForD4 zPk`K&%Vov3U4)f02(x%RZUnB|m>U9;wGBX-&~GRdVyRS$dA;5&=7yzGsl7LVi&CJ_ zU*UGUSt5~O(P&gbHg~G3J{60_@Lol>f;fyUi^XDwW!L~J?im#dg|lA)R;v{=zZi3n z8R+x*jBFG|p)K6c=kq=5nUS|;KtUi{H3{>Y@c(EI8L&(yL-Wq%a(OzPP6N2@V<&)w zc@|uZXTq<^D#{`d2u!eut4^nLZ`F}^S!9No?IK}VL-D#;EG{7a_MOgFfUfICSnJ{U z`zdr}a0^Rry4~)4lg>tfSsdOP-jm<dKCt?C056-(=F367$ZQd{3~GQ_`6DbjX|-A} zKRL-ei%bJWq*FXW23n)hc=%1T+qz9@)i|-#=mxOs0+x(z>!uK;ld8k>o7rrZ!!8-` z^E}v?0ea3H#m#A&HaO&wDT(i70T2KI5C8%A3&5uU0|4hj%<6-iXMg|z002ovPDHLk FV1le=5-R`z literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/keyboard_background.9.png b/res/drawable-hdpi/keyboard_background.9.png new file mode 100755 index 0000000000000000000000000000000000000000..edffac5b8d236ab776b4f64ad80240b58a58a879 GIT binary patch literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Ew!3HE54((L}l9DB^5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>Jin2Ui978H@y_sgn$Dqi;BJS+`qxt`T1=Caf?}R4jmT_q> zR?ZfAomX@8%)2jUHYs5)X=WTDQ-9iue!G|O(Ab3~^>b%QV-Jgp0wbqK!rz~LqKzyn vA7*71{1lzBEJR<?nrT(zdEXQ-8AdjSSzBe-MK=Y7fL!S5>gTe~DWM4fyjw$6 literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/keyboard_suggest_strip.9.png b/res/drawable-hdpi/keyboard_suggest_strip.9.png new file mode 100755 index 0000000000000000000000000000000000000000..0cbb3ed8682650355343a8aa90a483e579497eb5 GIT binary patch literal 1577 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 b{s=Gt4IVv>1yAR_00000NkvXXu0mjf9^LZ@ literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/keyboard_suggest_strip_divider.png b/res/drawable-hdpi/keyboard_suggest_strip_divider.png new file mode 100755 index 0000000000000000000000000000000000000000..1a03c52e64df4681aacb8bf1c15cb741eaf0b568 GIT binary patch literal 172 zcmeAS@N?(olHy`uVBq!ia0vp^Oh9bO0U{@7=E?#o$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1Gex5FlAr-fhcGUd*v_5|SjDP?CpFePbVNnA^ZxREu3D-iF zP`=d)lh_{lI%*tL_gKO!(PVMfCBvaeQZN6}7hSvCk_Q_&IUGc$urFj_;$fK5SXEbR SE_V%RGJ~h9pUXO@geCwk*Ei?@ literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/mic_slash.png b/res/drawable-hdpi/mic_slash.png new file mode 100755 index 0000000000000000000000000000000000000000..87153dc336320a73e9aecadaced901f35d5e0d95 GIT binary patch literal 3095 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 Jl4j%@^M4C==)wR1 literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/ok_cancel.png b/res/drawable-hdpi/ok_cancel.png new file mode 100755 index 0000000000000000000000000000000000000000..6a99528ef3e6e2bbc00e516001c923b295361a0a GIT binary patch literal 442 zcmeAS@N?(olHy`uVBq!ia0y~yV7vunyKt}pNwxo9G=P+3iEBhjaDG}zd16s2gJVj5 zQmTSyZen_BP-<dIW#P$G8=$TjPZ!6Kid%1P8S*t5Fti04$Q(M7UCErkAXqrvEdSBm z8FPI0IIb++!Yr)IS*f3x@b=Tw_HT+Ude%>$-(Y0O{@L@`f>(2?d)-beeuju}xy|R} zGxYnI7*<*Ef3~q^V_4ym!RP=+3=3JIs6~un8+UHcMNNhVS8fI|U512<Ob&}LESoZi zi6Nw@fCa>FxWL5lzs8D<p<9drs9qq7A>+7x6vGCXQ4M8(7PBHGf$~6<Ff;l%OtTX= z0|e<5zm{Oo0n0-ik{}+_#)P8v2J7^N3<nm0-N$7o%M5ZBP_qcaevKa`JRp}wY=OBM z%9^cr>xBfvf_sbhK7IaFgCQaG{hvG4|1%gD%v;aE%%C=V#o7g*i&KD+!QkoY=d#Wz Gp$P!_K#6Yv literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/speak_now_level0.png b/res/drawable-hdpi/speak_now_level0.png new file mode 100755 index 0000000000000000000000000000000000000000..5c5ca309d05e05143d6a151f24fc708670705bc1 GIT binary patch literal 1508 zcmai!Yd8}M0EUN6vQ{l*XnRT_QIX?XIg}+iA(y$v*hb`<xh`cE<B$r~=Gx|xdvmgp zhLNeICNeT@uDR>pN|>Yboag*KKfd?-^ZodKy%|mpwh%>iMF0Q*u{&+!ywRb*q9DJ) z8-eaGH%bkU^uW7B1mffTFW~^z*oXk!Zo4r5Ae=MKADa-x!yN+vKxuY1)~@lw#UfFJ z3KG^mD$7OG$TTQWKKE7ZpjYm{+5Oyh01W&sA59l8-%psiuDavVP2lf)_uQ`hM4~%c zzgE&i5%awCJZ^l*Ez;J3h^TYJRMD`d<L7Cg#o{8-@)G+CfAKP&>2;9S-*+HThIkHm z3JUv&9`jx<xic3kA(h{1zEM>hdUq8#U!;z1W|j!1os(YGcWLk!1g8dK6Qv*MLUU%Y zY^F}Ku!faLT`zIha9c^?bXI#WRSMD8Lyv1?y_Wps;WEAkObn<q1#ymW>s)}DsoD0i zmXp&$AnKk;^%6LKZA}{@t9QCr{VuFugxJRjxMm{AR+tNQAtZAwhOD|8(-dl>!){Op zO=K5*ww?MT^H2l8I3yo+kSJ0zZx#G^97Z$*D`aUJ{K@%$RvU4B?#n4n8{7`c#47b% zb$d*gIMNfyd!{HC*BC-L(~cR%8wA=RV2JlP-cC!;SCb*80<lrM?&bv&JLJlUz?Ja( zls&9RD_cKBART+Ewdne0d-24N^XQC(?t8f-7?~dLDtV<2QypOF!zoAKQL2SO^ZAj& znzn1n!|$2Uzp682YM(YZc$`^xV@NMmJ<J8M2FDA<g_t-^xrT%O_^TqK=+Hf7z75dC zn*)wNibET14a<$WGdZ+ZcBS+QAuRQBM*uQ|1=1QS=>F=QpRS;PxGtP*p?|^FN*{gI zyfN%&boM%|WfQFq@5472e|QyGSSQCAh4Xpd&fE0J((U7x?M=-_cX8{|S~-R;IXc$! z?Sv-}1%+tYl$P#{Ywj7h$c+I=a-Wz#yD7Re_AWR1`;Ufl{1S`p1Xh0_#|S3Rg4J2r z=W!vUz~=S`1Ks+EUo$Y*%+GH^2k>r6ByZAB+L`%{C5?NPc=FYtO^5<8&B#!j0nTpS zNzjK*o=B1q@hs^v%^{a*uYim#-^~Vzn2m*`TIk`1Z^vL(;N)qmrbl8-&S)zWHqg`! z5&G`-`Er)IvdeycxJ8EKozT<Qx>_NrZ$9jpos-Pm+UK1uZ6k~bkxc_q)Z=+5m-ckc zIBMl9DM!k(c@ss?idiUeB8W?e#>=|=To4T3b0hQdQrn6Fd3QBZ<n}pZcrP-oC{q6x zGLfi+VB}9z%j!8!WxeTy5)Jt!_MWIa`$sSI3n%*CSniE#d3h!}1Kg=lefJoj?0qaK zC6ykbzD9DaIllLbU#4Sf_<r}z6v`HL$?7)s`z7|QI#;NW7HhRi*3HUSJ&oF7Fbm?P zv6n;o8wuTKfwQG)y5lzzo7=hHK9X@*luB|391d;D7L;G>mt+Pja$+1r<>6kK6JMA5 zhburoLLw~!TiuM&ZP!EGUow$NNZm7&W-90aA7vk`0L3acJrr5Hs8KbM7O|$CxLEaU z?FID$!!xy@YJO|d?Bk>Rh_-zevpLw~%SLWIN_9k4x;SlSz{JKuwY2f0S`a-%EvFMf zsq8Jz3nlf7Il(lYb$gy=4&U9-$a$m@&jD(aK=RsvXf9CMy{1^EDjfV4Gv=SQ+p;wD zNcn>y8nC0@PBQ$if|&Q>)Z3~Ew&>7T4|cfu3|6sxzhg}P<XbI0tHL}7wDK?K{7cuV z?m*4s@Y%G^`*+xoX2Z}CR<KD6{j+u!CVAUW<pLn<G8{!Xa4El}I_d1)*#~u6oD_q_ zFgfD#MMfF^(_COWXI0=q3)TULvbq|B6khnLmKQpHqfA9+a8^^HY#3A7D3ANhKg*iU zWn5WKd<K-EEvPi3w{Y7!Vqr{8A5A3smrZ{0Hf<dQ0~8+7fHagPS#M|?V25<DsXu{E F`5W7@*#iIo literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/speak_now_level1.png b/res/drawable-hdpi/speak_now_level1.png new file mode 100755 index 0000000000000000000000000000000000000000..4d5f7d6bb912fdd4f3c39cdcd7271975a0e96060 GIT binary patch literal 1587 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 literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/speak_now_level2.png b/res/drawable-hdpi/speak_now_level2.png new file mode 100755 index 0000000000000000000000000000000000000000..be5a7d37aea56566098edd2fe31319aab7e92513 GIT binary patch literal 1687 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 literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/speak_now_level3.png b/res/drawable-hdpi/speak_now_level3.png new file mode 100755 index 0000000000000000000000000000000000000000..82968f4768864ac8bb93f9fd6289a2d683a60e0e GIT binary patch literal 1636 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 literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/speak_now_level4.png b/res/drawable-hdpi/speak_now_level4.png new file mode 100755 index 0000000000000000000000000000000000000000..e8ce7bd7f5cf45881e3d49d7307f1597ffc4f754 GIT binary patch literal 1635 zcmV-p2AuhcP)<h;3K|Lk000e1NJLTq003+N003+V1^@s6k7ifR0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU&1xZ9fRCwC#U4LjCMHGH*3^c7F?HMUZ ziAHKf)Iw21Q6eE)&_W?dL8Pc4{s0MTz?51+sznI2f>xqf3l%AtYOP8oP?S*hk7`iz zhlQY4YOqv7gAk)ds3E?`y~7YMJ8$oHXLs(t4?gZ-_h#PAw=?th&5v6)KR-`EI9QG< zfM5Uw10Wa#10Wax!9vGnHBycyW;=5ovsE9&R=swCIj^6;GJj$I9cn?B1^(i^nt403 zBj)cWn5US3Krnw0p>AO|RQUTj<~PhS2$n7ynfEfUO(?yem?xP3!0AZg0b_1SP%Oc9 z%zNM^rq>O&r;zS?O&fwGh%1@5rkMV1ng;|+2zO|gm}Ym|1;LVmyi;A{A)hwp8VFWB z+CApA9)eYmt3Bq`2EnSw6&~}-b(ffVEOCGao%igeolPE1YO>h0z_$7l%!OuJwQ3jb zyW4ZNucL)kh*|n;xke)Z!h9G610Wax!5|m_!2k#b!2k#bKrjdfKrjG;K`;P<0T2v= z0T2v;U=R#|U;qSzU;qRIAXweP+otpZ8kF7svgCRrb0zaT<|xVH-e@#4zx7-%*BkB; zyLza2lEFphIP>$pv~w<a!B{LQ+#Af!MVBU-kLhPfg30!$x9R`epyUXNCt0-Fv<&mr zB|cL|tWv>Wqsq_P$N~*&bGbchom$r5$FMCC*KS~L2uQFEYI7xJ&A(vW9j@Syg5$Q1 zfCO{dTF^2F+rnB5_eAY0p39kFmOapyhb&mL;hv~%suw*A;yUTA)sV*OkOiAfpny{z z1)EOb0SwnmWEXeJ(5<a=TtDMcupg_mbxzA1w3j&JxZb8O(@WuNkAj_wxVDnq$3pyB z3vRuun`v0$J*|WhPtJ$raU$Y+r{SIPLM;e(+Hg-##I<wGPd(Uq)G=Q67}EH;76h9x z+_TluExy9Ml%kE|jSe}w!>xvN#%n>aQNuk_A=@0D;+_<3+~a6n+Z+#637-Wo7<*0U z4BnTZ&rvByn1@p^@euQv<6-Kvc$iw&;9D3uDr8|)q~FjI4kT!oq~$uRsGn>Rn-9{i zM4y5kHAXGAJ3PkHc=oK}b;0Gi_Gwz=@C>&b$H0$jMlhWtvUF$SHt!>M2<SMooB5{U zwPCSP`<a^!<4vpDVwwIqoaQ`O3BJ#oI>@}=(7mixAs(dY*q%JquPUV_$U)08GjJ9C zH$(6{^Spk35yOjHp*E~F1_loLs6g-M)(_C&1N^buc)LV6o*@5!y&+<~#oT1Pe>b<T z_k0+Z#Uh;d$^LH)Qep2H2mGYaqIp`y8q+dSO|~#?Wiq|~A=x6|0$KC%wDASJ8purY zQq%uSb;-Tlx+Z<qT_(%iw1CgW_=!~DF!NDLXZ=TmraesY&KKU{Q>@GcQ_;jj8;Uuu z3@|^YWY3rH(liG&4=aY!j%wseFcodTMla%^Lp`!#^*9R^WL?nT4r^L**OVO5R|D_J z!x6GCl0C4x5F3>*F~4Gd$^2eD%84>#leC_jnRiy%LXWG>RIh@~Y1HC3=Hpd#Yh7jD zjVNIc^MD~TQuBh9AQf>|TTEj@?s-y>X`L6y77wl6F{})vLLQ;&VuVR!Mr}Hl2V?TM zdu2?=vymLwGNQKR=5H7Cy4^@75@kx`Ve-3Ts)RF|cR%@EVi&AnB}go>mx}XM(;o7h z*1USj?@Fy8osOsh|B$kqc^?%Q!!#zC{-};oC-Ytzq5bjpNo9+QCt)O+v$~0j(;%&e z79?HVY5hK_>CJ>v0ipg=x>WEdWnQF*9lv`%gjN*t7*?-ksqaEUFaUx95DbC=5Db7| z5Ddr>LWy*AQ}Mu(s3R9FTY+{lpNhEt0~OcDk3q1?A>pKl5=zUpgzZKu2A5xEzKbp~ zJ~kyNRvhdg+W{&NY!U9tC|{Yn*$lzrV@-y67a&-COlO$)6a<S8ne)1oLB6udVFZH3 zhpgb0H5NWkbd#0CvIg-y-1^EO+ib_x2}pZfkuF%4VxP@xWn{8H45-~M5rAM241iz& h1cP8e7Wh|y0RUul8u`@zqV)g(002ovPDHLkV1mQ|02crN literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/speak_now_level5.png b/res/drawable-hdpi/speak_now_level5.png new file mode 100755 index 0000000000000000000000000000000000000000..77d0b8e9bb4780599c142095b4c48b44d4c9e496 GIT binary patch literal 1706 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 A8vp<R literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/sym_keyboard_delete.png b/res/drawable-hdpi/sym_keyboard_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..59d78bec06339da04b7ee3ae908a2be0994e296f GIT binary patch literal 2282 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 Ef?5z?Z~y=R literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/sym_keyboard_done.png b/res/drawable-hdpi/sym_keyboard_done.png new file mode 100755 index 0000000000000000000000000000000000000000..471c5021b88acefdbdabd722c10e9761c54eb40f GIT binary patch literal 1593 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 literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/sym_keyboard_feedback_delete.png b/res/drawable-hdpi/sym_keyboard_feedback_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..ca7637552b5e256f445fc8dd497811ab7518f489 GIT binary patch literal 1278 zcmV<a1OfYrP)<h;3K|Lk000e1NJLTq001@s002Y?1^@s6%CE*30000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU$ph-kQRCwC#np;RzK^Vt9uB&Uc-LQ*h zUb>jt4JzrO-h`rupqGM#pvQWv=%L$V4;A%L5kVIUx*$nNWmZT;U=UaYNjJKp4;4j4 zsafi7-)H}UVVZOH%-OSfvNP~!*|Rfe<~Q@r_sx82C6mdl;aIY>hG_}GLa-1l1Pj6b z3$PrM%9dsE$4Jry(g-|Gkorlzq;I5dd{>LwPA=T$BR<u-UHGlXZd}?!20wHwlrnCn z=pE@1X*a0?1G1E^bnS!&NToJ)8Mee}!gXWyVv4#MpG2xA?Ic|$Eg;2Qw3D}lWm7jh zMca(*u^*(3q&=jEcs7f4j8yDk>fCMxX*N_&`rzv(^I(eAl9_xb%_WV+=Y8onHp|gc zS8BUThhdr2_01I3(ntD2dPO=aJzuGS1=lO4C_J-ma0C&>iKuSNf`bqf+XGYV4kB0r zd#4Xz>^w%<)XgJZQ=XOk36_Zf9f+H&pDUJ)l@Rajbyxvj*;S+t#S{YxmXG)q#rF>E zyQIykz9Bsg@``0+FO?#uiPA*+`mdTId$;MN<)k{&B0PUhI_Y4FCSK8-2Te0T>-2(D zi-W9P(ABBTV_of7y{wq-l--FSeT8%u`>V%AJCi=lOvxm#=x}Z6gBR@bcx_S5%cQRM z+TsN)a7D)u-k@!7ssSz5a9b%c`8ggYB9|0LP>uz_oD*;;pW#pvURIaA)lyPD;#D#r zdP`cz6RyNuBdCr50m<SOD>VVL5KorisFVz_s@$GDEbJpb;+$5FGJMEwB;B(K$bZA5 zFC*=foS<uGD6S$;l$kjU$b1*h!;+Lv9bF8bBVCPH)ox6YS86_~U4i0+%@mg&HG&LQ z1&&BjO`TliB`Z)jVgOfZ3Kr9((^w~vFO0gJ(E`#|oF&iU&K6am_}X(FXU#2`fJi35 z_<CPOx~o8)B29G(B?i5k^iz6Ay#yzqTBP5(?gp5+uV4%{lhmp}@qkJUpv1fC6fp6w z3Jj_x>(3niCcnYN4Bk>YYk;GO8hR~ZirY1Cmq@pjX9;+?$$pw5Lro(!E1flZgp!@d zMA8looDQnc@R;Wa#+?^o7Uj;a0ydgvyb*A_;6!v#`#nIV1ml6PRXY2GyhYr{)Laee zu?DOizvX*)Z^{)bM6N>a@D3bFUYbzC%x^fD;ss48@MVuh@!|%h!<%p@xoJW*Ys{}- z<1J0$TzN%)VL8r#a)(WLZaSOdeLAQkS-<~&)}LlraUI9(%;us8?>L5ZMgw&KfxZad zvR`u!jr$EI;AUvz*?Gg+<Ujfy)Ib%%`^lj|hTEGdF!@;3YI9c1acPRhFuMW7sUoGV zfZK*paNOYip1=eg-^1DzxI>x&I>8md0gbn5!*Jtp%qqx)^RPSR&m%ps*(WiVcPPun z@4nv0Qq4MFC7zSkV~<s%^UXNZajyOmOl>G`(6#BtSw0mkBs~jw&ZE*xmWmTPi%Bm7 z3dJe75>qfa1y_SW+8H3I_oOv)UePqgEoXw`u<xPH1dD$p8_Wa~)L<sq3jgmu1Pj4J oun;T+3&BFL5G(|<DZd0500zRZM#E{TS^xk507*qoM6N<$f<q-#&j0`b literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/sym_keyboard_feedback_done.png b/res/drawable-hdpi/sym_keyboard_feedback_done.png new file mode 100755 index 0000000000000000000000000000000000000000..7015e266a297927bd2275c633fcffe724c4a8eb1 GIT binary patch literal 1068 zcmV+{1k?M8P)<h;3K|Lk000e1NJLTq002Ay002Y?1^@s6-Hle>0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU#&PhZ;RCwC#TT5$GK@`4|Yg=nIjrF;b zstd)9D58j>3q?hgg5Vnp)^=4Wf`|)|A}+*@3q@D@1H`5HTDVa}S0aKNmo9XnZPQe( zX_{Qm!EfL&G^x3n3CYbI_}V0sxp%%f&pAm{6h%QRNh)YD@q|5LPuLUoggs$T*c0}I zU5O&J6EeVpgz_v9vV=)~vX=0a5G5Ez!Xv^4Cj2nrWF=lJJZKp)efBEhF>F2w(njbb zT$3+KmG8xyk|H5tv*c)|rCCBLL4=E@wfe%N)q>Xl7AuPg%P@bOFa`6`V?Brkoa}RO z6}`cWF&<#<PvJ)Fb7>SoJZFqB4gcf0OE5RW*snM)D1+86+_aJ`B<uhYo^yfFEu!L1 z!WWF)BCNnhuyhg55`F_G@tWSq<%Chp{Yuy>f+%mq5XQJ-I*rYpPc|7Gt0v3@UWqxp z@Lr6u_O2V(+%GI?HQ~K11PCjIwe2(JUJ|5waW6gg92-;>;Z#hMR#jS1HP?17)oQqt za0DjJetQPKrA>Mp;WMsx8NRNB1)PW9X6G<z*7iNjWw+QOOq$(h824oVJs!uT&C+r= z;T<koNeepgC?oJFY)B7GG%Es{4oY1j@QfRQrwzW!<Yq9ggI0+9E-f>+65&s^Xt>#= zW*_!>*ymxNhkYLQdD!P+pND-OZiqZA&5}*8J?6UdxNc5dw;}UzfCb$SYVRRm!KMX` zoQGM~8TqmntQXg9nmk;KSiesk!tAd%@t^%?5dNfvQ_+13Yr9LB5YH!2d6nSb51{d? zchF`YwiUEyKrkoz%2x7loG2YZyHjPx3()wOWos-VSWWuAbPa@4bqq-LkT5VlD>F@c zyWuy@E==}lrJ&UkCjGXB_`cyk8woFh<bU1a8K)>V=?*l_x`X6?i)R+;EE{<7k}OfS zf7POt{kp~G8eIk{zIG?7ojg#ga3JYGbAjJ8?W*{3MOY#7j}X=no)BIlN|xrR1=8rE zoFjZA+#q~+QWUYd*o4@~14suEj&VcigM|iJK4uQ!^rds=L8%Oz>vMTpD&brkp!dXm zu2VSAh5$c4LAZmnu0963>#8`?umYJuXjf}44>Ml{jNmmneo-_Rtgq1(VQH@YqQe<M z>)eqX#p6hr{V*DHp(~}hB&<niV9HrRt|0t7!iMx?gF=^9=$f!LZ?4mip$}yi^*=C{ zDc6B%Ho}@Tr=C88G^e1$7*q9#GxZ`YNgpD7Abce33I2V2qUse`>s?yvk5kil&PTRC m^A#92*Qoq2#1k%m1sDLbf}Lm^V1F3^0000<MNUMnLSTaB80QH9 literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/sym_keyboard_feedback_numalt.png b/res/drawable-hdpi/sym_keyboard_feedback_numalt.png new file mode 100755 index 0000000000000000000000000000000000000000..728c6f7d42d70b4ef414192ae7f45944b75e102b GIT binary patch literal 1336 zcmV-81;_e{P)<h;3K|Lk000e1NJLTq003D4002Y?1^@s6>O-080000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU$+DSw~RCwC#TVY5PK@{H02n69k5Cow( zxE~S-2Zmq>f*=HiAQ;AhAs81IMIjW1{V{?IL<oxD!th5JM*a%JFbc&e3L`OuB1sA* zNeV<s1m&86*?2u>cV}mI*Ub092Y0^PdCqq;Z{B;Ou|lC>5yHhDl7K`ekqIO+iA*9B zNMsV3Kq8aKBr<_SCXq>G0*Oo_6BMwQB={S#Sj^4b$d~}{7Yl{LV-h(y)G&@P?i25q z84vH+mF%&a0)fwKw>aYv5O{_07~|ak9xh55Tg2-v#=FQ~#aJs|&oe$X@YRpP#Bs(q zzP?c>Mg>j3&HPcp4-$JG*mJ7$mY@lY!+AqhKbyMQMJ?DmDmWOzcT){szw)rZ)%3yV z*azM(F<voVMIPU39ITKoMHg+1o8p%(4sa!pfz@>$*|?t#U{7eS<aV@*vwrmZGp0|G zGr-|0W70#2GR7a^nXUjuhU3;qG6CE6-Ou7em<8i}lkMIxL@r{S0**&Kgct&!{p1v4 zG(=8<aW^G9<Sej{X^LEfR&kHtNT4e+M@mf0cHZLfIecK$1$gkaf^nxL_5onOrYZ7G z^!x9RQe;cSSKIjlV~HeoFM!Y74mi7j{`)0%xXqh2MV<j;%;=nHHe+s+aw!T*MA}p# z-rr(8htj8vU3xNBGOno>2EZ@hvK=1fEzeh{k-bBNHjZJ&pTNcoh+e083*T`O^X)Nu z882xUH3oTd6N-x|@$-7L&5ju4$!RoJ5S&z4$v7UTO;)l=7w(aueIWLW6%M!WJ;o<H zu$sgv-}H8N;m$BN2yuDx{}QBiyn%ATaC{yLPNSct#ctu4V7!m)IZ<-k+Z^{7mJ~~N zzt3ok%tJ!Cf)EX$Utr^fOXdON<8u%DoTNao@qqD;q*$_m$jchK#L@eeK>G$LK23%Y z6CnqEW*0mx{c<Tn8c|;Ed)@+F=)BR=FNm1D9Y}$~gLmHEODa9M!*sEQzS!b0!^KAh z2c@#!fOvMz<JozGrVu}j)?Mr-BCknO*7dMNKBd^GNjSvnlLiw_f>;j^J-FI3lI|eP z5U?HR%uZO8WE;!cGcoKZr%~+6p_toX&`%B{N3K$g$tm<)he=E}5xG=!rf}&zhz_6P z9VjwxmFBmjthR)xS&$P~img~7YJEG`yv}&pOJs>(TvC^TKE%2xbnu~<0_VYm#MM<h z6nK=?mdN?-@bi`NK-6V*9qPp4vNP*Ya+@@W+Hq-&@DSL$b>|JxgLXl6l;MK+gx>+@ z;|}@kBx*+%8Hx;Bk9`vR7e8l#!km*x<b0GO!$f_<<#q)3ojVOhhL;7c$X1SaPCNjS zIi7)We~FM4y2w10S@pUtKz#&wU6s%j86QMRmyY19Nmhl>V7c5>hb3~>Qn*e+N&IK9 z>eHGc*IMp(b})Vp1Sm4ch}+H$D_qozhJB-ADt?slwdL|>0SbOQ!9+(L3L@K{30UML z+C}5=d<ip8E()?Cq2RYo96Wi4&R!1KlL3p&aS?@$?x>29C`At4r-JWMOY%1u#>L2P zgi8TdCW@?b&^tN7^cxQQW@I;kSG9-GC5BRGj#hF6pnqo|kx66%iA*As$OICZL?)2P uBr=IiAdyLA5}80ElgI=T`5(b=0R{m3Q%d?Un;d@t0000<MNUMnLSTZT3S|ob literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/sym_keyboard_feedback_return.png b/res/drawable-hdpi/sym_keyboard_feedback_return.png new file mode 100755 index 0000000000000000000000000000000000000000..ae57299e4fea5eb99b89d9e983e95bf70cbd7e74 GIT binary patch literal 838 zcmV-M1G)T(P)<h;3K|Lk000e1NJLTq001)p002Y?1^@s6EQSqJ0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!=t)FDRCwC#nmdRSK^Vs~o5XmY=K}<T z_(YWBKomqPwX(4g8!J%`EEEJg?QFELIL=Z;@DObTEi5drun}!6JS@aQ%R2=Te8u?6 z`v34hvLu^qHn;B1#BbmScbmPv`E7Q-$0Q~U!_u&fpfp57WmHCGR7Pb~MrBk+W!xE+ zLH@`Xljj`epH;zfu#CSqz-RCsgtqdpIDWGY1-658U>BdJ=U@uFpx7T9u}VvhV<|WQ z-f+TE<k&ti@^@a2%d7>nF(Q^npl;{odH|4hvZu%E^4f}y0Fd*dP7|PNJzifDbqG8N z0RJ{LM}~yVG2Wpsq~&AM6p=c(0-k~+V6@Qpali;w2J67JNMu<68#A8XIQZHlnh6t& ziDn|Q2Al<_BggAZaNg8ra{g*?0-TRopn)$ka_%Z{6kO&z<Ym=t7_|<8X)b;*TL8mM zydPZ6F=81KWF=#(*1g~+Sef&UwmB>l8L3)#f*Xurc~{Ik63%HxlXNBFV$w&<fXz9V zFg50}$%J#Im-(3_BNy93k?|B0*_we&nb(=*I_)(U*ll*L0IIy$!-UN10(a!`?`X~< zBAdW{4@89Hv7II#x%J?dCn7JomV-DM$sZRz5%~p9F?5&W3Qalb15b2)$Xa>8{wcNv zD6{gNa{OJHVXIN?aA*qvm6$%o6<+bts<+pM-DGS;6Z3loPyQ{K1Gm93F7~mws>M1O zE7G<*BSIU%b#O4nvwRr5&R|WnnAyKE%QyIQt6R66)HX|jw+%c_aW^LlZT%DW0BS7u z=7vE=#t7KW1=zRDAltr+rJu&9$=!A-{N`OwKK;mq-0pb>PJ(wn%UB`Fwokwr@X2Qx zD<l%L+%s$XEMtW}vM!QOvVO$m2XAETgry+83ob<p)A^3VFXu7nrvM`Go*NxC?x$Vg zvBE~Tawg5q7-jj>h-`9~iumrQ(J!2;jLN8t%BYOWsEo>}jLQ5^GQR~F09kV5nWx%5 Qu>b%707*qoM6N<$f@flaE&u=k literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/sym_keyboard_feedback_search.png b/res/drawable-hdpi/sym_keyboard_feedback_search.png new file mode 100755 index 0000000000000000000000000000000000000000..d931b39e22115c03ad18005409364d0f1290fda1 GIT binary patch literal 1209 zcmV;q1V;ObP)<h;3K|Lk000e1NJLTq001xm002Y?1^@s6$Fa6h0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU$TS-JgRCwC#noDerK@`XP-Fy4GeUPH0 zp-NLq6Y+>wB1qFF7Az!UDPlpel8}gvSYSiEnn+lP4e>}cq`E>vu|P>gLZ#lyLQ55W z+}>N~@c)v}bmo4~wqIi=`KQU;@6I>BGiT16Gq=XTz(B@mZjp>p-ZX#)&;S}h184vZ zpaFcenAl+$hSTpxNx7ta{LO+vI6Leo^^$&&ev$gnKlA`Ljp;H;V@VT9wWMlNIjIo+ z-$_Z*d(uNvBk4J*9YD!I2{@g$$_92EX$k2ZsS8$hq8Fsy0FA>C!wSIeQARpQ`sQNd zqMndyuu_rX0>~y+lCJugxK->*n@HmWfv^E!%g-R)cQCOI(nnGoHgURVd4q2w75R3j zGyoiBrjRbAnaFF>A#CO<(oC$@JkoY-;6BB7d9$w}<qZ`8`{^E1O7e1!Ci_XVV8u+q zk`YX7GA7xqfOrMqSkM4G;2gMv_|h+=b@1VsgRmRNB<mFrhY{TZ1>gbeBroeGZNTcd z@m+H--BE1n`JPun0uX`4WY(|40p?}naWq>>`YIXs0E`j{KrX_Z_>#}0xxW1MuiMF1 z_5rChsAMh<ONs3^=@UYv*Vc)sCXO*1sfZB-Kn{+4v0X>{;HUM&HCrS`n}*Qs8-PRN z1W7;VGd+IKO^ned`D~IG_lzj|a)ds9=}(*qep?b7S!{V;Qj3VfN(o6O8Vx9mG!RzB z*6pQckO3qRn?-<1ghIcKS9hwU-&25)0kFHgk@VM~`tn;q6~P$R){A!r0>CBUJxTux zZ0@KJ05-sC$sTL96i9)b#8pU-#RF$A(hM(qAq)A{2g$f6urh(=Ld7T>WqHdgSkiFm zI_&qCBx7=PTc+69o&k8UMabF37xHqiba8T;<>*mGYJLU=GlB##^Oj?Z6qxg(jj*aL zew(3^$5@aimFCoZv1jYs0K|||G$~%5LVmOvzFiKWGDMkLByR0#DmqT$7W%rWu&If2 zV8Irf8n+YA+$B9iZJcsg<Ub}YCynt`<U6>Ph+~<X1G<$^x#U)4r6r^S$Kl!mfPor; z-QprnYOfRJmDx#ps`&gJ=@w}RKw?1vSffb^>ft7r6X(mY<FIfsZueT#JfA|;Dz$}h z0bniCOK~2YBt1hku}+`|2UY_tUWEhDoD93jdP@SQf;f%9kg1%IIBAEs(`J~=SKLk~ zEw|HMm}pY?K3}<<f+5niv!s16NW$+51lbC3;p@Z&&m&A{g$aNsv)08v;={0FP)a|7 z0Hzx?xPWNH^<{P#0L;6h3YQQ!{wc0T7{GKThPdVe;wGX~Bn$vnh<X<goP*_t<yT6+ zf`5xM<BG%Yl!R#otSiCc^0JNfx$Ld}^L)qvoIoUSe*7(MLkM6(OwSnn>kyyryKqAu z4NDZVD@BhW-F`{hf@Co2Hy0YN7DJ&^h~%zAyy7(U|BY$@4WI!ufCkV28sI+$_$|Ny XPUB=uW_hcZ00000NkvXXu0mjfoi{Kx literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/sym_keyboard_feedback_shift.png b/res/drawable-hdpi/sym_keyboard_feedback_shift.png new file mode 100755 index 0000000000000000000000000000000000000000..4db31c849a0885e4b8a6c66619b8b8fafea1c499 GIT binary patch literal 885 zcmV-*1B(2KP)<h;3K|Lk000e1NJLTq001xm002Y?1^@s6$Fa6h0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU#7fD1xRCwC#m_29|K@`Vt?{4#Pi5d|R zMPwC06wDE{OPk8Hrqwo`O>DIkVl64OOJO6VN|jb3NJt7n%LF7?*c@V_n3(nd@V_t_ z=Jq2qd$*_a;0OCLGyDFtGw;3KAdchOAX~jQ;N}H*0bYO?;00J&Q#}cSz~$J1GC@bc zS;kb8Z?mL{5$DIiZJvJsdoD#BQ<LD(M!_`rOs09wz0V~G7zS<di8CJaxXpW&77&8# zU|n%OVV(EFstORtu7DMT^9d_#6IM+?16%@2Db6P>v2C*|0>t?X;F%IGg+uTjywe0o zn??3%^jm<$`Ey`_4y%rCapSgm9Bbkh*tgy<0TS!afCu1*=HNEC!_Ya(<87^t^m)iJ zf?f-d2abb#paXs@j(r6)Ok{zQ)Mj{3717}s<3&Wc5RfFQUCp8IU=Ezt913`Cj&0OF zyG0Y7t$-0jq7r_Ad2qJNYzDkH&$h84(T$WXKr-n~uwe*~Pr><&O<8A~Cx$n%!Lf(S z5+KRvDp*U2?Twsa_ab-!zG>sE@fo3O0g`ksgJnnAHRO1&4dX5IUelF;BvCCIV!2Iy zBYm!EZ!}4Ssfn(LfV4y<8*kFG!c6v5p+uKgfJBW6CL2?ty6dRM&q{O?dQ{6JAT4g| ziOSX2n<>%BCcm%el`H}JfJZqJl?xHMCrtG@P-mVW_3}z@fj1yh9wO`VIap;0&~4Z6 z^Pzj%^)cpvR*DE&F0<gV7KL{BCO*p2I<{K0Hz1MW2H4C|*QXH~9E>c-+@x=z>a)JX zhrlB+Ww|6;Ij<G5Df%{)_G9Y+ykdN>l8Ik$!Al-@{V#ODbtdcWRL;-7i2LFsHp}&$ zWrvJNoh$*e)_#I7q-@*agt_^(=+L5^*WCUab!e--+8qA(`oADxzfXPtrf)+jQPi?Z zgj&IpBiA>vGXb{$RBfMW9fjaP&)-1zubY#{e3wOEA)j4r;#Qyf`Y>7vE31?+Rhc$b zYtIE(SDC&V_0^~s;H%LAtVaDF@B+L5FTe}%0=xh(;6D@aM}PqUA}hN7!tw^n00000 LNkvXXu0mjfHtd^> literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/sym_keyboard_feedback_shift_locked.png b/res/drawable-hdpi/sym_keyboard_feedback_shift_locked.png new file mode 100755 index 0000000000000000000000000000000000000000..3fd5659fd3ac276359578bafef0f2f38abe2ff53 GIT binary patch literal 700 zcmV;t0z>_YP)<h;3K|Lk000e1NJLTq001xm002Y?1^@s6$Fa6h0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!UP(kjRCwC#naxTYQ5c3jCSx?IKP42Q zNJ*hk6hy4cY+c!HyRA3jJqWpgdI7lrS6#U*btP`P=rV<pRW>48v7}Dlk9;4ThA>X% zoS8YnZ{UIa%$a$g2|4flm^hB-W_g*PoAE^jR6qq(Kn0wZs{O_o<8#}_IzSJ=TVvYg zTg~afQ1}Me=J(&htxt*nYy^+X5@>^8Oq)ORpE(DC8rT6p_=v~+dWXLYS|9>%z_}G( zIOp%8Pz5O1D{wj?yl~3vM4<^(z)NtF5MDUpb*rHWQ22FlY)zL*&^jF+Qz=`3=J_T# z0>c#Hg&~h=W+_u&0yNjJf=}RXitqxBIpl4aq6KJ&&%gn=0)I0I#60$Zw`GbHkfQ2m z3~tk(w&+|17AF*yD^hfec?(dJZh{Ms;e`v{b}cUfDxcTjEQj#I8Sf+VEkLES0lGPc z7rMN!sxJX4s!jpng~XzpMj&fZxsq6PX$5FrUgNU4D=_?c(XEYlL>d7aumV1Un-anc z*Wd$ZF=++la&R9EQl6mY$$+yoMB*_4YQ#OzD>=ALk25VjCP4G=TW}drc;S+>MM(nm zGkp#)yg=C+NdgPt9rzYl@IT-y*rkkiW@FDjW^`wZ&PASs<&>9wE$}7d)!cjVGsSvC zo{{ME`#!cqd$^?BayYVEu9uX0b5{jaz<v2$(%8|=IW~=E*#?#03sBDxe!#cgGd~}2 z7I3|%>bg(o2OJ1c_%Go50Y}TB$XX#3S-qsOI*qD;3aEezsDPf0hIKZo{{a<H0ToaI i6;J^ccwz$o1Q-AjKMbc4-I9a=0000<MNUMnLSTYbJTVsl literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/sym_keyboard_feedback_space.png b/res/drawable-hdpi/sym_keyboard_feedback_space.png new file mode 100755 index 0000000000000000000000000000000000000000..98266ee5240b93d423e32592a280d4c93f753084 GIT binary patch literal 287 zcmeAS@N?(olHy`uVBq!ia0vp^#z5@C!3HFC+IWM3lw^r(L`iUdT1k0gQ7VIDN`6wR zf@f}GdTLN=VoGJ<$y6JlqJy3;jv*Dd-rU~E*JL2V8jv-opzQho^8KeGucb@&9KG;j zLD=lilf<3ai}*Et+b1a{y;xf2?9R$e5L|YAdwTYiON#M*JC7$-oU1)on>l0iEN!KC zJEwh4+kVbe*IC-uwC?5AnACsAGtI)}%*>AMnR1$m;q%+8Z%(q`sA8;;ewH%p;DMZ^ zXZEM}pPGH@@#m>~Z|XaTRd0S0&maK=Gx)ECHZU?YEi!+%>Wk2Epl297UHx3vIVCg! E0RCBNOaK4? literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/sym_keyboard_num0.png b/res/drawable-hdpi/sym_keyboard_num0.png new file mode 100755 index 0000000000000000000000000000000000000000..10ac70b9dfd4f8040573322add4f14a320c2e9b0 GIT binary patch literal 1931 zcmV;62Xy#}P)<h;3K|Lk000e1NJLTq003VA001)x1^@s6@p{zM0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU(ElET{RCwC#T3<|4R~YBs(!bD({1Mht z+$h+%Zc{d9$X<+pHlratP3NKyYN8L@<H(+T+)RvFhD)|52``#RvIpV}iN>+efB^>< z%{GS=MG+yELZ!6y5AEG|y6-l}L#Y>PCYPNr`Q_f+``z}Q-}%n>=X_U?Bq@)}>k*Mt zz{%(2bK&H3^0{#GIr&^T`J8+%uTJvi6G0HN=?M&EA?0zBI?pP+nqG$dEGvUR1JI#< zK2883eGw4{B=B02)0!Lk0+LSd8vrIi0UotD8HDT@APflMF^ZFsRI(B{`O6beEWHp= z1SkO%pEz;C<#akLD=I2BPEAeCdOV)7%a<?z4fp(r=Qt5DoE$DM^TUiUCd3;7n*c7r zCl@YUXnhVMWe~sLKi$&O@+0Vd4A=@N!_^`#_g^&ri?OX$up|g*@x;=%noOp~+qZ8I zND8F8ySodX*#~d}HllkHUIF<66?f#Aqrq#!dLo|;$_#iDu)C|P>sM(7(%#<wGd#Bw zuo+#Jm?QZD6?ZJ?0*mk+^;Ga*7vyWvZM=Wv$dRuTiA0hmI1~!Syk75gFc^%o_ZC5R z?b`JPJii@Kiocf&`5JVAB{-p50JQ)+t}a8iT18Fd3z*H2LGJGF@4v;8J2o~p?Ql50 zh5KLG?e=f(-@iY_>bTwRUh+Ktj)}I+Rgh06Zv)`1*4EZ9J3BkSCjdEytJ9J#T~-tM zA`WJ&(P;cM48jt7{P^*o;QnWT1Av2#jg8;2ItvR65v$dD7=y2cw#-$KPvTEGS&75L z!*2OM`uh5adwUO8saCDzi%gb725UNb^5k}y03$sRpU)R)YisL=)5m}@!1&dxSBEAh zCZ=gUgTbIbdi3aaw0eDxTNv^?6+|Kty?hbu!iaT8{>y@{TK0C*!EM{NZPlzIxSR<% z%mQYpynY7!{}`)VS68<MeYJK4<kN+n4kyltlW2~|<7o?zMx%NR=mn^wrz&t!EfbQ@ zOavLA&StZ{!77fAk3WUO0#>my79Kr%L?)%4)~&3pv{KoKsE~LKMZ5vur4U_9Nh}uA z$;xo9#~?h9&xUb}BZ389Tn$w=OMZ%g^78UhR&j1_E{FqL#OjqCV>2@|&sp8Fva(WY z8)7Bo8!^BZA@OD;*$S4QCLdf7(X-)m7Muiv0C`m;J*FnhPZu*<tyae>1_FV3X7em{ z4ux-MNs0oZv=E~HJ7wwT&!6A9XV0F`iH|4l1!1VItxd1S`ucjuwQJXo>2$iNUaybB zF$S?F+R@R`cKY<`9?JSvWBKU`fLLqDlsr&J`8-Lo8&(mY7grc;Q^B>Ws;b82a_!5e zSY2IRM8IAj931=&4!3aP*Sz1)xtRj)KvH1Uinn7#QCzjP!n3N{P0i0>-4ZPMCH_*Q z(TGfAC3SAGSeC332#AZ+3Q<Z1abuC2H*fw9B>n)Ev<Xs56Ra!~oSU1Pn(CZRXE9M6 z7#NuB?(Y5rR@l7BWC{}$78Zt~FuY4`YfEY(U+zjJz?zqkZ#J6?7(bqh4?uu^35$uu zA{8H$kdQ<l9XfmVtOwx56w`v+6qOAP4R)FQhYue<X>M-*1x_b0<(<cjXAZZtRY$%Y zMB}p{tRh&rnaW_&JB%eIB}Ey6b6^!sl?0};2_#aB6F|=MA%>?70)i}wGgDabO{2~t z23pnh5?Jz61Av0+39D$eS~p?-t)q$>1Jnc+tnTFG<TENQRnk_JsEJBozAoTokaye& z<i{!Uqge3C#a@JQbCMb?Ut|bK6)GN&$IB|(?RFcLgQrnbQ?r@XeemGHWAwf8Jmo!I ziCTSfUpR)uhG_ChYKiV8LjBK5UEP`@KZ%14U%YtnE(FaN{61KC>E6A2-yw?tw{&e} z8v#;28~dYV&j(#WEHAf)y8KQdlE=#zA;2!E$+s&FxMVP4s9OC)Lqm6V?AY-kt$gOp znS(cO-0&l@#+H_r!;qN>%r?Z6>({S)k(^u$9SN;_wx_43eROnmkX#%d9=?OYHL7Ov zmu;pTI&`QxQ!@oJ4S#26=U*cuBhNB*v(BA6NBX%9fC`Kax$NivZ<;CcU{~En^m@G` z@Z5eRX#-nF@HV3I2Kw9JTbu6PyZ5IO;(b2fGswk{<^9`2EN88LmE^y$=aje38|ZQn zHX?!V0uEfca-|~*l8JQUntFSC-42I?bhtjifGihed9Q%{oL%Z#g&-3^eXA*N@5&!d zk*c!P<#JV>I(6!!;^N{mAi5H2fv3S>FmUP8r9QXYJqkKLY_tTIEAcat{gQ7)b0&W+ zOD6K^rLM(QP=J1xZVgIEvi!N=JQhWAg(<0xjI~1kk_HQ|1RdpX)7uf${&^x>b;-$J z8Tsr=5HbWg`paZV&2Heek<aDzZZB}*<a6@5aPm3%TsZlhd@h{)^&$TVFaTuxaQWjI RuCM?A002ovPDHLkV1np_nZW=6 literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/sym_keyboard_num1.png b/res/drawable-hdpi/sym_keyboard_num1.png new file mode 100755 index 0000000000000000000000000000000000000000..0fc03efa51f521d072ca42afdd2ef50b99cd1992 GIT binary patch literal 809 zcmV+^1J?YBP)<h;3K|Lk000e1NJLTq003VA001)x1^@s6@p{zM0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!%Sl8*RCwC#nz4`4P#nj3r9CWi(x4oP zD0hP!ad2V5&4Go<gpe@cz+&7;*j!v;llV`t3bL@eu*pg;<V*;I7ZOa5BG9A$-uW79 zC2&D{mzeK2`KF=m>+pHMzW&~iAG0jW2i=Y&AOL*8hX5b&A;1TG2=D<P+MncgCmCbg z#xd8?mgPKR_q+rAEztSf;wLL&yd+>>l9yzYyb^}?1fPlf1LUBvD$a4>Gx7!5ATI!a zfAA%7FNYl_-;YM4u|lEn)HF>w5D3h};jmt>*FTTP<8$#An83S5d|h_i743cz?Gf@5 z^7C{${dzbYezjamrBWHXeoVg0$F6%e{M*ts*7pPQJ#vhEQYw`)&1SP2kH-`40fu3O z#YFiL*1In|&WJxGACVtbtJRm~a`}~_C~L>j5~PX`F$3D&;Y$KyNJRWGMf;m<Hk;Y9 zgvnyk0RJE1UoAI@MB;I~-F}x$CZ7S<&Fydxa=F~YUa$AT34S`A&inoTxY1~w0iTDd zW~bAc=(>KcX&TR9e3QxKd#zUcG#CsPkw_$#&*x8oaR2amzPTXSIz|86R;%@%-heN~ zV)5f>G~)UDVWm=e0el|9C+ppA_mnnNIY$|RXFx}^u`+<q8~7_xr{U#-xyXF%6qKi) zDy5rC;PWo>FCCM>#5ud5W-`W5yYcXYYYDGho3E?ieiHC`muhY*JFrkFbO-ou9zJx- z@KHWM<O4ng_<#=q{{IV~Z@f%dmjC*LT#_Wabp#DN9>M2jhq<b%Gxr5WQFyU!=|kIy zC-5x+_d?S&-F-0_3{L3qLrf5~ZL_qlrEf#KAfGJzPj%i(^1%12mxn)uPsTSgpMWWO zfp)>ol6Q!FQ^4g*iy@w2*Z=wN86w}C$hV{4wzF4r<@>Ww(?aC$03Sl05BLz^13m=! nfDZva;6s29_|WzBQ-A>g={CR>ly%B`00000NkvXXu0mjfsV$7# literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/sym_keyboard_num2.png b/res/drawable-hdpi/sym_keyboard_num2.png new file mode 100755 index 0000000000000000000000000000000000000000..283560b3534377e6f41fbcb5539649f70bcf525b GIT binary patch literal 3214 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 A`~Uy| literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/sym_keyboard_num3.png b/res/drawable-hdpi/sym_keyboard_num3.png new file mode 100755 index 0000000000000000000000000000000000000000..9a3b3294b90d521f26ead3af4e1e2c6e7d1726ea GIT binary patch literal 2805 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 Hu0mjff!$wP literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/sym_keyboard_num4.png b/res/drawable-hdpi/sym_keyboard_num4.png new file mode 100755 index 0000000000000000000000000000000000000000..f13ff1ae91dbd24a1b557815d0d517e6a890be05 GIT binary patch literal 2647 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 FV1gf?06_o% literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/sym_keyboard_num5.png b/res/drawable-hdpi/sym_keyboard_num5.png new file mode 100755 index 0000000000000000000000000000000000000000..c251329fa4ed1ae82b16466adeea756527e13a20 GIT binary patch literal 2536 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 literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/sym_keyboard_num6.png b/res/drawable-hdpi/sym_keyboard_num6.png new file mode 100755 index 0000000000000000000000000000000000000000..4acba4c9103d51005cb3c4720605ca1048697187 GIT binary patch literal 3573 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 literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/sym_keyboard_num7.png b/res/drawable-hdpi/sym_keyboard_num7.png new file mode 100755 index 0000000000000000000000000000000000000000..2246972a87f9d5117476d36a48e1f878f9986d39 GIT binary patch literal 3664 zcmV-W4zKZvP)<h;3K|Lk000e1NJLTq003VA001)x1^@s6@p{zM0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU<@<~KNRCwC#TM2MfRTk|noz6-+A&{_! zumnOziXadm0TCo4A_C3~B8y{WE2)yW3^0Ylh?a^1Gh-AO94G_?mthHuEFvgESj4~> zATfc2Eo38WC!M4_>7H|Y?oU0w-ED`)a?1Iy>Qy)W-}cYD@7#0m3u?RFu2RY`Q#1+$ z3it~6N>RX9z*mX_z5>2d6z~=Bm2&TjPWqx&t6RPbpK340wsTbppDHDyb^^X|5;Xj~ z52}`{x|N_ebF~QH71TWdUytgK8pxl%t)wRcx)HS=)r4vmHbg0Iz$YvB4+{$mf9|>G z6054Jg6r$+{hOPcbsi6>(^>uf{p$h(0;-lRTXu|rZ&JYjaZyVgto|?Qlck3Z8Z@ZS z>C>kVcr&ooYBlTi`Umm#CTazr1cme6SUzol&SJ3`ydBtPvuT*Re7tnr-dmXZ=bPRe zV{%3(c8x}JuPDM}XUzbq1*b16F1t`|!gpuwRZiNgoH%^7tiL#pO;+u){u-$-)~%Jz z+w5eWPB%&C!dX_|zI{6%)ZqiZ*RmDMcU(=+$R9*TMg|2225QCU+1c4S0@vF-j5)Nt zCSP{^I{w|p<5*ciSp@L4LVF1av3(PNimFR3o6EqTS{V*fZQ`mD`q6xT!n`U$;WY^T zTq-@COd?X_y3EYX>*3+yzsL7rp1{XRKYG@#ZQHgzuU@_SNBO|(*RS8tYNx?NXRGFU z0(k5I21Lhev+`JVsI~lZY6dQdDb82etR`-67HT6u({Nj9t|0bz5*|(LqiCKQp0h!C zcd1`6_ml9k@;o&{zeZQ@FSmRfPg2RB<%0Ez7D_K1M&Fk#SuzI7=8kc0-MUr$-h1zz z;l($!!t!a{HW+iNpPygXrluyzUl0}APM$n@YVY2?S-dV2Z%WWBue|aEwZ|#+!6{W& zR8*9epw!jXRqold=OWrvvD2?*fOHIa7>uXGv(G*|p=;N!@el|EstP`@uArdc91Li0 zQBe^IhTFoXk}-yo;l1#}3*+PB;zke)u*j&xyMO=j#~-KX=H_0JojSK_N9BS8H8S4T z^1?e942Ib2*RTH-rzAuiG%YP{Go<Q2@im_p-sq0|czy%FROE*rez-a&CZ-?2wBv<r zn8$IfYieq&H*em|c^xG`KmQuPT+oIM8~z>}8+)HL7QnMnKk8puSy{Ge)20>s_U${# zYpG|e4~MFY1At3AckbMY`axDV6Asu&Ev*wkmTld-b=A(DJHO!#CrWA4y?gf_ufF=~ zTV1+z=?25onoK4KB|&0qF|WP6yu5Mz`0+{jsgx+34A2wK7o$^G)S%~Mr(e8yae^Fp zSetq2(xnI4+RO})-9yWF@F@Ed`zN1#vb(IT>^5Guz0qh48#r*_;68o&#J!A?l9KXg zK2-s*b}hYlMn=XDpul_*4Bb#*&FI>_Bib&(Y4{UP&Upsj56`+i|NQfRiHeHq1OqCC zv_6`bmzS?a>D8-O_xSku;b_xt+O%nlii?Y@&^L>XDEO(Tp85mEjixnz`Q?|V|BZrf zO?~_JjqcgA=ODy7es`;OehMI8w*1g3Q>G-#8+`TER~fLj66QQlDMuwZK_5EC4Gj&= zIQrK?8{hLw`_7s*t6=){=}&a()TwuJa&p|kg9o$8;ApeVW;3<Fx_tTaeM~Rf#Kgpy z)YR0OXdg0m?AT-gcuiVAEPf8a?T9`_u;Rbv<mBWtl~Fkh5YHe;OpT6?j+`-LMhg1A z&c+msQ}z%jN^|(|;cpi%T)2%bocP^3eE9INXP$ZHX-^EVHE9D09NN`3Pd@o%f9!sg zOxxSR2z%IP)G^=LS~*7x#rgR7)bnvKqcK1D;De09!oo75Ay{V*_7Peky0-9%BYLSi ze*Aa=+TTEXO@|I0`bdtlfB*i`u=qhlPy6@pPY3XM`27azRjxO13NF(#q9XK-yZ`?C zyR(Bez{(AX{;fxj9Fb0giRUancI?>qI2rT!w?=pG-&*kXtSUn1&Ye3}-r(H1a~DpX zI(1p%Id4-6<YWb><&bTSD0q1_XvSY2Lx8XCLR;F1CjPBuKMA~H!-mC&hK3p-r)%IG zPx9uLumw{srcXROMQy0<(4j;7aeobXy&)(lNH=82kQn|=FF51|K^?g@zShu=R#GDa z1`LQ!NJxm6H`usw<32%EG~Q(<Q!S|n;7kA;d0s<OQc^cqVI)x!9Bw`X+_C|jgK8ti z3=t6#A!y$PeyI8K<;$52h7V{cicSw4V<D`+me(tnleKteqBfwXQ1t1-<67ZYF5tJs z(W6Hvz(AU|Z{L0pv@iLrY6iT~MR3<@@HM={Wc9{Hixxc!O1Pu%jT<+LSYB4MqPW{M za*Mjc%hP=AX*{Th9-z9(utGg(;__#oefBMb?<1uTI4#m1mK_7Ij1NEj@W_rGI|g67 zcC8qy<qHN^4d4R+ni_thn#Zupg29%6j@nRLC?J16QRYuS{d6lRH;#M>e9v&GrUcMX z1swPJ)vH%;!R8b=iIlwp-x16}bwrFAGbTyiVArl)hXwuJ*h;SdQS^*?^a~a&m@#kO zJco><Sb`J{Ecg~wP#XIcT2}zIr)Lu<PD~mxV#HvwYI2B(x^++^-@g0qyBop%#k?*( zd;^^>JA72L8|$>QA8V$z*kBEBRL$A5XD_T+v0}mG$&;r+rrsA45)uf<9D&o2j7>>6 zbm-7OP|}5H+^OT$dC2uTj^vC`2Fby}!2vGhWo0YnrN;%5vkV$P6PC3Zj8nigL2I%} zmJbWBfCbhv7-6u$Y8b^C0B;gf6IRffBg2Xf@)ObpVmu>VDA6YR(fA1X8o0lMQlWk_ zQE43^lO|0X2q!)mWhgel_{bxV%m?`22=^J5y9HmAmtl`T{`f;~<fW;V^3qknMZuBf z?YH0F1UZ?-4zYsAHwnB->!-lTPEs>7GxOrgl`D@UYV}#WcI{j!nl^Lh%o&GG$wk0a z!W&?R<}W3sgVPl$`4b_Rq~h<6-?5SHu~{~7f02;mX%IHkv}4DPTGSlS-8mTHJQ%0X z?AfzNtXsG4Uy_q{hKa^Qt0xNydGW;;hrxkG+>wbxfxO)9g}hWbNpU!=#Mjr?#44na zrC=fdyIRPZ*d#>*KSaNkLZK9ZYSsW`3nJyt(Cc&9aXS=JR#sLHIbm#4J4nbLoGJ<9 zHb(v)O7apxWCU$&c6Rn923{>B)a<+ww9eWSCr(_W$eU;nbQI+zHPdSF^-@qZb?VgL z${U<NfBq8W<&}FRFCED}mY6EMgo&kJ5rbYX<cpf*X<JZ41Ixtg(A%fd)6+LmxZk^X z@0d5=d^3d%h^XYifde^+T1&{UAb^@cc^cHtT)XgR1fESK2VYWBaudN`78{oDnl)=) zrYM;Eg-Q`W)RiALG@R5J1jyB&%IIo54XQ?s8r8dBzkablle`pD8y4vJX3mw=a?oTF zvXWLoK{(n=_YZ9O71D;i|Ni^wprRA>43scx{`~oLv!<cM+0mm%x0Ch9qriF2hL0f4 zPJs4+LW%?B&825WMMdV%KmU9asHZ}5*f{+YK`$#2$&SOnDKA895S)^dl0@nX6lJ=2 z@nVi(B=**-9Wjq%eCef^9wo`;L|&d|t2e8>`zr+-bEsJY6P91^<^`kx%q(pdEWeSB zK=KK;)YR0KTefWJK)Dzwp~;YgSvz;`%-OJE!xsQ5V&uq?ldv&EVq;?mz|WLJ*l2Jf zjAZeprKR<Vl6QUd(MKoP2xuNXIpDasxZda={n%rVS<$Z;YRm}B4<i2nDSQwVlq+OW z?RR7Ov^fSWJPeB*EN`%T_wGX+R+|_&Z@9jhfv$$CNxyXI(t5mnF8dKz;5+yh7W_kA zUfy@G=zJlMUc-+17OZq3o}Wj%f(a8Q{EnZMy!P5_>##9z0jz9DN>#gd?ZV+BB2j}u z9k$JzH*bIEop+>riI!jt^7Sp8sB@HMrDz*^zZ2pB1L&z{+qP{h7B61BR-j0i;LB6W z&Mr(M!FTh=jT<*hd{|psYl5tL8cr>nIoTxK_O$xWldt1^1@)ofh1Uz}!Y*5%flsD% z5n^HBCAlk|+#qf%ovwNzH}AL<X^#SHj(y;P2a;fDL#wN+tutrNTn^eHM|*{-%);Xs z*?$B8gOJ3;#Hfsnj4K5N1(G3F3T)t@NvH2kKe_;fBoZCJSO8sUmzA%-{(1+V4?^w8 zFYi&FNSaSxg(%v<k+gKXq<3)_tPyU$+AtvE&5}k`YLvfc2Wb>;%0f7T?uJUao6(@I zX^^SkLBrR>v7Ui1n1bJb!+oWVq_Mi9_CoE88i(44$7#>w`-<y!_Rc?L`O+0#TlVUK zJXk$DwsPjedfs7`7nUz(HJx3YySo5aJCUk3p^er>8?|iHX%oW%c=Q`@ys->c-3h9w zGA%7_`jI0?E-+nL#UM<WUlIV~y|vBVduu#!fOX8BlnbZSYc3zdTMWF{*-M$?arP2+ zH*KY?r`1W0MrtEoyjz5^rR=9!@DYX3>e;JSty+jrx`HI<8X{L@+()|Ot(GaWCQtmI zJIfcZ6r~VcEmImcLE+fFvHbsmzuQsE{74{Eo{d2^d6PQv<Qmb{m7-Pk>o0a8bs#A( z>8}zjuJSYY`j4jmpNm~M(N@)+e+*@FLxFd9B9*_L{N;-BKT{O&74Vg!fUkhB6a{<* ie5EMh|N6>*1Q-C`aT-$ZEbKM_0000<MNUMnLSTYZ&>8{& literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/sym_keyboard_num8.png b/res/drawable-hdpi/sym_keyboard_num8.png new file mode 100755 index 0000000000000000000000000000000000000000..d4973fdc900ff3fd83ef267149fc58da64cec42e GIT binary patch literal 2904 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 C%cjQw literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/sym_keyboard_num9.png b/res/drawable-hdpi/sym_keyboard_num9.png new file mode 100755 index 0000000000000000000000000000000000000000..49cec66f4d277e1ec6da50a000a193a5b1b400da GIT binary patch literal 3860 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 WCQ>=2A^+|G0000<MNUMnLSTZ`lYq$p literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/sym_keyboard_numalt.png b/res/drawable-hdpi/sym_keyboard_numalt.png new file mode 100755 index 0000000000000000000000000000000000000000..3cc5311cd8059b6e9f1148caa191e40dbfebb5aa GIT binary patch literal 2919 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 Ru`vJu002ovPDHLkV1f#`wCex> literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/sym_keyboard_numpound.png b/res/drawable-hdpi/sym_keyboard_numpound.png new file mode 100755 index 0000000000000000000000000000000000000000..d091339296eca631931f1004e1e46967783eb9f8 GIT binary patch literal 1600 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 literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/sym_keyboard_numstar.png b/res/drawable-hdpi/sym_keyboard_numstar.png new file mode 100755 index 0000000000000000000000000000000000000000..e838e169f3a96fc3957ef9f6ee85fda18bbd2561 GIT binary patch literal 1749 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 literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/sym_keyboard_return.png b/res/drawable-hdpi/sym_keyboard_return.png new file mode 100755 index 0000000000000000000000000000000000000000..58505c5e0c41c0502fb660fffdc210f9cd3d2374 GIT binary patch literal 1123 zcmV-p1f2VcP)<h;3K|Lk000e1NJLTq001@s001)x1^@s6+=%;b0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU$1xZ9fRCwC#S=~!hVHo%99QWb0S}ctw z>P0~x)Qz=n0tKC-OJhiM-GzTaUv@XTX>_TDNJha5VFWQ73qLq2<V{9`v8$N6x(Fia zW9i!3c6wfU4xEnjoOjz%w>S?xuyfvz^ZwrV`S`uh7(oy!{zoxX{HLM=(}C&0bYMC# z9auRFN7IR6nB86%`5=qy6E{B#ng-2)3TljrE5XespiH3Ep!-10`2II&9P}4x5`pd< zuwuDp4r?H5ssXKETwL@f5{XS<X0tiz^?HZK$H$l8@f&DLbzy2+?D#zAt^z%_va<3< zkV!NeeG6?T$Z4w0Yba5_ujV+;CU0;!9H-DcD>VrolqMxQyb&Fq_`o0H@Irp}O2%^8 zY<A10n@lD%&d=@&Fa%{p-`I~1Pn`Wbadv1<<q1wH46`cj+T<|_C}KKIJkQ@rr_=8u zk;r|U&2|LdS!fobxfB^Z#L#>g^!)7X>`SS$kBp2Az<UCY%VX{Xpw3t<78P;`w6%gB z+R5M{J*md2sj1s7EiD(N9V`}0Edn<bu;E3WvY|*&WOo|~sP^{uOY%-&k}R!H$mTBE zbPYv<YMhvu7{~>xz+GoBpcx?{Tedq)&A8%rClwBdZ+3KacvQ@Ze1n4+lcAWK<fj_Q zS9K704$3=ZKroGDwFD-DBH_Ft6bjww>gwuK8nCgkL0E(x$!m&YesW5V;o;${Mi6<2 zcs%|CbE9U!#NFHk1$^zA+wH!rHpp(bH}&`TyR24g9GFB}sV_;$$z;;(@pxQqZEdZ& z`mC+3eMSPD)+*eyXntpc!QfM2j|9H`gz!jmvZ`yQ1V%!3qu=lM?G-3s`RmQi&2G$@ zoL0cBpeL7?mzVYm7?}TKSi^CoZA>|``z^Atu)z2B_CA20UqKTzA)gi)an|+u`T6i} z0!o1d0)dB4r}Gv(e!?4chH7vr29MR%)em5L{_gJXJ~Tf&`Z+_pZiePIfegM<Ow91n z>peX^SJcLhjg9d$Gc&Jg!aaOKU|BZf^ZDKr>%i0bi8YRdSj3?&N#w!qMJ7*(?Kw!$ z0kxeU92|TEeJ_9>B^#om^>`Dg#SN^&Jj)ca?tHH;BDgvN4k*=gC19hYqeEy)R*_n% zC`(I%wT_AcQX_IR{s=yBZ*p?-g_3z;;34IKoGP|UYlgH$S8H}J1sCh=?DS1fPX`r% zl~sxRpObUBTz7MUgMg8dJAFCS?nQ8<co`$$=H})?(hfj_zR*-{OR?r5uX~*3dHxyP zoRg7A<Q3ehPGf{K6gYRm>!!_Pw0E_f<u^Q8LF)riT#!b<r2mj?DVXkrk7)v|97X>} pQwOF4(}C&0bYMEL5|qCJ3;=$zwbq_D7@hzC002ovPDHLkV1m~F6UhJo literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/sym_keyboard_search.png b/res/drawable-hdpi/sym_keyboard_search.png new file mode 100755 index 0000000000000000000000000000000000000000..e72cde3bb6b1265464a78f0deacaf2143bb526c2 GIT binary patch literal 1623 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 Vn=0J*n;8HA002ovPDHLkV1l=p4qN~L literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/sym_keyboard_shift.png b/res/drawable-hdpi/sym_keyboard_shift.png new file mode 100755 index 0000000000000000000000000000000000000000..8149081786d9a6b6e2dd4e636d64c3bab9f37be4 GIT binary patch literal 1495 zcmV;|1t|K7P)<h;3K|Lk000e1NJLTq001@s001)x1^@s6+=%;b0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU%c}YY;RCwC#T3<+8XB6*EViIFalh{@^ z+f{?@!a72Uooya$x?1$Xsvy{h$@btX3^&*i83P~c9^Avg2Zy+pp$~g-8|ctID7w{w zK1|#mWJ(Ir%|9C|jWyPoH2=)qIqUh##Tj?6dSjFvIOsk1`@Z}8ec$=cIrqEac%DCT z97S>Bm`aLRidc$RirAh+CAJ~Qar>P>R2&5J%NG6JlZZ)Csswq37Bn4H4H^awfCl$N zPIgzs*^8&NLP+XVMMZ^uVPWBGtJQiDuFaqtx-XCH25cKhN&N++&RQ&%TPrIoe}J8z znVI<&Y!1+u_DW6^UO9*nSPg-9xLmGrULd2Rqy1pN0(yqrlS_JH1X4|)uOJB|6NyB^ zJv}`?GjhGXy<fro%b;1b*SVx6M&MKg_A-KJMB3Wg+QD{bXlUpMypF|UTkY-bpMmWX zs8LEFI}Bnf0(l8RBX}e+GBVN&wrfP9h`DAs91gw@0yYdNnV`y~BSxSQ+{OC(`VY|c z5WL&%{!I`p44~)o^72ZSmzV#<`#zt~TV7uN7T7JI8Db)J!iW(V1Z6>x2o^zmJf6RE zb8|~EGE#&@@;cDG?d|M#`)#nlLivt6bYcVo!JY?j<p>hN1_A+JRaMp7v=Vrq6HLOt zE8E!E_z_##`T6-rdcFQS*kAs?G>`~lEUf2bXJ_9;a0oIA(%jtq3D~V{@5I@QuXl8G ze9i*Q#Kgoyuw4bs-YpHtO^k(g1aWn8a&n9T?C$Qq4>lX92}#6B2`qZrhlhv1V|@n) z2fslZRx6-sJCT!<7)KAqhZhVC41CLgjgOE22(~vsPcvY<Bylz|*QTbXeqm#Db#=7~ zCnizE*lgoNZJnK+Uob$lPn^PXNn|Z~79-`-($XAr<))^lkI9t{+tYwt#PA^}L0@ZW zX}O0W5X|c8>JyvIc9%+}^Hh15X^$aEg&-|x2yhmy7`87gC@6UEDF}||_xm?%YHI4h zegRZ3OapQdQ_w>$)YaA12ZO<96ahn}rKMkj{asKD+c!a-6bP(DKrL9IGnA|`zulnr z*zayxS=j?f+z}jiZEeltbULfSp35Su9K>D}wk0Jcx4mBPV_t;7%s+-cuhPol7{=n_ zVh1l$Fp=ly=id-UN;!z>91e#SX7Z6(U>h47PslxuG{)(|!opHsg3Qg$Jru5*7`&3- zpc@(*a-i1x9>`^aD{7z~eBt}}e<&2vWMpKVtFErT&TKT(EC47WDQkpdj*X4|u2d@h zDwQfKIEvs=H5yGA0#cyAzu#6_S^3j}pLvi(05HBNx~TL~Zp$-xeF`@Hn~WID9!J3@ zi|(6&e5P>F+S=L&v$L}}<~q*B_Gi*j!UkwmE@Dx7NGMKKfa67AhMx*ok!nCBwTUDl z*yIR1X|-B(*S|nLJDh{?L^diHF<w9}y3>gfxDJjN09On!o7rs6gf{ng8#p~Z9Vfy^ zdLRcp2Ys%Hpdto?!7rtgPN(ye%O(C?QKX>Dg!}sXT;OgWuCK3~At!0$HCC(D&rBxM z+Vu3aM~a&r)=4nGxVRX`h$iQ`VM34JD4>|2S}2l|r?5TMp4>rUmSe@zzzs8`bfETW z$?l2@sEgH-a>(=ciexADA1Nv-`V{tD73eMei`Pl>wPim7(GL^z8mJc+h^~)5F$np3 zdN;%88R+`x6N4i6-f{S%8G|Z4ENOP1w~r+|u?W<PlJ*d_k0iS*hTLxVVry&bJ5W;T z@trMRL#XOQMx${P+tVAvfe9z}Cr1*#L96J+Qb$J#yM1WbB0~5!5Eff6ioq-gF;3v- xVmk4H{lzDo*in<z4_H#fQp8fk_9XuZFaVj@sTQkbKBE8t002ovPDHLkV1ia~y3+sv literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/sym_keyboard_shift_locked.png b/res/drawable-hdpi/sym_keyboard_shift_locked.png new file mode 100755 index 0000000000000000000000000000000000000000..31ca277181eaae1e148a0f67a0e56cc39f347069 GIT binary patch literal 1119 zcmV-l1fctgP)<h;3K|Lk000e1NJLTq001@s001)x1^@s6+=%;b0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU$0ZBwbRCwC#SxZP8Q51EOn8{C@SZPTA zifKayAr)yOwCM-3vBXtYmhJ-5Lc6uQ7FS)kkZz@g;zH`ih26DwAqAnuMHNefL`<P# zr7=xSOeUY#d+SxEA&E0F6N8-the>AM=bSe;@7?#pF~%B>A~X$06sj@Rm}*QlRuObk z3vwKH&;dkZBe=fg=von^EK#}|MTG%q1nPkTFbPZ@#GK-xh@)4E^oGz>tKaXxyt=yj z%H?uhfbT6po}Md%a>5Ek%Bn9ib-Jys&9}C;7KZyQ6bgNUd%ZwMrRF5*Rl*pF<w<<+ z!otEwCc@0j%p17h13W?D$<@6v5~(NAJ!paz!NkPGOL*=E9;e?rSGUGUoQ}l0Q9LVw zTrQU%9UXlJ<vM{@ITP7o7}Jr+P85yeSsA1OgM)()p*&6~O+ank86#0B?jnlKWHJJi zfOtF}>+9>g3-#K8W+^ju&5V&46xEI*e*u^btgo+sce~wwsDGB$JMPepkq8s;9EwAc ztOA6?;jb2p#S876+;17Eg|Xdf{gmBqzm4M90Wdc=_a5510<@P~29!3oJFTOLtMl{o zA6OMIJw5#z+Uv$_1=v{3oRY>k>J&TgMlr047#kaV4()aUZN-)WrHt*aRoH14ieObn z7BDn4^cdQA0h<e#0i}##C&z%7hKGlrpa`Y_5{bmtz`#Hd`f&m+;$=VyV;btj84L#R zr&6hHrXZrx=!Vzp4M2bAY3AjWFt(T2`h31So12?ISPg)?f{u=k8{(N#31cRY$K!&L z{K9I8m6eru;<qM6FDLaRnA<rUFiuWRdK?bNEil&vp~&a+`Muc3&yfD{X0!QBAP~4N zHL0DQo&BuUY7;u0E-UJfA$gt`VBt=}*5^fkfB#!}^f&zX)hpAOj#3^oU9|=441RBg zAN|eo@$sipjX9mp2g}RLOYkv<<5TcBLq`d5U;@8OF(&uSBTJp6OJoJuUIs?^mz+io z2E$Ldd;@M2IR{~6HcPDTDV3<he>xBk9=ud+FA1TTlw-_jG~z(~CRXKur`qR=C@Rz3 z+?<e8$z(DmDCBB?t|$>0GQ!l<)KW5;d=!htS_DBblq#&(>$hz-TXb=8aYIg+9o9)O zi$o#<&S*-W8`kvrjV2TuWDD2itW#K?a!;;Wnw5BCjSz-rITfgUW4(u>2J&LPtTkk( zyr$lbsedD>##Cd<8p}hLF38FfcFO1L-B<>4#Vt7%sC-?gRETsa6pD<DjNF5i%7S~g zGFg4vYPD`*dD<~l4RZElat2FJyIp>tKN@mm2zLX5)O=BjW+jYqqA-_IiHUw+tmekl lSy45n8dHt^7smbwFaVu`B6+?&A=3Z=002ovPDHLkV1krb1abfX literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/sym_keyboard_space.png b/res/drawable-hdpi/sym_keyboard_space.png new file mode 100755 index 0000000000000000000000000000000000000000..3e98b3014a42d082a1af04467894cb2a01e542f4 GIT binary patch literal 371 zcmeAS@N?(olHy`uVBq!ia0vp^W<YGr!3HGnbo|Z(Qj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS=07#Kx8T^vIyZoQdxkn6AlPg{28$7f3~T$W2*zuWwF@S7LD zT)Q|DcQoaSU(9{_Uy&uspiat{Z<T;kx!c#fo~#B9j64Yp%n}C}*l;r6ut;sI(^{(Z z!(-V^cioh}z4;qH-29=)qR;gBAkWP+cBdxU-q?LA;n9!kgu<n1*>7$CX7ud*w4m>w z=-D~Pw7T?dlan_E<tMAJyqI*{uJ6A5iNd*&C&k43E&eH-RoL{>L2GK(sW%Zf*X~&8 zT{I#4l*-0e%@-5*{jF~N#=EYh^G+P^UFK-1C9^d$EAoCmOL{#~qExObRN*WCn=7jw zF5j6el5_V`&F<}A+@rNx(`y-+BSLLiB^Z|9_CE5zS!@X~6d62S{an^LB{Ts52=<xg literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/voice_background.9.png b/res/drawable-hdpi/voice_background.9.png new file mode 100755 index 0000000000000000000000000000000000000000..73fb0901e0f978f5a7e1577b9b996d2778991401 GIT binary patch literal 2349 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 EFHZ>ySO5S3 literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/working.png b/res/drawable-hdpi/working.png new file mode 100755 index 0000000000000000000000000000000000000000..8b51ed11662e07c6a828fd952c5c70ae4cca39a4 GIT binary patch literal 8636 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 Av;Y7A literal 0 HcmV?d00001 diff --git a/res/drawable-land-hdpi/btn_keyboard_key_normal.9.png b/res/drawable-land-hdpi/btn_keyboard_key_normal.9.png new file mode 100755 index 0000000000000000000000000000000000000000..603bf0e1592811519389ef0557df03047967e942 GIT binary patch literal 737 zcmV<70v`Q|P)<h;3K|Lk000e1NJLTq002q=002n{1^@s6nnbYQ0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!gGod|RCwC#oI9?<Fc3v2A>tDd1sw%F ztDvHyWrM7RhAqGf=#W5s#5a$zFbcuWGa`8pGIt~k2^^t0x^q2&*j^Mxly`WZm;0Ao z^YC)bAq+$6bUOLd`r?>Qr=AZCZUInk)&WpZRK^h`-`H$6v|g|2a5#trQZARN(P&V; zUbll<tya`*Hfb;zP`lmcC71r9efSg~;xV7kX*?d&a=BD2jG$Oa!{Lys)vAJaxm-kn z@_k>y>G%6I8jb9r&gV1LYBf5YPHIR5#lZ|X_f(JK3CSU1Rl7m5<QxTtTY>vzR+tn; z={#*!WCWEQQX(y9fC8wTL78Al1Lf42Yctb^F0J9zxkFJ|DGDC-qM0ZA3kju{rYe-4 zgPNSoT*@tsRu#-VYeh*l^WSm?sCPk0_9!R{rS}h@;!UPBP-zV|`Y228=%dg_!OTC~ z%u#v{igLNIsGw{sA4(6Umu>0c`6$Og>Al+?NWO(}_9*GAp3$SW+by0kcL<m{Kmim$ z0aOt{g<<Fc13L4}I&+jBJPM!y>Z{CLKlB+N65_X<1D6XWfqGd{E*BRKR9em`y?07a zIw+^o<9%y-lb_zhCSv)&<s0AN2t{S3sQ8ekC|ll86g(<tkJ1xu7Ze#(JohJ1d~!y& z+eIJsY9FN~SSpnsI#vma;+&n$oF@lCpnm0JNRrMy(79`o#03{5C+~JUb>s*`;&Trq zf?@_qRXu>>W85Z_3H5qCb?S}8BS((Mqhi1;9zJIfS2I^MSV4=$g7*8ps4cQdV3kUR zTCLW-1ZT6^bLsH}Nk@&CKxtFAmY$wuFf;L?N-uf(mJVr;1eyK}zA{j+KLQK@zAaBC TLb82=00000NkvXXu0mjf_A)?` literal 0 HcmV?d00001 diff --git a/res/drawable-land-hdpi/btn_keyboard_key_normal_off.9.png b/res/drawable-land-hdpi/btn_keyboard_key_normal_off.9.png new file mode 100755 index 0000000000000000000000000000000000000000..6ddd516e790627b773405917a89b9da4feee36c9 GIT binary patch literal 941 zcmV;e15*5nP)<h;3K|Lk000e1NJLTq001%o002Y?1^@s6!$f9n0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU#Pf0{URCwC#Te*(vKoD$mV-ATUAs|BH zGl+;t`9Z#ggkOLhfdmL~nj7BMXa^auZ47JUeqN6>TCp0NDyq7B%rwgFb|bHcq9|W) zb5lHh4^>sETCIA|#>3I?_mv0*WW<6%;>)@e7)63>t?hP8o6Uxf$0JL?i9~|3*(_x; z8EYb|)r#`@JhfUas#Ge3)clF`>@*HA$Kx?|yIoo?mjbIP5h&4aw<(oM2~yYVl@*al zBqG2!n@#F;I@UxkmkXuSX*!?JVsa#c0gS+A8zWd?oGh}^Hwg<&w;x2HfLsiPxF{lV zSh>WMh;iE89Fl*Mj1{JriQx5my{7$sFBFSLqr$UDiC&X(jR<6&&1Rz3fB<}pdV_4I zX&RNw<-3=CCt^lMl9)^;bUK|xde(pXSObNo)2XLq?5u8@we$fmFGO7d*km&K5PbI= z#bQD!*vwdU-7JU_+gpm@1|R`DS;YbV4>G&mj_{1*yCP;W0;|YR;aNJyI*{_B{=60J z#uN)RQ0?uA0DL?izgxg<YuTyd$Xb|4ugFYR_QD#ZW9)yt*xEd+Yfpn6^KdwbY=mG& z3>e8^J=6k;TrNk8#lo}wmQ}DvoGOA^QLonpP!K~J26+6%>q4PGwOUQAGrQi+`F5~l z04$0jz~Wf|)g8qU=@_;HLDUhD^ST)Ry0U}Ja5xloqEsr0bSo7ZjYc2ap1efFZW|9Z zF#UKYac$G+=QiHe-S2-xL|?tR5wY7@II1IDh92A7+jvga`c)kXgWd074}`UxT<8}O ztIQQzi<`BAdp;7l^vijR;y6aQXD!nh(KPKAgcymas;Y#+&M4T!bM}x(NaV#}m*)`r z$zeRh6mxPRCn7H^;^g8_6S2b-Y-@2R;>cP!W|Ms%ULG~SoL;~2=zCKBjw1TWO%W?x zVT`bk5xLOn0zZl9vHhJoA|=ETw7#NpP(*elIkFZO<B(H!JaB3Sl-T5ltQRb1T#SYQ z*~WxU29894(WuG;5p?zRdOd118lq8{W0xt8!-3J*f%NdR3n(z3&&9bp7XoI4(4<f- z7Vj1t3<f`~g$10tOU;PLptrP^Tx1eV?1y64?Z)j}NV6{!(RzjPPk;dcs>4Q{NHt&( P00000NkvXXu0mjf0<f<Z literal 0 HcmV?d00001 diff --git a/res/drawable-land-hdpi/btn_keyboard_key_normal_on.9.png b/res/drawable-land-hdpi/btn_keyboard_key_normal_on.9.png new file mode 100755 index 0000000000000000000000000000000000000000..65fdeb353f8d1de9d732405dceb11a9cc2f4e27b GIT binary patch literal 1076 zcmV-41k3x0P)<h;3K|Lk000e1NJLTq001%o002Y?1^@s6!$f9n0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU#)=5M`RCwC#THkNdP#8TerG=IuU^cUC zsEH3g&BV7o?ZqV~d-V_4zqbFvhb3m2CNt4Q9~Q%WGEQNe3u91z)7E|scPY?fAr!71 z-*VF|+zaP$zVqE%`U#e0A?y$Y!TuOa2=y~mRYg9Z51&nlQ79Ay5fKR~3MA~*MPw9- zZfe!*b?CZ|PN%~qU|E)tN~NG_nm>_hwTg5)jlI1+tgo+wO7lF*b5I}9D3wY$K0e0n z?X82=v-}o|MeOhIBaukJFbtTc$rTY%6cLNX&}y}CaBzT)jSc6uv$Hc{KoJ6;OeWFm z^_;;Y5emXc*v5K<CJYZQs#2eX4<>7b2r0lOlR~^G!f^Oyi6@ca!Ap$8G!>C{yX_c` z6q6(gilR8<zac`vE0qeY<Rwy@6)33=+BF5$iws2l5i*&~T`n)2h!+_Os$xW9ZR;nV zzq*8?3U(<Za!s`AHz*u7as4fiY&PqZ$S{cn+S!?znBm#NTCIjB+rO~&x{hQj4KYR= z6ur5<CTk)6M#opVgsW3&V56G#hRCo@r3k5^t<~^i*Fq*|f8)~VJyJrp@N%z%qw_j? zT{RR{CQ`)9Bjk<EXBM)V9Mq)bC^51wZYz`NV)e0!Ki`c|yfT&9-T#xM=?6)uiap}~ zw=kB{g_dsPx}O5GPOWjO1WGM>6Qh+tTu4KS$v)qfU6$=XqglPn<$0+Q$n4Bm<=+y_ zriS>6<`{iAjGjHWrQ@d52yG)BXLd1&A~deg1)P59px4kKnOVp}4vP5DxyFnPI=Y50 z@7mDIg6H~Kj;YPg;?rRTW=F>M?o%XH*;Yn`X_%<%Exdnwfzyw*xon0rIih?%y2Ot{ z6|3tj&{h=aw=G;<=qO({=XN}qh{(8O{8h2;j78j&%=FN>=#%gLBI3S@;f;v<I`uxn zL%6X`eT?V%?r>@L|H|x<NUb0X7e&OcaxGJfx73R6^O4AvU!IRBfjz=|)$;U6qtURU z;1N+(Rbgp%j?BJ%&b}nFBr>7d*>ec@;358nNeZ%%Cn6Io5@hkbiHyS(?bPC(NTAfB zM`o<=Bg{w56PMRM9(Pa5{ZYg{cvHj=*U}^0dxTB&Td+tXZfy5wA7K)*77Sj9Fie5X zPLrtzi!}=H)C$P3dGxsqHfPf0X0z#ZnL6DL{Z3Qfh!DnMRR)Mq>+H$N33hgNoJL_D zyG*;?u7i=V4!rK}`y~a+<+9W2$5SukFd=F?%;j=-DK^sgON?m(Pu-<nM40J)Q;SUs utCcTQg2TDy4&Hu+^!hQ;#^_xC3NQdwh&V8f<kfNj0000<MNUMnLSTa4uL`pO literal 0 HcmV?d00001 diff --git a/res/drawable-land-hdpi/btn_keyboard_key_pressed.9.png b/res/drawable-land-hdpi/btn_keyboard_key_pressed.9.png new file mode 100755 index 0000000000000000000000000000000000000000..7ec915fe8c345d3eb2755dcc953ac9b8a9ab577b GIT binary patch literal 733 zcmV<30wVp1P)<h;3K|Lk000e1NJLTq002q=002n{1^@s6nnbYQ0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!e@R3^RCwC#oWYI(K@f&(m>@$)Tyd0m z9Z%rmtsK3BXCZD5juL_(m{k)kGd(>sZFk37^;goF#CBHd%in*OrpxhtpYjgJadLl? zTOLlXIe4B&olYlzTK_nv)2UMc2D<<#JL>=_DC(EP)nC}{cC_7Y>2x}Y1X3!Ms8*{{ zwOUOEwb^W_-EPxhFraR?OV{g_UQs^0jSm$HG@s9DJRZ|xv7marZY~d&%O#CQBWg4n zbh%taf+`k^v|g`iI2=-|)e8PLo6Vevq8JWCI-k!GP@fKqAt_LtD>LBSQ$30&FeEi3 zDT>t;>~MwH9_JfDg@+_iYUpY*DoQQ2@Q@N|IYUuURL+XxNzxT%4JwQ7Co3xagh!<) zO63hu0QF)}rkzjPu4i@30!4je>8VmdLh$FiaPC&1^jb<%B#9%l;FJa`$!;<|N+PJI zJSwa#De<E^3ZURoiJ+`KO6snsP7bj2u=M_5=}A4|%*q){59PrNJPJ$i36GLo9>C0D z=J2TZ_b7nUK<)Q?-&C1PJZ4eH!6s1nv8ydaAOI+U0;o3**YiBSzU8AlNY5FHvQ-oc zPACdy4p0CEPymGhD1ZVefC4Ch!iVB}gs)?%AtADIhN5g0#ho*Hy&e>mk#lV6sU``0 zm7kwdKyltGcf)o5I4GXT!*$)qKakQOf^$~+>r-5vD)(nm4P4YWr&1K91i}n-RYgE? zpO(pFLj8W9DwWEklZF&UF{s1g5HMgCkvR<EX66A22D4hN=y*Jey3nXYE0@dEY&IWD zFxJF|<;D{v^<*)DG8wvSnq)9D@ewRNz5A95{U<@69``SUbq2xnOMn3YNuGxP^(1eo P00000NkvXXu0mjfcr`t% literal 0 HcmV?d00001 diff --git a/res/drawable-land-hdpi/btn_keyboard_key_pressed_off.9.png b/res/drawable-land-hdpi/btn_keyboard_key_pressed_off.9.png new file mode 100755 index 0000000000000000000000000000000000000000..43927172310d4d3b24260b4e1ec2280596d4d33b GIT binary patch literal 964 zcmV;#13UbQP)<h;3K|Lk000e1NJLTq001%o002Y?1^@s6!$f9n0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU#W=TXrRCwC#TFY+gFc6)DP^y$yd8{ZK zP&X|27ruZ^|B5C5&|hf*v0;G(s6boF8*+QB>noF*S1$n*c_b@sVv;#Nb7t(shT}No zwHb!-{TRpa^cl8oQ#PCR9*u|g`ub{^<P)>}0OC7z$v2GnH?+RKzGyTW(R@Bv(&3w% z8w!WRba!{R9mvPW2R%GIP`O;D$Hzxnuh(>r^n9=mOp_Xo234z7YPDJvjYj3^x7}`2 zrBb0-EJmx<N=YDrK!D!g-|6Y;i87fCyH=~!j15NMJU}d$%MBox1_KZr2z-H$@NK6? z&;cNLQ;89<!7`NjBS$$>AYxMq2ybpSq>S)T5}VA#^SJprY?n_*GlFxyUXO;uAxqJr zP>AC3IHgi48RhCRf+LbZv)QD#w>Js~gUs>qcubv6hx+|K<#IW)EXy;7j$#CzWQ;5p z3#!-aG?`3TK@vwFtbifp_<TOkKzhlD42Zcc_C@r_UKsVy&rjyGJB0B6?d>fM1_Q>H zn6^*d-1<C9BLIRC$Mj&E4sae!pjai7$&>3v)W<;@kpaOG`q&rya31|+4^jdM48;gp zYFAxBe_pgs4Q3w@b6<8q!woP&gW$IT!Od~~{{DVz_B*9ce$5DG#h4v~6`p#<-^^w+ zHV1+}yjTMKS7>p4z~Ef5SfrPi7nYp>hNnVYOQ+Lp>W{kOg+?%NqHhNQan}-l9t*BQ zp+Mbkm$3sDkai=H2&?S4?ga>0ojbZ9ia)~NsNh(gVOqjR3EDt<K8J0a$nMpM3_Yql z+9m90jfl*s^xEgwb>wP+?9zxTKn~W3ENiI(<lwBOLrb;LI&^MxZrkURe?!Yx8u3MF z@s28|UoCd65fwCYbwIwCrjD$#t2mA43ppte+qUtt%DHw%{QFf`GjeJDXdoJh2BLvz zAR34UqJdn&q*2^qz?&+|++99tMpR?Ok}W6k(I4A3a8v~d{NldJwuk%xf{tj|uEcMk z%AQ8}#Qk%3vD~Qf*_rRD<%@k)7~um9AKk2M0KwMT=jUfCl}haUIp3VA3L^kAolcpL z@O7h)xbGK^<2yPw0;sZ9mx02bu|y*AFT{TA`vqO-pwc#384#J^Em<dtn3Ole9c!Yw m-$Gv6{=Q6f`^b)e1Q-A#zPZbN1g+ix0000<MNUMnLSTaJhsJpT literal 0 HcmV?d00001 diff --git a/res/drawable-land-hdpi/btn_keyboard_key_pressed_on.9.png b/res/drawable-land-hdpi/btn_keyboard_key_pressed_on.9.png new file mode 100755 index 0000000000000000000000000000000000000000..c2cc3204482d9ee2a41d3bc2d4d5a3afd7f5402a GIT binary patch literal 1055 zcmV+)1mOFLP)<h;3K|Lk000e1NJLTq001%o002Y?1^@s6!$f9n0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU#!AV3xRCwC#n$2$7KoH0O#x@4?kwE$Z zBBYh7sD~b^_E4#hktfI{Z<S--AurHN4!yLhS`exlQIY0LR1gRTW4k+U78zp*iDI%K zue3r6llA=kpP5~oksQZC*h7*eb{R(s^%}aaqg*bBPZQ#(R4P&oD>9T-fMB7El~H7M zL#x~EqSNVMFc=8wa6BGII-N!;m6{IHZnv?yxryD~U2Jb}!?tZKqCC%?2eBAxwHgi% z4p6Vxk<Dg<%kRm_3HJB*v9`7b%d&(7k!2aJRttN3dnlDk?swH{RT@)-oF|Cka5x6? z*f0daLC6>Kk$jt(BV<4je2Sz9so_?r*hGzT0zte}BoIFRY6L36L&-Zu8MA!4mm*Z2 zX_}@9RaKG6WG2d?(29`bRN0zF1yZ^JDbaz`&*0DRGB)(rC>D!Q6h#b0$S6pWe!q`K zqXBc{2!)Sdpy`x+ROtYt`yH)s=Quw8fUT{qP++`@%ncGme|dR{Sm_8a-v2~0okdKh zMahnZW6oilQw^t|6<k~-Q79BbQ^fmu=Nut5hVkDhzCFWwJ_lKud`3#d9Z2u$IREsD z+2`Ec2}2R?*S$a}H<C|V$gSt0ClyzTiMz%8w%1Lxb1j&Cb5!$%0-*);lnPyAAnNq^ zcQg|ToqgX&;KddS5>&a|yK7~jN-{J#J|%w1|2|^Oj_kwOe`f7#b1PzXHemN8sF{?T z=>B01nZ3cvaqr1!9brO?mtuDz;~CDY>`<B3SeR)yRqKB#B#2(8kJBG<#D?rZ2m8U* zp!1d2x4A(4dkG({`g7FmE4+LoBdIf|Wwy9wquVj?>#Kt9S&mi+{g^WM&h8H{@Az9! zp><|J&sb13U|;~fEA~HwROk@i8-3>-38J@qakP6Ae_hDI@y<EoRYs)OKKI^7mKNl; z91#Iz?i`s`wL}1!yJ|(DC0b~S`pkZtPpcbRE0rTF5n9|(<nkLOdz2$0<jB&2Twh;1 zK|8yM$9Vp@8wjH7I=xA7mR*t6{Z%(o<gxQ70*OE(kO(9Ki9jNd2xJKkjouCeK1F%V zo#j)ch-iu^L64L4J2`dF(WfXN<QMlXpo4A_gbZo&4j<k}D1sW~6Zg+=qWGz)WtKOQ z@rQj;6yZ0ReDtd_212c~hlhvQ+1WuNkr*{+ilPXC7>42cNWPBQc>8|I@n*B>wl#^= z%jk#FG!6NDeiUL8eZM3Z8Hm&-8w3)R@Jf);L-$%O1kfLA-r;`>`Pk#;Wuo6l_w%0s Z0{{<_AlR|X^KAeC002ovPDHLkV1g0P?MDCr literal 0 HcmV?d00001 diff --git a/res/drawable-land-hdpi/keyboard_suggest_strip_divider.png b/res/drawable-land-hdpi/keyboard_suggest_strip_divider.png new file mode 100755 index 0000000000000000000000000000000000000000..1a03c52e64df4681aacb8bf1c15cb741eaf0b568 GIT binary patch literal 172 zcmeAS@N?(olHy`uVBq!ia0vp^Oh9bO0U{@7=E?#o$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1Gex5FlAr-fhcGUd*v_5|SjDP?CpFePbVNnA^ZxREu3D-iF zP`=d)lh_{lI%*tL_gKO!(PVMfCBvaeQZN6}7hSvCk_Q_&IUGc$urFj_;$fK5SXEbR SE_V%RGJ~h9pUXO@geCwk*Ei?@ literal 0 HcmV?d00001 diff --git a/res/drawable-land-mdpi/btn_keyboard_key_normal.9.png b/res/drawable-land-mdpi/btn_keyboard_key_normal.9.png new file mode 100644 index 0000000000000000000000000000000000000000..ea2506c6d6ba4fcd87dffbd091149bff561553e2 GIT binary patch literal 818 zcmV-21I_%2P)<h;3K|Lk000e1NJLTq001%o001!v1^@s6n5+6900001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXV& z6ErSAYuLa500Oc}L_t(&-tAh=Zt^e?oQ)kP9C(g!qBq|E#DybV@*YU!&v8%A=NQ`w zqQw5HT8e~9sAoDe%X(8%O5xo_MDPC+fZqDBQVNH|;U|DZTXkJihF`LN4H2$iD5cPK z9fo1RPvqv)E6;NXAwWcPB2ClabULA`Dsav*j$?9!hzMDhfrxOuUU9ixu-onCMEbtR z@pwerws<@qkWwb81Y-<&p5yE53+MCsnFs)MU5Bpg(D!}PM3hpKrF1f88Ie+A7zXrx zk8vE6Br=X8hzOkXnf1ASlg@@FVlj`lG-x84aC)njzQGK7YJqoQd{RUyHC?G%i-;zS zUPVk2Aw@o|lFQEeXBwML=1CDPn_0ECBoiWG+AFAt>A#RFTja(BuU`|<EbNO_OG*hT zrIW~3;r9_SaXJ+NFcC<dh{hMRmXvaqk=SL}CP73K#?{u^T7|XhELzJBdx}I{_!g^H zszg><OW$NOj+qg2??pvI)=HsSeA!y2#ZqnK?KaBWqPUu}RF;bb0AxByCU~<cOYySt zJ}I)+r!lKmXdI+`ZAgf~mff#;I`p+mf0M>PBA+6nl%h2ma8-^^l~><Bp?&#Mz+;?6 zT<wWj1YB6NwPiO(34UdNzSR3~S%O2~7p@ay&|2mp-+a&P0ABf``o!?Tg_+wQHZPx7 zx14Laj=DC!)ry3I7mH9(5#L|HCJ=Md_*O=2J8e0kcR6EKM&9W_V|K(&Yq>I#5`jf) z*;UK&h%4&J(1p*bh!A2L%;}M7YD5@g5JEr*;kTB4Zp}GQ`eCRL0(qX#95)duiUM_A zqpB*DWjPyS#|XV|Z^jt1EW_<~Ls1m}-UEQDs#Mc7xZm$++cw!zkV&X03heiLlx2y! wuIGv{#xM-Se{qn~|2QyH#HDQFJf3iW1A+oZV>8eEQUCw|07*qoM6N<$f(}b=nE(I) literal 0 HcmV?d00001 diff --git a/res/drawable-land-mdpi/btn_keyboard_key_normal_off.9.png b/res/drawable-land-mdpi/btn_keyboard_key_normal_off.9.png new file mode 100644 index 0000000000000000000000000000000000000000..bda9b83941ff20ac6ce4a46912dfd292957be711 GIT binary patch literal 860 zcmV-i1Ec(jP)<h;3K|Lk000e1NJLTq001HY001rs1^@s6O@+(30000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!{z*hZRCwCVSjnpDKoG5H9B~3c6kH0r z(w+ama^q4L`U9e(8xfrKz0<t9blRRw%;Od`(WKLLQs-0;6}(<AN@_t6{2k^MBpL%i z27^IzGzo06SOgjRCH8B8g!}^(U9VTV-|zGd-MB25%TYd`hrXgf&gV0Y$7AaE`xJ&D zJ)h671A@~`CL^x1*^H*sDV0j4D3IIjM#JHdE|&|PPA7Ui9;rkko6U-7j7B4xOeXI@ zV4wyKpwa|_NHZmz{t=D9IWz(wpe7B&xBvnAW$Ht<6KjKktk-MW@Aq^(9;s5PP_x;j zPN(xR0Coxx?8lfj+=0OW#CE%-YPCxBdR@@A*=)qKcDo%rBC-!{MDTzcIvx%OYBU-` zT(DxXC^*LbR;v{|bJ&M5A~FbEkwN8hITA(;gjBbQSr(#tkH=QQyhVh=21m78O^6p! zV8eghHvzGMkm<2TMCK0-x>&7NR45e0M1*^Y2E^)0ZzVl{uCiF2Spz3%5NWsDrQL2P zbb+kFf6#?VFAfmdk2WGO2EYv|i<z(2>xp#%SpxvL?;}bR5FX!34La}@2B&Co*BuoE zuI$5`8g(*Cve?PLoz$peO#_H-d}r3A1;mRQ?xZ44q7nIBXGCn&Br){^ys42XN^2V+ z`?5~)x<%<*rURi}^wi&J0MYpf<M5m$YmDa_>=#vMK9P}^a^147>ud5OfSAs#>YzRj zUHxqDg}Nx1UjCFKc@B~3(fP{wY9o$LK6yWMEl@5Rd_}3-7Fel~cT(~*{;&3nvqRJQ z4AqzAX5!ivX4|GnH@<g7Y{H8R$QlvT7pMR}iO5$qqSE0T5nW$zjU<_-lT7<sYIGX; zCIBZjYSyTAjHIisZhUP-aCYI{JFaN}!SNM-(2Ue@aScV3G%H5%!xe^qAcG$uINvUp zOHs^2`GF%6SG1;g0R-ph`Ft*XzEz%axW<VNrHHilt1=*fz}XrfjmmQ*B0!6>!~Za@ mE=D4vEApoaLbn<FBftQN%_)Px)Ujp&0000<MNUMnLSTaR|AR>Y literal 0 HcmV?d00001 diff --git a/res/drawable-land-mdpi/btn_keyboard_key_normal_on.9.png b/res/drawable-land-mdpi/btn_keyboard_key_normal_on.9.png new file mode 100644 index 0000000000000000000000000000000000000000..0c16ed5093dfcac53807d9d9663c516e52bb07ca GIT binary patch literal 926 zcmV;P17ZA$P)<h;3K|Lk000e1NJLTq001HY001rs1^@s6O@+(30000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU#KuJVFRCwCVSlNmiK@>f`xPoyonGAWz zi+N}hP%}OV`G`E_GehzVSsoljn9(SVl35Z017=ki+}n;<C{tEfFLv8uE)><;Rrj7g z=T=wsRV>RwSW^^b<;GG%`5+*LLLoew5Z3K>6%}{H?hFu}U64ex*$j)t0{h4tFN?)u zh{xlUU)w+?lL@NTDh$JbuIpGXmwN|9K~+^<_w9BYjYb2hRB9W@d_G61RKj#R#dti1 zX_}ERp=sKhjdHn+TCHXWLPpY1BT!KSA*PumZ252H2nDAcAs{3T*<diha5%(hG(tL^ zMmC$p!NEabAmo=oko>&#x;TjC2K59Y{<wwW%RV0DhxmDw#m(6f{(O7BGZ+?>K(IKD ztA-6=U=E-DK<U*jG(Ei<kw)$qcv8H@r#Ig*ySW#b5k7{L5xT(|4K%7M9_0+1vuRa9 z>+Le|%3(1a8R0=tU#=K1^<Oq;<;s1Wz8<*-bNY|@7QxsUVYE@=4!%6Z(X-Y6`1kay zHv#$=hpYQnJA>fmab<+pkJ@$1M4@;LQ~Qm%HAGCwLNjxyoqhFO-oo<S^n9{<t{MtL zt^VNx)>1*`MIL#hgv;|jPERgT|M=NgF35oJaiolpF#xO);*<AX)ZU%jmSGqm%)hHN zG=TMd;Gp}C2!eVR!?!fMvf!5;Pie$tjRJ_wzvrrn3WzUh*dP&cm>l8fdNSfBO&Aj& zz_&EKL{S(Y!}Ap{+m!ZYG7!>DPrQx-h%AO4MCUN8#__v`&WmC&Kg{r3xolgPjdhB% z2IBP1DmwKO&}*FAJYB|u)8t(x;@=^>JhE7--`oh2C%eqoy*4N>8T=-t>{#F`4S$m2 z@3G(FxF9DqSxjA=%r_^ky=Znj6v_PiX2dP=f&y}7#OVn{0J|`<*BlY$@XLs7tnVBN z^O_Fx+LuZr%aMHo@RUYeHDVnj?5->GFJ**kTI}@BzH9akgbFnjhnk}_thh!+lqf4k z6o<-J97tsYB#}s<*Xyl|dC6pQ!${Dib(%{+sG!&Bbk;F#jASwyG@DJ->-EUat2`hA zK{0JW=mw#s8ruIbR$bhx#Y+%JTJe<~#{LR007x($d)Rj$0{{R307*qoM6N<$f>02w ASpWb4 literal 0 HcmV?d00001 diff --git a/res/drawable-land-mdpi/btn_keyboard_key_pressed.9.png b/res/drawable-land-mdpi/btn_keyboard_key_pressed.9.png new file mode 100755 index 0000000000000000000000000000000000000000..6b5c718c71a8b38a73e5e765a9786b33bcee39d7 GIT binary patch literal 740 zcmV<A0vr8_P)<h;3K|Lk000e1NJLTq001%o001!v1^@s6n5+6900001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXV& z6FCG?es5a<00Lx5L_t(&-tC#quCg!?hTl&4Q4_8M@4%I7cHXHQ*REW73*3hb1cshf z{n}boK0Q#(nWPDc73Rr1Go1mUl)}3vgn0iZfOzZAN-3<@>rXf`nU!TJ2w!4f0}|;A zr4;JAM%%XdMBe<i#c_-zNg#x<L8_|4ZnwjByTxj?Lf3U+h7b{$8OP%hhr<EO<<bUe zng&HtfSFO(b<iM0grX?0-|z210Dzg%G!2;93!-Hl%X}eDM37Rtz9=h4nEAFsRYb!P zkp*fg(siA+LNy`8oqv`ha|8K)Mf3_CMCZqUDKga|>8q4J|L$@`S1e`@7KE80rF^c4 zF2Pen^uavL5lw2YkU`vt@rKr16zL5uGe2D7DS-M~qKAs;95Gvz(As$oMnsRRmI)Dh z)new?s@7~3ajRCy-LD?5X5Tbw|7PDbK5bFl#xc~+*Ywk?hzm1h1Rdl2aDB8C5kjau z&u>5YHjZ7r+~=8Krf=rHzc-D4Aio8oloEZ(9{PHz{Q5Re)&1({x~2E!@;hba($92D z@l!=Y1Q~RW_#Ax%F&2;+R_1k|FBHPe@rgt8P7xoBPO@k1!&vQ#&)2Ar(sbU}CQLP} zzpTiR8-5ySsM@`XxHk+TjGmQaFNhFg5X4lVrk~!>(i?mmLmI5~>J6<VNqUF-P)tgR zD2k9INq=a?aSSOX+O`dD)YTC~M2MmYMAi`~ZXjuz;(R`1v)LfavY<atE2VHcosg#K zKN0}Q^ITO`h0EoF>-8G+8x)-<X__L-GAtGglx1lvqQhzqCZ$9i$F?HAkPMvT&hH;~ WjYES7Hev_>0000<MNUMnLSTZLSxFH9 literal 0 HcmV?d00001 diff --git a/res/drawable-land-mdpi/btn_keyboard_key_pressed_off.9.png b/res/drawable-land-mdpi/btn_keyboard_key_pressed_off.9.png new file mode 100644 index 0000000000000000000000000000000000000000..bdcf06e1b8986fd3d5fc87d41037c7c037c6584b GIT binary patch literal 836 zcmV-K1H1f*P)<h;3K|Lk000e1NJLTq001HY001rs1^@s6O@+(30000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!=1D|BRCwCVSh=p^KoD#ja|#GJBn}B7 zArOB+L`=q?k`NOS@d=0{A%O%U?sK<Bny2wFzU|%D(#Xb)yUW$pb7`N?hk}}>X@A{( zv_L)pq}%NVM-#y2^SP$eFR@<(#Nanb(fxj>=krNn=*G$7@i-+C3FylV<a)i*a5$uX zzfYM=hTiXYG%3(^dc9sWnM`Or9#cA<HUoJ)9yAyXSSK(OB@i^k8jVKZKwtm?K)9-a za2nm3D#ZX1i^WX7Q2r*3003`MF~Y$CkO<Vo2!e|Zwpc7^v)Rz$aG*k=K#fL&I-O3? z0r2ZXO^nDumdhor*J~=3N>r^@>2x~LYPDj0+wFE>Ag&qN?RHeJ*D0Ayvj6k>JS#ao zZ?#&{F~S=Ma=BbsI>eVCG&~QYA+8VCj1-GSRz;%1@f+YEXt!T4o2Wrcjqr-W6+j@= zY&Of7z^HpX9+_Z+0KvQP=g0^z;aaW6XxwhMwBPTUMw-ngRVo!W=y}nEYmIQEVuKdS z<uU_g7zSem0Px(aIOX3mqsr9q21C&E`5buM@KnB{K2#d;IxAaE3AT)Ijfg{h*vkP9 z47#(e8WDty*e@unszGyAHUEtfxoV=Eefi?Z^`sY-asQr{0Z{^Rob)(5Q5bY0#!)gN zgYmKibi1Uq@~>mPC_0zHsI;T%<F&v1LAtnSbqWx6bEOegXTL){e^1tjYmJB<{S0n+ zN7joYBT)eHB345c$PR>CKw?_Ndn;dh7!zBNjg}=NDllARezu*e{;F7p6-qI<?9lIk zX6M7ObME9&ekaH#-LMN3MjD*TSqTK4ynyfvRE(oc4ey}p80PHDn`LUS!M0jKg=N^` zVUL7ZmZ`x38{b-ny&mC=<0AnCSK&YH2MCTHX0sXfdOgbJa*>{)0n~Il{W<P1ojl`I z5gY8=?H1`Wk?RB?@WH86ik&>07~yI87lv4nf{78;A%Dd4%vVYN5nuqDuBQKIAT~At O0000<MNUMnLSTYXMt$@E literal 0 HcmV?d00001 diff --git a/res/drawable-land-mdpi/btn_keyboard_key_pressed_on.9.png b/res/drawable-land-mdpi/btn_keyboard_key_pressed_on.9.png new file mode 100644 index 0000000000000000000000000000000000000000..79621a9e6300cc77259b6af19649931e47611c4a GIT binary patch literal 886 zcmV-+1Bv{JP)<h;3K|Lk000e1NJLTq001HY001rs1^@s6O@+(30000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU#7)eAyRCwCVnOkcbK@`XTd+`dQLK162 zOQo0SC-9;5*@uGP)EA*|J_!Zi(^A1m0wuAUq-e3h>)JiSw6o*v#l5sSFszBQ=lu46 z&Rlj>w%aX&nxZJCo2?Sa2Z5B!<=`{{tk>%)DxQcv84#U)pcE~aORU#xgi$wc7K_CY zkH@LLtRVCG9F0Z;wOS47bQ*?XM3Vwl#b&cXyWK{s)j}$jvVyEuE7a@tT_;i|N)T!k ztJ!SsgOCvf0nt?k!esPnvJ?}9rfC*mH2f_!LIA8Wkl}EM(P)IpWP)5SheDx%VzKC3 z5e7#<Jg7wx3eGoz7^@$VeLq0)Y>ZzwC-~lf1>@#JAQ)0ZRNSJ72(rmvpz`h-szx#v zkS_zLZ>}-^bYXs92n^y`k!R;Wagu+#pJ(&`#=wY95!M(;x$+Wg?QYLeu5yfC-v~5v zSS(M9Z0<`)KQ|@B-=K;)89#n2?F!oK(~HLZJJtvrF?5{`k8oDXVXfX{wVfiSWT6{J z7~g8<_cPxh<eP@Dt0HU&UwxgLowIoH`W(lnY24jD;<7)*Rc~@|O?a*mM#?v`!IvMn z{QMAfzq0qYm|AISco4f8G7Lp*Q^VJXtQZdkvRe`y6=5~PPw`=I2N)O)U&m3yLx{wF zq3lKtHBY1FzbPV)nyB_8^l)r*<ayDH%9wx8Q+(7Qu8SU1CkmrF;p0dZ5n&G50(#w2 z+WA*$zsNfmVPv%<>vL#-@qtwSoz*Qs*v(Uo$U6I-;@N#-eR!@BzN4SXjqVZa#Z{3g zKn^KZT^7g*!YdG;7XGuHFExyXEy#<Ots*iQR%Cu&J7xW4v2;61KDg-6?}X;$Lw9oS z=1{yR$V<BJ6ex@|xD9712z5FH!Y?QvN17VeLDn(M)t5Ef)X<rh-3}@&qc=QV*LSgO zQ$q)A)R7MK!rqTC#pxjlgs$9o${&zKB7ttVi)yusOePcQ85%)#I-On2y_07;Rh-Rc zSS%KiZWCFZ5ClDNGMU_+JX;iDY55mMv8WU*ib#kfU36qWAp90!0PG#2jn<Cy&j0`b M07*qoM6N<$f?Cs)EdT%j literal 0 HcmV?d00001 diff --git a/res/drawable-land/keyboard_suggest_strip_divider.png b/res/drawable-land-mdpi/keyboard_suggest_strip_divider.png similarity index 100% rename from res/drawable-land/keyboard_suggest_strip_divider.png rename to res/drawable-land-mdpi/keyboard_suggest_strip_divider.png diff --git a/res/drawable-land/btn_keyboard_key.xml b/res/drawable-land/btn_keyboard_key.xml new file mode 100644 index 0000000000..45578e582f --- /dev/null +++ b/res/drawable-land/btn_keyboard_key.xml @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2008 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + + <!-- Toggle keys. Use checkable/checked state. --> + + <item android:state_checkable="true" android:state_checked="true" + android:state_pressed="true" + android:drawable="@drawable/btn_keyboard_key_pressed_on" /> + <item android:state_checkable="true" android:state_pressed="true" + android:drawable="@drawable/btn_keyboard_key_pressed_off" /> + <item android:state_checkable="true" android:state_checked="true" + android:drawable="@drawable/btn_keyboard_key_normal_on" /> + <item android:state_checkable="true" + android:drawable="@drawable/btn_keyboard_key_normal_off" /> + + <!-- Normal keys --> + + <item android:state_pressed="true" + android:drawable="@drawable/btn_keyboard_key_pressed" /> + <item + android:drawable="@drawable/btn_keyboard_key_normal" /> + +</selector> diff --git a/res/drawable-mdpi/btn_keyboard_key_normal.9.png b/res/drawable-mdpi/btn_keyboard_key_normal.9.png new file mode 100644 index 0000000000000000000000000000000000000000..d0f9b7cc68907243d491edf188157a1486a8f8ce GIT binary patch literal 809 zcmV+^1J?YBP)<h;3K|Lk000e1NJLTq001HY001-y1^@s6@5t&z00001b5ch_0Itp) z=>Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXV& z6A3Zci=B%A00OB=L_t(o!|j-{lJX!Fh0hIy#KPym%I$pr%EnR)^B&F^lMuEdKS4qg z3IA*%GtTa;!2R}|3tS+rHDVhPX{|Ly&7rl%;c$qjiD>uxoihB9_Gdu2`9*7urfJZ1 z9k$4uxt8ZSgb*O2F-Tq4IGs+AQi5}izV9~&A|hm21|q`sdd1~(!EU!3gS2gn<MD{s z>xJj@38hpLB^YDK^Bg}vKRBPy?;rrsG!2@jLEE-TLA2I`C1&}LazrVGuItdYE&9Gs z0@C+AhzOkXk@ei|WOBoR*yJ(I1SO&&&g7~w9qdHiI$?b=-W1VV51&-l5YZ50QV|;> zq{y5~K0D3d%-k-_n<7Rwd)2Ig2|?KQ1QoIU3#qasZ=B^h{IrvGcGW1Qpp^20EKS}i z5Ic@n5dZ@~Y7jGj&>E%GC`V$Ku?s;&LyX1NtW{yDI<wZe$(jPhH~;LaNd>aV8q>)o zj>!>w?5rXoYqmJ-R$F6Rl&TDHkCDkO-ghW%)qD^DkeNiXgWHEvijN!bO_8NO$E=#r zbwW>V;~{`Gr>|X|O&u5Co8A}X3$hwy>ZQk5r~0aI-?*uMp>cd}@A#xl^qsu+{^E<3 zE!|N+*<II+=W}J<n%y<DmHUe6pf&dW!~V`b96t^0o7by|>F5q{y<T(W^i}ch{EHO{ zCElk%K}Dwi0~a9X5+0Q!t{rP0Z+yxw%8{7jCZ<^OTI0)+Edge&aaWD|`WIU?`{o}& zhzL?j0Dur;xbvFVfUQ9oV-P|>2r+Gqd6MRwCw*rXLLkrckz)f$Q52}E3Q|gxWjT5u z`6Owl#xll`Wf^X_8;YX%_Z<L8DRo`fcsw3>y<W*~c{Wf{6xi?gD9aL6RgD#4jG^ng n|56B<H~EnwK4lYgyv6+mbTk?c@Ly&300000NkvXXu0mjfkX3OU literal 0 HcmV?d00001 diff --git a/res/drawable-mdpi/btn_keyboard_key_normal_off.9.png b/res/drawable-mdpi/btn_keyboard_key_normal_off.9.png new file mode 100644 index 0000000000000000000000000000000000000000..bda9b83941ff20ac6ce4a46912dfd292957be711 GIT binary patch literal 860 zcmV-i1Ec(jP)<h;3K|Lk000e1NJLTq001HY001rs1^@s6O@+(30000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!{z*hZRCwCVSjnpDKoG5H9B~3c6kH0r z(w+ama^q4L`U9e(8xfrKz0<t9blRRw%;Od`(WKLLQs-0;6}(<AN@_t6{2k^MBpL%i z27^IzGzo06SOgjRCH8B8g!}^(U9VTV-|zGd-MB25%TYd`hrXgf&gV0Y$7AaE`xJ&D zJ)h671A@~`CL^x1*^H*sDV0j4D3IIjM#JHdE|&|PPA7Ui9;rkko6U-7j7B4xOeXI@ zV4wyKpwa|_NHZmz{t=D9IWz(wpe7B&xBvnAW$Ht<6KjKktk-MW@Aq^(9;s5PP_x;j zPN(xR0Coxx?8lfj+=0OW#CE%-YPCxBdR@@A*=)qKcDo%rBC-!{MDTzcIvx%OYBU-` zT(DxXC^*LbR;v{|bJ&M5A~FbEkwN8hITA(;gjBbQSr(#tkH=QQyhVh=21m78O^6p! zV8eghHvzGMkm<2TMCK0-x>&7NR45e0M1*^Y2E^)0ZzVl{uCiF2Spz3%5NWsDrQL2P zbb+kFf6#?VFAfmdk2WGO2EYv|i<z(2>xp#%SpxvL?;}bR5FX!34La}@2B&Co*BuoE zuI$5`8g(*Cve?PLoz$peO#_H-d}r3A1;mRQ?xZ44q7nIBXGCn&Br){^ys42XN^2V+ z`?5~)x<%<*rURi}^wi&J0MYpf<M5m$YmDa_>=#vMK9P}^a^147>ud5OfSAs#>YzRj zUHxqDg}Nx1UjCFKc@B~3(fP{wY9o$LK6yWMEl@5Rd_}3-7Fel~cT(~*{;&3nvqRJQ z4AqzAX5!ivX4|GnH@<g7Y{H8R$QlvT7pMR}iO5$qqSE0T5nW$zjU<_-lT7<sYIGX; zCIBZjYSyTAjHIisZhUP-aCYI{JFaN}!SNM-(2Ue@aScV3G%H5%!xe^qAcG$uINvUp zOHs^2`GF%6SG1;g0R-ph`Ft*XzEz%axW<VNrHHilt1=*fz}XrfjmmQ*B0!6>!~Za@ mE=D4vEApoaLbn<FBftQN%_)Px)Ujp&0000<MNUMnLSTaR|AR>Y literal 0 HcmV?d00001 diff --git a/res/drawable-mdpi/btn_keyboard_key_normal_on.9.png b/res/drawable-mdpi/btn_keyboard_key_normal_on.9.png new file mode 100644 index 0000000000000000000000000000000000000000..0c16ed5093dfcac53807d9d9663c516e52bb07ca GIT binary patch literal 926 zcmV;P17ZA$P)<h;3K|Lk000e1NJLTq001HY001rs1^@s6O@+(30000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU#KuJVFRCwCVSlNmiK@>f`xPoyonGAWz zi+N}hP%}OV`G`E_GehzVSsoljn9(SVl35Z017=ki+}n;<C{tEfFLv8uE)><;Rrj7g z=T=wsRV>RwSW^^b<;GG%`5+*LLLoew5Z3K>6%}{H?hFu}U64ex*$j)t0{h4tFN?)u zh{xlUU)w+?lL@NTDh$JbuIpGXmwN|9K~+^<_w9BYjYb2hRB9W@d_G61RKj#R#dti1 zX_}ERp=sKhjdHn+TCHXWLPpY1BT!KSA*PumZ252H2nDAcAs{3T*<diha5%(hG(tL^ zMmC$p!NEabAmo=oko>&#x;TjC2K59Y{<wwW%RV0DhxmDw#m(6f{(O7BGZ+?>K(IKD ztA-6=U=E-DK<U*jG(Ei<kw)$qcv8H@r#Ig*ySW#b5k7{L5xT(|4K%7M9_0+1vuRa9 z>+Le|%3(1a8R0=tU#=K1^<Oq;<;s1Wz8<*-bNY|@7QxsUVYE@=4!%6Z(X-Y6`1kay zHv#$=hpYQnJA>fmab<+pkJ@$1M4@;LQ~Qm%HAGCwLNjxyoqhFO-oo<S^n9{<t{MtL zt^VNx)>1*`MIL#hgv;|jPERgT|M=NgF35oJaiolpF#xO);*<AX)ZU%jmSGqm%)hHN zG=TMd;Gp}C2!eVR!?!fMvf!5;Pie$tjRJ_wzvrrn3WzUh*dP&cm>l8fdNSfBO&Aj& zz_&EKL{S(Y!}Ap{+m!ZYG7!>DPrQx-h%AO4MCUN8#__v`&WmC&Kg{r3xolgPjdhB% z2IBP1DmwKO&}*FAJYB|u)8t(x;@=^>JhE7--`oh2C%eqoy*4N>8T=-t>{#F`4S$m2 z@3G(FxF9DqSxjA=%r_^ky=Znj6v_PiX2dP=f&y}7#OVn{0J|`<*BlY$@XLs7tnVBN z^O_Fx+LuZr%aMHo@RUYeHDVnj?5->GFJ**kTI}@BzH9akgbFnjhnk}_thh!+lqf4k z6o<-J97tsYB#}s<*Xyl|dC6pQ!${Dib(%{+sG!&Bbk;F#jASwyG@DJ->-EUat2`hA zK{0JW=mw#s8ruIbR$bhx#Y+%JTJe<~#{LR007x($d)Rj$0{{R307*qoM6N<$f>02w ASpWb4 literal 0 HcmV?d00001 diff --git a/res/drawable-mdpi/btn_keyboard_key_pressed.9.png b/res/drawable-mdpi/btn_keyboard_key_pressed.9.png new file mode 100755 index 0000000000000000000000000000000000000000..91809e242239d063a7ddaca169a8451d13423909 GIT binary patch literal 736 zcmV<60w4W}P)<h;3K|Lk000e1NJLTq001HY001-y1^@s6@5t&z00001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXV& z6A>SVMhG1M00Ll1L_t(o!|j;6(y}lRhTly%s54v#-hq`hop)+uZDr*p=zUlqu;j1u z{RxDFK-9v_WQHPa9^O4<2`Qy8cMy?MO3^GEN-1o&+xavz#_e_^fiD?f0}|*5r4)*y zKvh*(B5sC87>0<V2t;Iq<av(6;eh>qkIiO-x~~1WKnO51&gU~urxVuewGC31C9*67 zGovU9uOLDQWLbve@z@3d0A@y6mSAQlh?a5eaJg6r0V$<ri-?pJBh36aeJP^hgb)^} zrAS@Z*7P-qsAb<$<lP|OuZW($L3DgfQe<k8b7h*#ek(?F#xS!t5N3vya##_a!gC?I zV0vRjlbX{fNK<jAYu=?ur)$jkXcA8W>N*m7711$bmiVRH0SzXE=+7Dx!gtm%^SG?} zm?F)r@p<~{=IG;xp0@w-LvOIeHxE8vC$G7WQ;{ajD=pyIma@yfAR=WNZ^F1@$F=6w z_013Z{ptNcejqP{m^VE`X}R<qRasq&r#43Vy=GM%U0KbAQ(6M0RIADkD&hm=l@cGg zHtK^I3uL;*eD1O(mS_j(Tu*c=;)2mZHs!L$wcfQ?&_!u(-ZVJ14d}BG^cf#A*nDTs z)mG5A(GqSLN@phs5xoR471Z3v=^DMjwQ$LvRZq(`M1(X=0RT}Hb^doOHKddXf&ftz zb-N}ELr5u6Rn_8MyjENYfglJVgjK@m4<wFbT(4K`b~_|V;`QcPDTT}Bf;f)<lK?=P zrYg^KJRT1`pHHtpS2|AOI7X5rSglsL-|w~}+AZ%GQc8qjXe;7!sb`MXzW)GCeote9 SqhFK&0000<MNUMnLSTYWIz4az literal 0 HcmV?d00001 diff --git a/res/drawable-mdpi/btn_keyboard_key_pressed_off.9.png b/res/drawable-mdpi/btn_keyboard_key_pressed_off.9.png new file mode 100644 index 0000000000000000000000000000000000000000..bdcf06e1b8986fd3d5fc87d41037c7c037c6584b GIT binary patch literal 836 zcmV-K1H1f*P)<h;3K|Lk000e1NJLTq001HY001rs1^@s6O@+(30000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!=1D|BRCwCVSh=p^KoD#ja|#GJBn}B7 zArOB+L`=q?k`NOS@d=0{A%O%U?sK<Bny2wFzU|%D(#Xb)yUW$pb7`N?hk}}>X@A{( zv_L)pq}%NVM-#y2^SP$eFR@<(#Nanb(fxj>=krNn=*G$7@i-+C3FylV<a)i*a5$uX zzfYM=hTiXYG%3(^dc9sWnM`Or9#cA<HUoJ)9yAyXSSK(OB@i^k8jVKZKwtm?K)9-a za2nm3D#ZX1i^WX7Q2r*3003`MF~Y$CkO<Vo2!e|Zwpc7^v)Rz$aG*k=K#fL&I-O3? z0r2ZXO^nDumdhor*J~=3N>r^@>2x~LYPDj0+wFE>Ag&qN?RHeJ*D0Ayvj6k>JS#ao zZ?#&{F~S=Ma=BbsI>eVCG&~QYA+8VCj1-GSRz;%1@f+YEXt!T4o2Wrcjqr-W6+j@= zY&Of7z^HpX9+_Z+0KvQP=g0^z;aaW6XxwhMwBPTUMw-ngRVo!W=y}nEYmIQEVuKdS z<uU_g7zSem0Px(aIOX3mqsr9q21C&E`5buM@KnB{K2#d;IxAaE3AT)Ijfg{h*vkP9 z47#(e8WDty*e@unszGyAHUEtfxoV=Eefi?Z^`sY-asQr{0Z{^Rob)(5Q5bY0#!)gN zgYmKibi1Uq@~>mPC_0zHsI;T%<F&v1LAtnSbqWx6bEOegXTL){e^1tjYmJB<{S0n+ zN7joYBT)eHB345c$PR>CKw?_Ndn;dh7!zBNjg}=NDllARezu*e{;F7p6-qI<?9lIk zX6M7ObME9&ekaH#-LMN3MjD*TSqTK4ynyfvRE(oc4ey}p80PHDn`LUS!M0jKg=N^` zVUL7ZmZ`x38{b-ny&mC=<0AnCSK&YH2MCTHX0sXfdOgbJa*>{)0n~Il{W<P1ojl`I z5gY8=?H1`Wk?RB?@WH86ik&>07~yI87lv4nf{78;A%Dd4%vVYN5nuqDuBQKIAT~At O0000<MNUMnLSTYXMt$@E literal 0 HcmV?d00001 diff --git a/res/drawable-mdpi/btn_keyboard_key_pressed_on.9.png b/res/drawable-mdpi/btn_keyboard_key_pressed_on.9.png new file mode 100644 index 0000000000000000000000000000000000000000..79621a9e6300cc77259b6af19649931e47611c4a GIT binary patch literal 886 zcmV-+1Bv{JP)<h;3K|Lk000e1NJLTq001HY001rs1^@s6O@+(30000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU#7)eAyRCwCVnOkcbK@`XTd+`dQLK162 zOQo0SC-9;5*@uGP)EA*|J_!Zi(^A1m0wuAUq-e3h>)JiSw6o*v#l5sSFszBQ=lu46 z&Rlj>w%aX&nxZJCo2?Sa2Z5B!<=`{{tk>%)DxQcv84#U)pcE~aORU#xgi$wc7K_CY zkH@LLtRVCG9F0Z;wOS47bQ*?XM3Vwl#b&cXyWK{s)j}$jvVyEuE7a@tT_;i|N)T!k ztJ!SsgOCvf0nt?k!esPnvJ?}9rfC*mH2f_!LIA8Wkl}EM(P)IpWP)5SheDx%VzKC3 z5e7#<Jg7wx3eGoz7^@$VeLq0)Y>ZzwC-~lf1>@#JAQ)0ZRNSJ72(rmvpz`h-szx#v zkS_zLZ>}-^bYXs92n^y`k!R;Wagu+#pJ(&`#=wY95!M(;x$+Wg?QYLeu5yfC-v~5v zSS(M9Z0<`)KQ|@B-=K;)89#n2?F!oK(~HLZJJtvrF?5{`k8oDXVXfX{wVfiSWT6{J z7~g8<_cPxh<eP@Dt0HU&UwxgLowIoH`W(lnY24jD;<7)*Rc~@|O?a*mM#?v`!IvMn z{QMAfzq0qYm|AISco4f8G7Lp*Q^VJXtQZdkvRe`y6=5~PPw`=I2N)O)U&m3yLx{wF zq3lKtHBY1FzbPV)nyB_8^l)r*<ayDH%9wx8Q+(7Qu8SU1CkmrF;p0dZ5n&G50(#w2 z+WA*$zsNfmVPv%<>vL#-@qtwSoz*Qs*v(Uo$U6I-;@N#-eR!@BzN4SXjqVZa#Z{3g zKn^KZT^7g*!YdG;7XGuHFExyXEy#<Ots*iQR%Cu&J7xW4v2;61KDg-6?}X;$Lw9oS z=1{yR$V<BJ6ex@|xD9712z5FH!Y?QvN17VeLDn(M)t5Ef)X<rh-3}@&qc=QV*LSgO zQ$q)A)R7MK!rqTC#pxjlgs$9o${&zKB7ttVi)yusOePcQ85%)#I-On2y_07;Rh-Rc zSS%KiZWCFZ5ClDNGMU_+JX;iDY55mMv8WU*ib#kfU36qWAp90!0PG#2jn<Cy&j0`b M07*qoM6N<$f?Cs)EdT%j literal 0 HcmV?d00001 diff --git a/res/drawable/candidate_feedback_background.9.png b/res/drawable-mdpi/candidate_feedback_background.9.png similarity index 100% rename from res/drawable/candidate_feedback_background.9.png rename to res/drawable-mdpi/candidate_feedback_background.9.png diff --git a/res/drawable/dialog_bubble_step02.9.png b/res/drawable-mdpi/dialog_bubble_step02.9.png similarity index 100% rename from res/drawable/dialog_bubble_step02.9.png rename to res/drawable-mdpi/dialog_bubble_step02.9.png diff --git a/res/drawable/dialog_bubble_step07.9.png b/res/drawable-mdpi/dialog_bubble_step07.9.png similarity index 100% rename from res/drawable/dialog_bubble_step07.9.png rename to res/drawable-mdpi/dialog_bubble_step07.9.png diff --git a/res/drawable/highlight_pressed.png b/res/drawable-mdpi/highlight_pressed.png similarity index 100% rename from res/drawable/highlight_pressed.png rename to res/drawable-mdpi/highlight_pressed.png diff --git a/res/drawable/ic_dialog_keyboard.png b/res/drawable-mdpi/ic_dialog_keyboard.png similarity index 100% rename from res/drawable/ic_dialog_keyboard.png rename to res/drawable-mdpi/ic_dialog_keyboard.png diff --git a/res/drawable/ic_suggest_strip_scroll_left_arrow.png b/res/drawable-mdpi/ic_suggest_strip_scroll_left_arrow.png similarity index 100% rename from res/drawable/ic_suggest_strip_scroll_left_arrow.png rename to res/drawable-mdpi/ic_suggest_strip_scroll_left_arrow.png diff --git a/res/drawable/ic_suggest_strip_scroll_right_arrow.png b/res/drawable-mdpi/ic_suggest_strip_scroll_right_arrow.png similarity index 100% rename from res/drawable/ic_suggest_strip_scroll_right_arrow.png rename to res/drawable-mdpi/ic_suggest_strip_scroll_right_arrow.png diff --git a/res/drawable-mdpi/keyboard_background.9.png b/res/drawable-mdpi/keyboard_background.9.png new file mode 100644 index 0000000000000000000000000000000000000000..2bd4b628dff64a051029a35a6f19925d730c47e0 GIT binary patch literal 214 zcmeAS@N?(olHy`uVBq!ia0vp^Vn8g+!3HF!RQ~M%QjEnx?oJHr&dIz4a@dl*-CY>| zgW!U_%O?XxI14-?iy0WWg+Z8+Vb&Z8pdfpRr>`sfO%7H8O=HR5jFv#5Fi#i95R21q zuWaN!puod=vA%<CBlB;4kJ`vaj|EE}WW7FFlz3$g+loyltCxM>w@%;W`4T3{<ToYE zOVm8Gb!TsW5+J_sL#us*X8yfr_I`{qk&>pn3#YQ*+95SF*5Xnw&;|xiS3j3^P6<r_ D|CL5g literal 0 HcmV?d00001 diff --git a/res/drawable/keyboard_suggest_strip.9.png b/res/drawable-mdpi/keyboard_suggest_strip.9.png similarity index 100% rename from res/drawable/keyboard_suggest_strip.9.png rename to res/drawable-mdpi/keyboard_suggest_strip.9.png diff --git a/res/drawable-mdpi/keyboard_suggest_strip_divider.png b/res/drawable-mdpi/keyboard_suggest_strip_divider.png new file mode 100644 index 0000000000000000000000000000000000000000..c9413d7c147a56adb8ddc31ad5bee47d764f6f7e GIT binary patch literal 2846 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 literal 0 HcmV?d00001 diff --git a/res/drawable/sym_keyboard_delete.png b/res/drawable-mdpi/sym_keyboard_delete.png similarity index 100% rename from res/drawable/sym_keyboard_delete.png rename to res/drawable-mdpi/sym_keyboard_delete.png diff --git a/res/drawable/sym_keyboard_done.png b/res/drawable-mdpi/sym_keyboard_done.png similarity index 100% rename from res/drawable/sym_keyboard_done.png rename to res/drawable-mdpi/sym_keyboard_done.png diff --git a/res/drawable/sym_keyboard_feedback_delete.png b/res/drawable-mdpi/sym_keyboard_feedback_delete.png similarity index 100% rename from res/drawable/sym_keyboard_feedback_delete.png rename to res/drawable-mdpi/sym_keyboard_feedback_delete.png diff --git a/res/drawable/sym_keyboard_feedback_done.png b/res/drawable-mdpi/sym_keyboard_feedback_done.png similarity index 100% rename from res/drawable/sym_keyboard_feedback_done.png rename to res/drawable-mdpi/sym_keyboard_feedback_done.png diff --git a/res/drawable/sym_keyboard_feedback_numalt.png b/res/drawable-mdpi/sym_keyboard_feedback_numalt.png similarity index 100% rename from res/drawable/sym_keyboard_feedback_numalt.png rename to res/drawable-mdpi/sym_keyboard_feedback_numalt.png diff --git a/res/drawable/sym_keyboard_feedback_return.png b/res/drawable-mdpi/sym_keyboard_feedback_return.png similarity index 100% rename from res/drawable/sym_keyboard_feedback_return.png rename to res/drawable-mdpi/sym_keyboard_feedback_return.png diff --git a/res/drawable/sym_keyboard_feedback_search.png b/res/drawable-mdpi/sym_keyboard_feedback_search.png similarity index 100% rename from res/drawable/sym_keyboard_feedback_search.png rename to res/drawable-mdpi/sym_keyboard_feedback_search.png diff --git a/res/drawable/sym_keyboard_feedback_shift.png b/res/drawable-mdpi/sym_keyboard_feedback_shift.png similarity index 100% rename from res/drawable/sym_keyboard_feedback_shift.png rename to res/drawable-mdpi/sym_keyboard_feedback_shift.png diff --git a/res/drawable/sym_keyboard_feedback_shift_locked.png b/res/drawable-mdpi/sym_keyboard_feedback_shift_locked.png similarity index 100% rename from res/drawable/sym_keyboard_feedback_shift_locked.png rename to res/drawable-mdpi/sym_keyboard_feedback_shift_locked.png diff --git a/res/drawable/sym_keyboard_feedback_space.png b/res/drawable-mdpi/sym_keyboard_feedback_space.png similarity index 100% rename from res/drawable/sym_keyboard_feedback_space.png rename to res/drawable-mdpi/sym_keyboard_feedback_space.png diff --git a/res/drawable/sym_keyboard_num0.png b/res/drawable-mdpi/sym_keyboard_num0.png similarity index 100% rename from res/drawable/sym_keyboard_num0.png rename to res/drawable-mdpi/sym_keyboard_num0.png diff --git a/res/drawable/sym_keyboard_num1.png b/res/drawable-mdpi/sym_keyboard_num1.png similarity index 100% rename from res/drawable/sym_keyboard_num1.png rename to res/drawable-mdpi/sym_keyboard_num1.png diff --git a/res/drawable/sym_keyboard_num2.png b/res/drawable-mdpi/sym_keyboard_num2.png similarity index 100% rename from res/drawable/sym_keyboard_num2.png rename to res/drawable-mdpi/sym_keyboard_num2.png diff --git a/res/drawable/sym_keyboard_num3.png b/res/drawable-mdpi/sym_keyboard_num3.png similarity index 100% rename from res/drawable/sym_keyboard_num3.png rename to res/drawable-mdpi/sym_keyboard_num3.png diff --git a/res/drawable/sym_keyboard_num4.png b/res/drawable-mdpi/sym_keyboard_num4.png similarity index 100% rename from res/drawable/sym_keyboard_num4.png rename to res/drawable-mdpi/sym_keyboard_num4.png diff --git a/res/drawable/sym_keyboard_num5.png b/res/drawable-mdpi/sym_keyboard_num5.png similarity index 100% rename from res/drawable/sym_keyboard_num5.png rename to res/drawable-mdpi/sym_keyboard_num5.png diff --git a/res/drawable/sym_keyboard_num6.png b/res/drawable-mdpi/sym_keyboard_num6.png similarity index 100% rename from res/drawable/sym_keyboard_num6.png rename to res/drawable-mdpi/sym_keyboard_num6.png diff --git a/res/drawable/sym_keyboard_num7.png b/res/drawable-mdpi/sym_keyboard_num7.png similarity index 100% rename from res/drawable/sym_keyboard_num7.png rename to res/drawable-mdpi/sym_keyboard_num7.png diff --git a/res/drawable/sym_keyboard_num8.png b/res/drawable-mdpi/sym_keyboard_num8.png similarity index 100% rename from res/drawable/sym_keyboard_num8.png rename to res/drawable-mdpi/sym_keyboard_num8.png diff --git a/res/drawable/sym_keyboard_num9.png b/res/drawable-mdpi/sym_keyboard_num9.png similarity index 100% rename from res/drawable/sym_keyboard_num9.png rename to res/drawable-mdpi/sym_keyboard_num9.png diff --git a/res/drawable/sym_keyboard_numalt.png b/res/drawable-mdpi/sym_keyboard_numalt.png similarity index 100% rename from res/drawable/sym_keyboard_numalt.png rename to res/drawable-mdpi/sym_keyboard_numalt.png diff --git a/res/drawable/sym_keyboard_numpound.png b/res/drawable-mdpi/sym_keyboard_numpound.png similarity index 100% rename from res/drawable/sym_keyboard_numpound.png rename to res/drawable-mdpi/sym_keyboard_numpound.png diff --git a/res/drawable/sym_keyboard_numstar.png b/res/drawable-mdpi/sym_keyboard_numstar.png similarity index 100% rename from res/drawable/sym_keyboard_numstar.png rename to res/drawable-mdpi/sym_keyboard_numstar.png diff --git a/res/drawable/sym_keyboard_return.png b/res/drawable-mdpi/sym_keyboard_return.png similarity index 100% rename from res/drawable/sym_keyboard_return.png rename to res/drawable-mdpi/sym_keyboard_return.png diff --git a/res/drawable/sym_keyboard_search.png b/res/drawable-mdpi/sym_keyboard_search.png similarity index 100% rename from res/drawable/sym_keyboard_search.png rename to res/drawable-mdpi/sym_keyboard_search.png diff --git a/res/drawable/sym_keyboard_shift.png b/res/drawable-mdpi/sym_keyboard_shift.png similarity index 100% rename from res/drawable/sym_keyboard_shift.png rename to res/drawable-mdpi/sym_keyboard_shift.png diff --git a/res/drawable/sym_keyboard_shift_locked.png b/res/drawable-mdpi/sym_keyboard_shift_locked.png similarity index 100% rename from res/drawable/sym_keyboard_shift_locked.png rename to res/drawable-mdpi/sym_keyboard_shift_locked.png diff --git a/res/drawable/sym_keyboard_space.png b/res/drawable-mdpi/sym_keyboard_space.png similarity index 100% rename from res/drawable/sym_keyboard_space.png rename to res/drawable-mdpi/sym_keyboard_space.png diff --git a/res/drawable/btn_keyboard_key.xml b/res/drawable/btn_keyboard_key.xml new file mode 100644 index 0000000000..45578e582f --- /dev/null +++ b/res/drawable/btn_keyboard_key.xml @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2008 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + + <!-- Toggle keys. Use checkable/checked state. --> + + <item android:state_checkable="true" android:state_checked="true" + android:state_pressed="true" + android:drawable="@drawable/btn_keyboard_key_pressed_on" /> + <item android:state_checkable="true" android:state_pressed="true" + android:drawable="@drawable/btn_keyboard_key_pressed_off" /> + <item android:state_checkable="true" android:state_checked="true" + android:drawable="@drawable/btn_keyboard_key_normal_on" /> + <item android:state_checkable="true" + android:drawable="@drawable/btn_keyboard_key_normal_off" /> + + <!-- Normal keys --> + + <item android:state_pressed="true" + android:drawable="@drawable/btn_keyboard_key_pressed" /> + <item + android:drawable="@drawable/btn_keyboard_key_normal" /> + +</selector> diff --git a/res/drawable/keyboard_suggest_strip_divider.png b/res/drawable/keyboard_suggest_strip_divider.png deleted file mode 100644 index e54c5b099431be9853118c033e6fee440e44aa61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 166 zcmeAS@N?(olHy`uVBq!ia0vp^OhBy00U{G$-VFv)k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XJUm?-Ln?0d^f~e|7_hKJfBb*`XD@STZt$Zdp^0}R7z7QC zJ33Z1S*_<)pAj9ID(Y6%nD%G&tkd;!!sj`ry)J!Ta$v{V2qqqeESB;(&)M-UKr<OU MUHx3vIVCg!0J%yx7ytkO diff --git a/res/layout/candidates.xml b/res/layout/candidates.xml index edd779a819..39df81dd25 100755 --- a/res/layout/candidates.xml +++ b/res/layout/candidates.xml @@ -50,7 +50,7 @@ <com.android.inputmethod.latin.CandidateView android:id="@+id/candidates" android:layout_width="wrap_content" - android:layout_height="38dp" + android:layout_height="@dimen/candidate_strip_height" android:layout_weight="1" /> diff --git a/res/layout/input.xml b/res/layout/input.xml index c4bcc91c3a..f2f30ca84d 100755 --- a/res/layout/input.xml +++ b/res/layout/input.xml @@ -24,4 +24,6 @@ android:layout_alignParentBottom="true" android:layout_width="fill_parent" android:layout_height="wrap_content" + android:background="@drawable/keyboard_background" + android:keyBackground="@drawable/btn_keyboard_key" /> diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml index 45d5464b8d..29b8565bad 100644 --- a/res/values-cs/strings.xml +++ b/res/values-cs/strings.xml @@ -63,6 +63,7 @@ <string name="alternates_for_n" msgid="6257322556221886400">"ňñ"</string> <string name="alternates_for_c" msgid="151699780720639892">"Äç"</string> <string name="alternates_for_y" msgid="1722776806607271199">"ýÿ"</string> + <string name="key_i" msgid="6483655742552255124">"i"</string> <string name="tip_long_press" msgid="6101270866284343344">"PodrženÃm klávesy zobrazÃte diakritiku (ž, á atd.)"</string> <string name="tip_dismiss" msgid="7585579046862204381">"StisknutÃm klávesy ZpÄ›t ↶ můžete klávesnici kdykoli zavÅ™Ãt"</string> <string name="tip_access_symbols" msgid="6344098517525531652">"PÅ™Ãstup k ÄÃslům a symbolům"</string> @@ -87,4 +88,9 @@ <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"ZavÅ™ete klávesnici"\n</b></font><font size="3">\n</font>"StisknÄ›te klávesu ZpÄ›t."</string> <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"PÅ™idrženÃm klávesy zobrazte možnosti"\n</b></font><font size="3">\n</font>"Použijte interpunkÄnà znaménka a diakritiku."</string> <string name="keyboard_settings" msgid="4585753477617374032"><font size="17"><b>"Nastavenà klávesnice"\n</b></font><font size="3">\n</font>"DotknÄ›te se klávesy "<b>"?123"</b>" a pÅ™idržte ji."</string> + <string name="popular_domain_0" msgid="3745279225122472969">".com"</string> + <string name="popular_domain_1" msgid="1370572248164278467">".net"</string> + <string name="popular_domain_2" msgid="3036812463748402878">".org"</string> + <string name="popular_domain_3" msgid="8718639560809452028">".biz"</string> + <string name="popular_domain_4" msgid="35359437471311470">".cz"</string> </resources> diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index 60a4f5f6f9..3af5e439ae 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -63,6 +63,7 @@ <string name="alternates_for_n" msgid="6257322556221886400">"ñ"</string> <string name="alternates_for_c" msgid="151699780720639892">"ç"</string> <string name="alternates_for_y" msgid="1722776806607271199">"ýÿ"</string> + <string name="key_i" msgid="6483655742552255124">"i"</string> <string name="tip_long_press" msgid="6101270866284343344">"Hold en tast nede for at se accenter (ø, ö osv.)"</string> <string name="tip_dismiss" msgid="7585579046862204381">"Tryk pÃ¥ tilbagetasten ↶ for nÃ¥r som helst at lukke for tastaturet"</string> <string name="tip_access_symbols" msgid="6344098517525531652">"FÃ¥ adgang til tal og symboler"</string> @@ -83,12 +84,13 @@ <string name="label_phone_key" msgid="4275497665515080551">"123"</string> <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string> <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string> - <!-- no translation found for open_the_keyboard (2215920976029260466) --> - <skip /> - <!-- no translation found for close_the_keyboard (6251022259044940103) --> - <skip /> - <!-- no translation found for touch_and_hold (6154166367273010534) --> - <skip /> - <!-- no translation found for keyboard_settings (4585753477617374032) --> - <skip /> + <string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"Ã…bn tastaturet"\n</b></font><font size="3">\n</font>"Tryk pÃ¥ et hvilket som helst tekstfelt."</string> + <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Luk tastaturet"\n</b></font><font size="3">\n</font>"Tryk pÃ¥ Tilbagetasten."</string> + <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Tryk pÃ¥ og hold en tast nede for valgmuligheder"\n</b></font><font size="3">\n</font>"FÃ¥ adgang til tegnsætning og accenter."</string> + <string name="keyboard_settings" msgid="4585753477617374032"><font size="17"><b>"Tastaturindstillinger"\n</b></font><font size="3">\n</font>"Tryk pÃ¥ og hold tasten "<b>"?123"</b>" nede."</string> + <string name="popular_domain_0" msgid="3745279225122472969">".com"</string> + <string name="popular_domain_1" msgid="1370572248164278467">".net"</string> + <string name="popular_domain_2" msgid="3036812463748402878">".org"</string> + <string name="popular_domain_3" msgid="8718639560809452028">".gov"</string> + <string name="popular_domain_4" msgid="35359437471311470">".edu"</string> </resources> diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index ca1dd626d8..aa52380b63 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -63,6 +63,7 @@ <string name="alternates_for_n" msgid="6257322556221886400">"ñ"</string> <string name="alternates_for_c" msgid="151699780720639892">"ç"</string> <string name="alternates_for_y" msgid="1722776806607271199">"ýÿ"</string> + <string name="key_i" msgid="6483655742552255124">"i"</string> <string name="tip_long_press" msgid="6101270866284343344">"Zur Anzeige von Umlauten (ä, ö usw.) Taste gedrückt halten"</string> <string name="tip_dismiss" msgid="7585579046862204381">"Zum Schließen der Tastatur ↶ drücken"</string> <string name="tip_access_symbols" msgid="6344098517525531652">"Auf Zahlen und Symbole zugreifen"</string> @@ -87,4 +88,9 @@ <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Tastatur schließen"\n</b></font><font size="3">\n</font>"Drücken Sie die Taste \"Zurück\"."</string> <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Eine Taste für Optionen berühren und gedrückt halten"\n</b></font><font size="3">\n</font>"Greifen Sie auf Satzzeichen und Akzente zu."</string> <string name="keyboard_settings" msgid="4585753477617374032"><font size="17"><b>"Tastatureinstellungen"\n</b></font><font size="3">\n</font>"Berühren und halten Sie die Taste "<b>"?123"</b>" gedrückt."</string> + <string name="popular_domain_0" msgid="3745279225122472969">".com"</string> + <string name="popular_domain_1" msgid="1370572248164278467">".net"</string> + <string name="popular_domain_2" msgid="3036812463748402878">".org"</string> + <string name="popular_domain_3" msgid="8718639560809452028">".gov"</string> + <string name="popular_domain_4" msgid="35359437471311470">".edu"</string> </resources> diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index 7fe65b5e0d..173b384b35 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -63,6 +63,7 @@ <string name="alternates_for_n" msgid="6257322556221886400">"ñ"</string> <string name="alternates_for_c" msgid="151699780720639892">"ç"</string> <string name="alternates_for_y" msgid="1722776806607271199">"ýÿ"</string> + <string name="key_i" msgid="6483655742552255124">"i"</string> <string name="tip_long_press" msgid="6101270866284343344">"ΚÏατήστε πατημÎνο Îνα πλήκτÏο για να δείτε τους τονισμÎνους χαÏακτήÏες (ø, ö, κ.Ï„.λ.)"</string> <string name="tip_dismiss" msgid="7585579046862204381">"Πατήστε το πλήκτÏο Πίσω ↶ για να κλείσετε το πληκτÏολόγιο ανά πάσα στιγμή"</string> <string name="tip_access_symbols" msgid="6344098517525531652">"Î Ïόσβαση σε αÏιθμοÏÏ‚ και σÏμβολα"</string> @@ -83,12 +84,13 @@ <string name="label_phone_key" msgid="4275497665515080551">"123"</string> <string name="label_alpha_key" msgid="8864943487292437456">"ΑΒΓ"</string> <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string> - <!-- no translation found for open_the_keyboard (2215920976029260466) --> - <skip /> - <!-- no translation found for close_the_keyboard (6251022259044940103) --> - <skip /> - <!-- no translation found for touch_and_hold (6154166367273010534) --> - <skip /> - <!-- no translation found for keyboard_settings (4585753477617374032) --> - <skip /> + <string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"Ανοίξτε το πληκτÏολόγιο"\n</b></font><font size="3">\n</font>"Αγγίξτε οποιοδήποτε πεδίο κειμÎνου."</string> + <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Κλείστε το πληκτÏολόγιο"\n</b></font><font size="3">\n</font>"Πατήστε το πλήκτÏο Πίσω."</string> + <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Αγγίξτε και κÏατήστε Îνα πλήκτÏο για οÏισμό επιλογών"\n</b></font><font size="3">\n</font>"Î Ïόσβαση στα σημεία στίξης και τονισμοÏ."</string> + <string name="keyboard_settings" msgid="4585753477617374032"><font size="17"><b>"Ρυθμίσεις πληκτÏολογίου"\n</b></font><font size="3">\n</font>"Αγγίξτε και κÏατήστε το πλήκτÏο "<b>"?123"</b>"."</string> + <string name="popular_domain_0" msgid="3745279225122472969">".com"</string> + <string name="popular_domain_1" msgid="1370572248164278467">".net"</string> + <string name="popular_domain_2" msgid="3036812463748402878">".org"</string> + <string name="popular_domain_3" msgid="8718639560809452028">".gov"</string> + <string name="popular_domain_4" msgid="35359437471311470">".edu"</string> </resources> diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index d5964940fa..6dee06bffb 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -63,6 +63,7 @@ <string name="alternates_for_n" msgid="6257322556221886400">"ñ"</string> <string name="alternates_for_c" msgid="151699780720639892">"ç"</string> <string name="alternates_for_y" msgid="1722776806607271199">"ýÿ"</string> + <string name="key_i" msgid="6483655742552255124">"i"</string> <string name="tip_long_press" msgid="6101270866284343344">"Mantén una tecla presionada para ver los acentos (ø, ö, etc.)"</string> <string name="tip_dismiss" msgid="7585579046862204381">"Pulsa la tecla hacia atrás ↶ para cerrar el teclado en cualquier momento"</string> <string name="tip_access_symbols" msgid="6344098517525531652">"Acceder a números y sÃmbolos"</string> @@ -83,12 +84,13 @@ <string name="label_phone_key" msgid="4275497665515080551">"123"</string> <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string> <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string> - <!-- no translation found for open_the_keyboard (2215920976029260466) --> - <skip /> - <!-- no translation found for close_the_keyboard (6251022259044940103) --> - <skip /> - <!-- no translation found for touch_and_hold (6154166367273010534) --> - <skip /> - <!-- no translation found for keyboard_settings (4585753477617374032) --> - <skip /> + <string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"Abrir el teclado"\n</b></font><font size="3">\n</font>"Tocar cualquier campo de texto."</string> + <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Cerrar el teclado"\n</b></font><font size="3">\n</font>"Presionar la tecla Atrás."</string> + <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Tocar & y mantener presionada una tecla para las opciones"\n</b></font><font size="3">\n</font>"Acceder a puntuación y acentos."</string> + <string name="keyboard_settings" msgid="4585753477617374032"><font size="17"><b>"Configuración del teclado"\n</b></font><font size="3">\n</font>"Tocar & y mantener presionada la tecla "<b>"?123"</b>"."</string> + <string name="popular_domain_0" msgid="3745279225122472969">".com"</string> + <string name="popular_domain_1" msgid="1370572248164278467">".net"</string> + <string name="popular_domain_2" msgid="3036812463748402878">".org"</string> + <string name="popular_domain_3" msgid="8718639560809452028">".gov"</string> + <string name="popular_domain_4" msgid="35359437471311470">".edu"</string> </resources> diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index 3873bbe8f6..faedf7e038 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -63,6 +63,7 @@ <string name="alternates_for_n" msgid="6257322556221886400">"ñ"</string> <string name="alternates_for_c" msgid="151699780720639892">"ç"</string> <string name="alternates_for_y" msgid="1722776806607271199">"ýÿ"</string> + <string name="key_i" msgid="6483655742552255124">"i"</string> <string name="tip_long_press" msgid="6101270866284343344">"Mantén pulsada una tecla para ver los caracteres acentuados (ø, ö, etc.)."</string> <string name="tip_dismiss" msgid="7585579046862204381">"Pulsa la tecla \"Atrás\" ↶ para cerrar el teclado en cualquier momento."</string> <string name="tip_access_symbols" msgid="6344098517525531652">"Acceso a números y sÃmbolos"</string> @@ -87,4 +88,9 @@ <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Cerrar el teclado"\n</b></font><font size="3">\n</font>"Pulsa la tecla \"Atrás\"."</string> <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Mantén pulsada una tecla para acceder a las opciones."\n</b></font><font size="3">\n</font>"Accede a los signos de puntuación y a los acentos."</string> <string name="keyboard_settings" msgid="4585753477617374032"><font size="17"><b>"Configuración del teclado"\n</b></font><font size="3">\n</font>"Mantén pulsada la tecla "<b>"?123"</b>"."</string> + <string name="popular_domain_0" msgid="3745279225122472969">".com"</string> + <string name="popular_domain_1" msgid="1370572248164278467">".net"</string> + <string name="popular_domain_2" msgid="3036812463748402878">".org"</string> + <string name="popular_domain_3" msgid="8718639560809452028">".gov"</string> + <string name="popular_domain_4" msgid="35359437471311470">".edu"</string> </resources> diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index 22952737be..226c4fb0b2 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -63,6 +63,7 @@ <string name="alternates_for_n" msgid="6257322556221886400">"ñ"</string> <string name="alternates_for_c" msgid="151699780720639892">"ç"</string> <string name="alternates_for_y" msgid="1722776806607271199">"ýÿ"</string> + <string name="key_i" msgid="6483655742552255124">"i"</string> <string name="tip_long_press" msgid="6101270866284343344">"Maintenir une touche enfoncée pour afficher les accents (à , é, etc.)"</string> <string name="tip_dismiss" msgid="7585579046862204381">"Appuyez sur la touche Retour ↶ pour fermer le clavier à tout moment."</string> <string name="tip_access_symbols" msgid="6344098517525531652">"Accéder aux chiffres et symboles"</string> @@ -87,4 +88,9 @@ <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Fermer le clavier"\n</b></font><font size="3">\n</font>"Appuyez sur la touche Retour."</string> <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Appuyer sur une touche de manière prolongée pour accéder aux options"\n</b></font><font size="3">\n</font>"Accédez aux signes de ponctuation et aux accents."</string> <string name="keyboard_settings" msgid="4585753477617374032"><font size="17"><b>"Paramètres du clavier"\n</b></font><font size="3">\n</font>"Appuyez sur la touche "<b>"?123"</b>" de manière prolongée."</string> + <string name="popular_domain_0" msgid="3745279225122472969">".com"</string> + <string name="popular_domain_1" msgid="1370572248164278467">".net"</string> + <string name="popular_domain_2" msgid="3036812463748402878">".org"</string> + <string name="popular_domain_3" msgid="8718639560809452028">".gouv"</string> + <string name="popular_domain_4" msgid="35359437471311470">".edu"</string> </resources> diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index fa66568fe0..62128e4c56 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -63,6 +63,7 @@ <string name="alternates_for_n" msgid="6257322556221886400">"ñ"</string> <string name="alternates_for_c" msgid="151699780720639892">"ç"</string> <string name="alternates_for_y" msgid="1722776806607271199">"ýÿ"</string> + <string name="key_i" msgid="6483655742552255124">"i"</string> <string name="tip_long_press" msgid="6101270866284343344">"Tieni premuto un tasto per vedere le lettere con segni diacritici (ø, ö etc.)"</string> <string name="tip_dismiss" msgid="7585579046862204381">"Premi il tasto Indietro ↶ per chiudere la tastiera"</string> <string name="tip_access_symbols" msgid="6344098517525531652">"Accedi a numeri e simboli"</string> @@ -87,4 +88,9 @@ <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Chiusura tastiera"\n</b></font><font size="3">\n</font>"Premi il tasto Indietro."</string> <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Tocca e tieni premuto un tasto per le opzioni"\n</b></font><font size="3">\n</font>"Accesso a punteggiatura e accenti."</string> <string name="keyboard_settings" msgid="4585753477617374032"><font size="17"><b>"Impostazioni tastiera"\n</b></font><font size="3">\n</font>"Tocca e tieni premuto il tasto "<b>"?123"</b>"."</string> + <string name="popular_domain_0" msgid="3745279225122472969">".com"</string> + <string name="popular_domain_1" msgid="1370572248164278467">".net"</string> + <string name="popular_domain_2" msgid="3036812463748402878">".org"</string> + <string name="popular_domain_3" msgid="8718639560809452028">".gov"</string> + <string name="popular_domain_4" msgid="35359437471311470">".edu"</string> </resources> diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml index 6f590de5b8..d5e7f8dc89 100644 --- a/res/values-ja/strings.xml +++ b/res/values-ja/strings.xml @@ -63,6 +63,7 @@ <string name="alternates_for_n" msgid="6257322556221886400">"ñ"</string> <string name="alternates_for_c" msgid="151699780720639892">"ç"</string> <string name="alternates_for_y" msgid="1722776806607271199">"ýÿ"</string> + <string name="key_i" msgid="6483655742552255124">"i"</string> <string name="tip_long_press" msgid="6101270866284343344">"ã‚ー長押ã—ã§ã‚¢ã‚¯ã‚»ãƒ³ãƒˆæ–‡å—を表示(øã€Ã¶ãªã©ï¼‰"</string> <string name="tip_dismiss" msgid="7585579046862204381">"戻るã‚ーã§ã‚ーボードを閉ã˜ã¾ã™"</string> <string name="tip_access_symbols" msgid="6344098517525531652">"æ•°å—ã¨è¨˜å·"</string> @@ -87,4 +88,9 @@ <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"ã‚ーボードを閉ã˜ã‚‹"\n</b></font><font size="3">\n</font>"[戻る]ã‚ーを押ã—ã¾ã™ã€‚"</string> <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"ã‚ーを長押ã—ã—ã¦é¸æŠžã™ã‚‹"\n</b></font><font size="3">\n</font>"å¥èªç‚¹ã‚ーã¨ã‚¢ã‚¯ã‚»ãƒ³ãƒˆæ–‡å—を表示ã—ã¾ã™ã€‚"</string> <string name="keyboard_settings" msgid="4585753477617374032"><font size="17"><b>"ã‚ーボードã®è¨å®š"\n</b></font><font size="3">\n</font>"["<b>"?123"</b>"]ã‚ーを長押ã—ã—ã¾ã™ã€‚"</string> + <string name="popular_domain_0" msgid="3745279225122472969">".com"</string> + <string name="popular_domain_1" msgid="1370572248164278467">".net"</string> + <string name="popular_domain_2" msgid="3036812463748402878">".org"</string> + <string name="popular_domain_3" msgid="8718639560809452028">".gov"</string> + <string name="popular_domain_4" msgid="35359437471311470">".edu"</string> </resources> diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index 0c3b970d0a..570780f784 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -63,6 +63,7 @@ <string name="alternates_for_n" msgid="6257322556221886400">"ñ"</string> <string name="alternates_for_c" msgid="151699780720639892">"ç"</string> <string name="alternates_for_y" msgid="1722776806607271199">"ýÿ"</string> + <string name="key_i" msgid="6483655742552255124">"i"</string> <string name="tip_long_press" msgid="6101270866284343344">"키를 길게 누르면 악센트(ø, ö 등)ê°€ 표시ë©ë‹ˆë‹¤."</string> <string name="tip_dismiss" msgid="7585579046862204381">"키보드를 ë‹«ìœ¼ë ¤ë©´ ì–¸ì œë“ ì§€ 뒤로 키(↶)를 누르세요."</string> <string name="tip_access_symbols" msgid="6344098517525531652">"ìˆ«ìž ë° ê¸°í˜¸ 액세스"</string> @@ -83,12 +84,13 @@ <string name="label_phone_key" msgid="4275497665515080551">"123"</string> <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string> <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string> - <!-- no translation found for open_the_keyboard (2215920976029260466) --> - <skip /> - <!-- no translation found for close_the_keyboard (6251022259044940103) --> - <skip /> - <!-- no translation found for touch_and_hold (6154166367273010534) --> - <skip /> - <!-- no translation found for keyboard_settings (4585753477617374032) --> - <skip /> + <string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"키보드 열기"\n</b></font><font size="3">\n</font>"아무 í…스트 ìž…ë ¥ëž€ì´ë‚˜ 터치하세요."</string> + <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"키보드 닫기"\n</b></font><font size="3">\n</font>"\'뒤로\' 키를 누르세요."</string> + <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"키를 길게 터치하여 옵션 보기"\n</b></font><font size="3">\n</font>"문장 부호 ë° ì•…ì„¼íŠ¸ ê¸°í˜¸ì— ì•¡ì„¸ìŠ¤í•˜ì„¸ìš”."</string> + <string name="keyboard_settings" msgid="4585753477617374032"><font size="17"><b>"키보드 ì„¤ì •"\n</b></font><font size="3">\n</font><b>"?123"</b>" 키를 길게 터치하세요."</string> + <string name="popular_domain_0" msgid="3745279225122472969">".com"</string> + <string name="popular_domain_1" msgid="1370572248164278467">".net"</string> + <string name="popular_domain_2" msgid="3036812463748402878">".org"</string> + <string name="popular_domain_3" msgid="8718639560809452028">".gov"</string> + <string name="popular_domain_4" msgid="35359437471311470">".edu"</string> </resources> diff --git a/res/values-land/dimens.xml b/res/values-land/dimens.xml index c5c828ef69..43951552e5 100644 --- a/res/values-land/dimens.xml +++ b/res/values-land/dimens.xml @@ -20,4 +20,6 @@ <resources> <dimen name="key_height">47dip</dimen> + <dimen name="candidate_strip_height">38dip</dimen> + <dimen name="spacebar_vertical_correction">2dip</dimen> </resources> \ No newline at end of file diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml index fdaf0244a8..bafc613f6d 100644 --- a/res/values-nb/strings.xml +++ b/res/values-nb/strings.xml @@ -47,12 +47,9 @@ <item msgid="1669461741568287396">"Grunnleggende"</item> <item msgid="4894328801530136615">"Avansert"</item> </string-array> - <!-- no translation found for prediction_none (2472795101338047944) --> - <skip /> - <!-- no translation found for prediction_basic (8407291081834155558) --> - <skip /> - <!-- no translation found for prediction_full (3765102052052510268) --> - <skip /> + <string name="prediction_none" msgid="2472795101338047944">"0"</string> + <string name="prediction_basic" msgid="8407291081834155558">"1"</string> + <string name="prediction_full" msgid="3765102052052510268">"2"</string> <!-- no translation found for prediction_modes_values:0 (579944677836100459) --> <!-- no translation found for prediction_modes_values:1 (7214414132844804570) --> <!-- no translation found for prediction_modes_values:2 (6678546276084314171) --> @@ -66,6 +63,7 @@ <string name="alternates_for_n" msgid="6257322556221886400">"ñ"</string> <string name="alternates_for_c" msgid="151699780720639892">"ç"</string> <string name="alternates_for_y" msgid="1722776806607271199">"ýÿ"</string> + <string name="key_i" msgid="6483655742552255124">"i"</string> <string name="tip_long_press" msgid="6101270866284343344">"Hold en tast nede for Ã¥ se aksenterte tegn (ø, ö, osv.)"</string> <string name="tip_dismiss" msgid="7585579046862204381">"Trykk tilbakeknappen, ↶, for Ã¥ lukke tastaturet"</string> <string name="tip_access_symbols" msgid="6344098517525531652">"FÃ¥ tilgang til tall og symboler"</string> @@ -87,7 +85,12 @@ <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string> <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string> <string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"Ã…pne tastaturet"\n</b></font><font size="3">\n</font>"Trykk pÃ¥ et tekstfelt."</string> - <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Lukk tastaturet"\n</b></font><font size="3">\n</font>"Trykk tilbake-knappen."</string> + <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Lukke tastaturet"\n</b></font><font size="3">\n</font>"Trykk pÃ¥ tilbaketasten."</string> <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Trykk og hold nede en tast for flere valg"\n</b></font><font size="3">\n</font>"FÃ¥ tilgang til skilletegn og aksenter."</string> - <string name="keyboard_settings" msgid="4585753477617374032"><font size="17"><b>"Tastaturinnstillinger"\n</b></font><font size="3">\n</font>"Trykk og hold nede "<b>"?123"</b>"-knappen."</string> + <string name="keyboard_settings" msgid="4585753477617374032"><font size="17"><b>"Innstillinger for tastatur"\n</b></font><font size="3">\n</font>"Trykk pÃ¥ & hold "<b>"?123"</b>"-tasten."</string> + <string name="popular_domain_0" msgid="3745279225122472969">".no"</string> + <string name="popular_domain_1" msgid="1370572248164278467">".com"</string> + <string name="popular_domain_2" msgid="3036812463748402878">".net"</string> + <string name="popular_domain_3" msgid="8718639560809452028">".org"</string> + <string name="popular_domain_4" msgid="35359437471311470">".info"</string> </resources> diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index ab42128c27..427dcf75c5 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -63,6 +63,7 @@ <string name="alternates_for_n" msgid="6257322556221886400">"ñ"</string> <string name="alternates_for_c" msgid="151699780720639892">"ç"</string> <string name="alternates_for_y" msgid="1722776806607271199">"ýÿ"</string> + <string name="key_i" msgid="6483655742552255124">"i"</string> <string name="tip_long_press" msgid="6101270866284343344">"Houd een toets ingedrukt om diakritische tekens weer te geven (ø, ö, enzovoort)"</string> <string name="tip_dismiss" msgid="7585579046862204381">"Druk op elk gewenst moment op de toets Terug ↶ om het toetsenbord te sluiten"</string> <string name="tip_access_symbols" msgid="6344098517525531652">"Toegang tot cijfers en symbolen"</string> @@ -87,4 +88,9 @@ <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Het toetsenbord sluiten"\n</b></font><font size="3">\n</font>"Druk op de terugtoets."</string> <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Een toets blijven aanraken voor opties"\n</b></font><font size="3">\n</font>"Toegang tot interpunctie en diakritische tekens."</string> <string name="keyboard_settings" msgid="4585753477617374032"><font size="17"><b>"Toetsenbordinstellingen"\n</b></font><font size="3">\n</font>"Blijf de toets "<b>"?123"</b>" aanraken."</string> + <string name="popular_domain_0" msgid="3745279225122472969">".com"</string> + <string name="popular_domain_1" msgid="1370572248164278467">".net"</string> + <string name="popular_domain_2" msgid="3036812463748402878">".org"</string> + <string name="popular_domain_3" msgid="8718639560809452028">".gov"</string> + <string name="popular_domain_4" msgid="35359437471311470">".edu"</string> </resources> diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index bc0f7039fc..663932d38f 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -63,6 +63,7 @@ <string name="alternates_for_n" msgid="6257322556221886400">"Å„"</string> <string name="alternates_for_c" msgid="151699780720639892">"ć"</string> <string name="alternates_for_y" msgid="1722776806607271199">"ýÿ"</string> + <string name="key_i" msgid="6483655742552255124">"i"</string> <string name="tip_long_press" msgid="6101270866284343344">"Przytrzymaj klawisz, aby wyÅ›wietlić znaki akcentowane (Ä…, ó itp.)"</string> <string name="tip_dismiss" msgid="7585579046862204381">"NaciÅ›nij klawisz cofania ↶, aby zamknąć klawiaturÄ™ w dowolnym momencie"</string> <string name="tip_access_symbols" msgid="6344098517525531652">"Przejdź do cyfr i symboli"</string> @@ -87,4 +88,9 @@ <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Zamknij klawiaturÄ™"\n</b></font><font size="3">\n</font>"NaciÅ›nij klawisz Wróć."</string> <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Dotknij klawisza i przytrzymaj go, aby wyÅ›wietlić opcje"\n</b></font><font size="3">\n</font>"DostÄ™p do znaków przestankowych i akcentowanych."</string> <string name="keyboard_settings" msgid="4585753477617374032"><font size="17"><b>"Ustawienia klawiatury"\n</b></font><font size="3">\n</font>"Dotknij klawisza "<b>"?123"</b>" i przytrzymaj go."</string> + <string name="popular_domain_0" msgid="3745279225122472969">".com"</string> + <string name="popular_domain_1" msgid="1370572248164278467">".net"</string> + <string name="popular_domain_2" msgid="3036812463748402878">".org"</string> + <string name="popular_domain_3" msgid="8718639560809452028">".gov"</string> + <string name="popular_domain_4" msgid="35359437471311470">".edu"</string> </resources> diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml index 2c09a18dfd..da89aeca97 100644 --- a/res/values-pt-rPT/strings.xml +++ b/res/values-pt-rPT/strings.xml @@ -63,6 +63,7 @@ <string name="alternates_for_n" msgid="6257322556221886400">"ñ"</string> <string name="alternates_for_c" msgid="151699780720639892">"ç"</string> <string name="alternates_for_y" msgid="1722776806607271199">"ýÿ"</string> + <string name="key_i" msgid="6483655742552255124">"i"</string> <string name="tip_long_press" msgid="6101270866284343344">"Mantenha uma tecla premida para ver os acentos (ø, ö, etc.)"</string> <string name="tip_dismiss" msgid="7585579046862204381">"Prima a tecla de retrocesso ↶ para fechar o teclado a qualquer momento"</string> <string name="tip_access_symbols" msgid="6344098517525531652">"Aceder a números e sÃmbolos"</string> @@ -83,12 +84,13 @@ <string name="label_phone_key" msgid="4275497665515080551">"123"</string> <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string> <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string> - <!-- no translation found for open_the_keyboard (2215920976029260466) --> - <skip /> - <!-- no translation found for close_the_keyboard (6251022259044940103) --> - <skip /> - <!-- no translation found for touch_and_hold (6154166367273010534) --> - <skip /> - <!-- no translation found for keyboard_settings (4585753477617374032) --> - <skip /> + <string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"Abra o teclado"\n</b></font><font size="3">\n</font>"Toque em qualquer campo de texto."</string> + <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Feche o teclado"\n</b></font><font size="3">\n</font>"Prima a tecla \"Anterior\"."</string> + <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Mantenha premida uma tecla para as opções"\n</b></font><font size="3">\n</font>"Aceder a pontuação e acentos."</string> + <string name="keyboard_settings" msgid="4585753477617374032"><font size="17"><b>"Definições do teclado"\n</b></font><font size="3">\n</font>"Mantenha premida a tecla "<b>"?123"</b>"."</string> + <string name="popular_domain_0" msgid="3745279225122472969">".com"</string> + <string name="popular_domain_1" msgid="1370572248164278467">".net"</string> + <string name="popular_domain_2" msgid="3036812463748402878">".org"</string> + <string name="popular_domain_3" msgid="8718639560809452028">".gov"</string> + <string name="popular_domain_4" msgid="35359437471311470">".edu"</string> </resources> diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml index 159f3f3df9..978215ff45 100644 --- a/res/values-pt/strings.xml +++ b/res/values-pt/strings.xml @@ -17,8 +17,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="english_ime_name" msgid="7252517407088836577">"Teclado Android"</string> <string name="english_ime_settings" msgid="6661589557206947774">"Configurações de teclado Android"</string> - <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibrar ao pressionar a tecla"</string> - <string name="sound_on_keypress" msgid="6093592297198243644">"Som ao pressionar a tecla"</string> + <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibrar ao tocar a tecla"</string> + <string name="sound_on_keypress" msgid="6093592297198243644">"Som ao tocar a tecla"</string> <string name="hit_correction" msgid="4855351009261318389">"Corrigir erros de digitação"</string> <string name="hit_correction_summary" msgid="8761701873008070796">"Ativar a correção de erro de entrada"</string> <string name="hit_correction_land" msgid="2567691684825205448">"Erros de entrada de paisagem"</string> @@ -31,7 +31,7 @@ <string name="auto_complete_dialog_title" msgid="2172048590607201920">"Conclusão automática"</string> <string name="prediction_landscape" msgid="4874601565593216183">"Aumentar o tamanho do arquivo de texto"</string> <string name="prediction_landscape_summary" msgid="6736551095997839472">"Ocultar sugestões de palavra na visualização da paisagem"</string> - <string name="auto_cap" msgid="1719746674854628252">"Capitalização automática"</string> + <string name="auto_cap" msgid="1719746674854628252">"Capitaliz. automática"</string> <string name="auto_cap_summary" msgid="3260681697600786825">"Colocar em maiúscula o inÃcio de uma frase"</string> <string name="auto_punctuate" msgid="7276672334264521751">"Pontuação automática"</string> <!-- no translation found for auto_punctuate_summary (6589441565817502132) --> @@ -41,7 +41,7 @@ <string name="show_suggestions" msgid="507074425254289133">"Mostrar sugestões"</string> <string name="show_suggestions_summary" msgid="1989672863935759654">"Exibir sugestões de palavras durante a digitação"</string> <string name="auto_complete" msgid="1103196318775486023">"Conclusão automática"</string> - <string name="auto_complete_summary" msgid="6113149638718274624">"A barra de espaço e pontuação inserem automaticamente a palavra destacada"</string> + <string name="auto_complete_summary" msgid="6113149638718274624">"Barra de espaço e pontuação inserem a palavra destacada"</string> <string-array name="prediction_modes"> <item msgid="4870266572388153286">"Nenhum"</item> <item msgid="1669461741568287396">"Básico"</item> @@ -63,6 +63,7 @@ <string name="alternates_for_n" msgid="6257322556221886400">"ñ"</string> <string name="alternates_for_c" msgid="151699780720639892">"ç"</string> <string name="alternates_for_y" msgid="1722776806607271199">"ýÿ"</string> + <string name="key_i" msgid="6483655742552255124">"i"</string> <string name="tip_long_press" msgid="6101270866284343344">"Segure uma tecla pressionada para ver os acentos (ø, ö, etc.)"</string> <string name="tip_dismiss" msgid="7585579046862204381">"Apertar a tecla voltar ↶ para fechar o teclado, em qualquer ponto"</string> <string name="tip_access_symbols" msgid="6344098517525531652">"Acessar números e sÃmbolos"</string> @@ -76,19 +77,20 @@ <string name="tip_to_launch_settings" msgid="8402961128983196128"><b>"Tocar e segurar esta tecla para alterar as configurações do teclado, como a conclusão automática"</b></string> <string name="tip_to_start_typing" msgid="7213843601369174313"><b>"Experimente!"</b></string> <string name="label_go_key" msgid="1635148082137219148">"Ir"</string> - <string name="label_next_key" msgid="362972844525672568">"Próximo"</string> + <string name="label_next_key" msgid="362972844525672568">"Avançar"</string> <string name="label_done_key" msgid="2441578748772529288">"Feito"</string> <string name="label_send_key" msgid="2815056534433717444">"Enviar"</string> <string name="label_symbol_key" msgid="6175820506864489453">"?123"</string> <string name="label_phone_key" msgid="4275497665515080551">"123"</string> <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string> <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string> - <!-- no translation found for open_the_keyboard (2215920976029260466) --> - <skip /> - <!-- no translation found for close_the_keyboard (6251022259044940103) --> - <skip /> - <!-- no translation found for touch_and_hold (6154166367273010534) --> - <skip /> - <!-- no translation found for keyboard_settings (4585753477617374032) --> - <skip /> + <string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"Abra o teclado"\n</b></font><font size="3">\n</font>"Toque em qualquer campo de texto."</string> + <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Feche o teclado"\n</b></font><font size="3">\n</font>"Pressione a tecla Voltar."</string> + <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Toque e mantenha pressionada uma tecla para ver as opções"\n</b></font><font size="3">\n</font>"Acesse a pontuação e as pronúncias."</string> + <string name="keyboard_settings" msgid="4585753477617374032"><font size="17"><b>"Configurações de teclado"\n</b></font><font size="3">\n</font>"Toque e mantenha pressionada a tecla "<b>"?123"</b>"."</string> + <string name="popular_domain_0" msgid="3745279225122472969">".com"</string> + <string name="popular_domain_1" msgid="1370572248164278467">".net"</string> + <string name="popular_domain_2" msgid="3036812463748402878">".org"</string> + <string name="popular_domain_3" msgid="8718639560809452028">".gov"</string> + <string name="popular_domain_4" msgid="35359437471311470">".edu"</string> </resources> diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index eebe1771b7..25c5d341f9 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -63,6 +63,7 @@ <string name="alternates_for_n" msgid="6257322556221886400">"ñ"</string> <string name="alternates_for_c" msgid="151699780720639892">"ç"</string> <string name="alternates_for_y" msgid="1722776806607271199">"ýÿ"</string> + <string name="key_i" msgid="6483655742552255124">"i"</string> <string name="tip_long_press" msgid="6101270866284343344">"Удерживайте клавишу, чтобы увидеть варианты Ñ Ð´Ð¸Ð°ÐºÑ€Ð¸Ñ‚Ð¸Ñ‡ÐµÑкими знаками (ø, ö и Ñ‚.д.)"</string> <string name="tip_dismiss" msgid="7585579046862204381">"Ðажмите клавишу \"Ðазад\" ↶, чтобы закрыть клавиатуру в любой момент"</string> <string name="tip_access_symbols" msgid="6344098517525531652">"Открыть цифры и Ñимволы"</string> @@ -83,12 +84,13 @@ <string name="label_phone_key" msgid="4275497665515080551">"123"</string> <string name="label_alpha_key" msgid="8864943487292437456">"ÐБВ"</string> <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string> - <!-- no translation found for open_the_keyboard (2215920976029260466) --> - <skip /> - <!-- no translation found for close_the_keyboard (6251022259044940103) --> - <skip /> - <!-- no translation found for touch_and_hold (6154166367273010534) --> - <skip /> - <!-- no translation found for keyboard_settings (4585753477617374032) --> - <skip /> + <string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"Откройте клавиатуру"\n</b></font><font size="3">\n</font>"Ðажмите на любое текÑтовое поле."</string> + <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Закрытие клавиатуры"\n</b></font><font size="3">\n</font>"Ðажмите клавишу \"Ðазад\"."</string> + <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Ðажмите и удерживайте клавишу Ð´Ð»Ñ Ð²Ñ‹Ð·Ð¾Ð²Ð° параметров"\n</b></font><font size="3">\n</font>"ДоÑтуп к пунктуационным и диакритичеÑким знакам."</string> + <string name="keyboard_settings" msgid="4585753477617374032"><font size="17"><b>"ÐаÑтройки клавиатуры"\n</b></font><font size="3">\n</font>"Ðажмите и удерживайте клавишу "<b>"?123"</b>"."</string> + <string name="popular_domain_0" msgid="3745279225122472969">".com"</string> + <string name="popular_domain_1" msgid="1370572248164278467">".net"</string> + <string name="popular_domain_2" msgid="3036812463748402878">".org"</string> + <string name="popular_domain_3" msgid="8718639560809452028">".gov"</string> + <string name="popular_domain_4" msgid="35359437471311470">".edu"</string> </resources> diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml index 994d17189b..38fdaf20b7 100644 --- a/res/values-sv/strings.xml +++ b/res/values-sv/strings.xml @@ -63,6 +63,7 @@ <string name="alternates_for_n" msgid="6257322556221886400">"ñ"</string> <string name="alternates_for_c" msgid="151699780720639892">"ç"</string> <string name="alternates_for_y" msgid="1722776806607271199">"ýÿ"</string> + <string name="key_i" msgid="6483655742552255124">"i"</string> <string name="tip_long_press" msgid="6101270866284343344">"HÃ¥ll nere en tangent om du vill visa accenter (ø, ö, etc.)"</string> <string name="tip_dismiss" msgid="7585579046862204381">"Tryck pÃ¥ Tillbaka ↶ om du vill stänga tangentbordet"</string> <string name="tip_access_symbols" msgid="6344098517525531652">"För siffror och symboler"</string> @@ -83,12 +84,13 @@ <string name="label_phone_key" msgid="4275497665515080551">"123"</string> <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string> <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string> - <!-- no translation found for open_the_keyboard (2215920976029260466) --> - <skip /> - <!-- no translation found for close_the_keyboard (6251022259044940103) --> - <skip /> - <!-- no translation found for touch_and_hold (6154166367273010534) --> - <skip /> - <!-- no translation found for keyboard_settings (4585753477617374032) --> - <skip /> + <string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"Öppna tangentbordet"\n</b></font><font size="3">\n</font>"Tryck pÃ¥ ett textfält."</string> + <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Stäng tangentbordet"\n</b></font><font size="3">\n</font>"Tryck pÃ¥ Tillbaka."</string> + <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Tryck länge pÃ¥ en tangent om du vill se alternativ"\n</b></font><font size="3">\n</font>"Använda skiljetecken och accenter."</string> + <string name="keyboard_settings" msgid="4585753477617374032"><font size="17"><b>"Tangentbordsinställningar"\n</b></font><font size="3">\n</font>"Tryck länge pÃ¥ tangenten "<b>"?123"</b>"."</string> + <string name="popular_domain_0" msgid="3745279225122472969">".com"</string> + <string name="popular_domain_1" msgid="1370572248164278467">".net"</string> + <string name="popular_domain_2" msgid="3036812463748402878">".org"</string> + <string name="popular_domain_3" msgid="8718639560809452028">".gov"</string> + <string name="popular_domain_4" msgid="35359437471311470">".edu"</string> </resources> diff --git a/res/values-tr/donottranslate.xml b/res/values-tr/donottranslate.xml new file mode 100644 index 0000000000..f206e4c438 --- /dev/null +++ b/res/values-tr/donottranslate.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2009, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Accented characters related to "g" --> + <string name="alternates_for_g">ÄŸ</string> +</resources> diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index 33b8b79d4b..fe5ee893bf 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -31,7 +31,7 @@ <string name="auto_complete_dialog_title" msgid="2172048590607201920">"Otomatik tamamlama"</string> <string name="prediction_landscape" msgid="4874601565593216183">"Metin alanı boyutunu artır"</string> <string name="prediction_landscape_summary" msgid="6736551095997839472">"Yatay görünümde kelime önerilerini gizle"</string> - <string name="auto_cap" msgid="1719746674854628252">"Ot. olarak büyük harf yap"</string> + <string name="auto_cap" msgid="1719746674854628252">"Otomatik olarak büyük harf yap"</string> <string name="auto_cap_summary" msgid="3260681697600786825">"Cümlenin baÅŸ harfini büyük yap"</string> <string name="auto_punctuate" msgid="7276672334264521751">"Otomatik noktalama"</string> <!-- no translation found for auto_punctuate_summary (6589441565817502132) --> @@ -56,13 +56,14 @@ <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Kaydedildi"</string> <string name="alternates_for_a" msgid="2566516493365324765">"à áâãäåæ"</string> <string name="alternates_for_e" msgid="3900510936875547555">"èéêë"</string> - <string name="alternates_for_i" msgid="7097915268629342242">"ıìÃîï"</string> + <string name="alternates_for_i" msgid="7097915268629342242">"iìÃîï"</string> <string name="alternates_for_o" msgid="6151402748321267776">"öòóôõœø"</string> <string name="alternates_for_u" msgid="5899096818189442934">"üùúû"</string> <string name="alternates_for_s" msgid="348762530927662188">"ş§ß"</string> <string name="alternates_for_n" msgid="6257322556221886400">"ñ"</string> <string name="alternates_for_c" msgid="151699780720639892">"ç"</string> <string name="alternates_for_y" msgid="1722776806607271199">"ýÿ"</string> + <string name="key_i" msgid="6483655742552255124">"i"</string> <string name="tip_long_press" msgid="6101270866284343344">"Vurguları görmek için bir tuÅŸu basılı tutun (ø, ö, v.b.)"</string> <string name="tip_dismiss" msgid="7585579046862204381">"Klavyeyi herhangi bir anda kapatmak için geri tuÅŸuna ↶ basın"</string> <string name="tip_access_symbols" msgid="6344098517525531652">"Sayılara ve simgelere eriÅŸin"</string> @@ -83,12 +84,13 @@ <string name="label_phone_key" msgid="4275497665515080551">"123"</string> <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string> <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string> - <!-- no translation found for open_the_keyboard (2215920976029260466) --> - <skip /> - <!-- no translation found for close_the_keyboard (6251022259044940103) --> - <skip /> - <!-- no translation found for touch_and_hold (6154166367273010534) --> - <skip /> - <!-- no translation found for keyboard_settings (4585753477617374032) --> - <skip /> + <string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"Klavyeyi açın"\n</b></font><font size="3">\n</font>"Herhangi bir metin alanına dokunun."</string> + <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"Klavyeyi kapatın"\n</b></font><font size="3">\n</font>"Geri tuÅŸuna basın."</string> + <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"Seçenekler için bir tuÅŸa dokunun ve basılı tutun"\n</b></font><font size="3">\n</font>"Noktalama ve vurgulama iÅŸaretlerine eriÅŸin."</string> + <string name="keyboard_settings" msgid="4585753477617374032"><font size="17"><b>"Klavye ayarları"\n</b></font><font size="3">\n</font><b>"?123"</b>" tuÅŸuna dokunun ve basılı tutun."</string> + <string name="popular_domain_0" msgid="3745279225122472969">".com"</string> + <string name="popular_domain_1" msgid="1370572248164278467">".net"</string> + <string name="popular_domain_2" msgid="3036812463748402878">".org"</string> + <string name="popular_domain_3" msgid="8718639560809452028">".gov"</string> + <string name="popular_domain_4" msgid="35359437471311470">".edu"</string> </resources> diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index 720d30fae5..c68b795c97 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -63,17 +63,18 @@ <string name="alternates_for_n" msgid="6257322556221886400">"ñ"</string> <string name="alternates_for_c" msgid="151699780720639892">"ç"</string> <string name="alternates_for_y" msgid="1722776806607271199">"ýÿ"</string> - <string name="tip_long_press" msgid="6101270866284343344">"长按键å¯ä»¥æŸ¥çœ‹é‡éŸ³ç¬¦å·ï¼ˆÃ¸ã€Ã¶ ç‰ï¼‰"</string> + <string name="key_i" msgid="6483655742552255124">"i"</string> + <string name="tip_long_press" msgid="6101270866284343344">"长按æŸäº›é”®å¯çœ‹åˆ°é‡éŸ³ç¬¦å·ï¼ˆä¾‹å¦‚ øã€Ã¶ ç‰ï¼‰"</string> <string name="tip_dismiss" msgid="7585579046862204381">"éšæ—¶å¯ä»¥é€šè¿‡æŒ‰åŽé€€é”® ↶ å…³é—键盘"</string> <string name="tip_access_symbols" msgid="6344098517525531652">"访问数å—和符å·"</string> - <string name="tip_add_to_dictionary" msgid="1487293888469227817">"按ä½æœ€å·¦ä¾§çš„å—è¯å¯ä»¥å°†å…¶æ·»åŠ 到å—å…¸ä¸"</string> + <string name="tip_add_to_dictionary" msgid="1487293888469227817">"长按最左侧的å—å¯å°†å…¶æ·»åŠ 到è¯å…¸ä¸"</string> <string name="touch_to_continue" msgid="7869803257948414531">"轻触æ¤æç¤ºç»§ç» Â»"</string> <string name="touch_to_finish" msgid="7990196086480585789">"轻触æ¤å¤„å¯å…³é—该æ示,然åŽä¾¿å¯å¼€å§‹è¾“入内容ï¼"</string> <string name="tip_to_open_keyboard" msgid="6821200275486950452"><b>"轻触文本å—段å³å¯æ‰“开键盘"</b></string> - <string name="tip_to_view_accents" msgid="5433158573693308501"><b>"轻触并按ä½æŸä¸ªé”®å¯ä»¥æŸ¥çœ‹é‡éŸ³ç¬¦å·"\n"(?, ?, ?, ó ç‰ï¼‰"</b></string> + <string name="tip_to_view_accents" msgid="5433158573693308501"><b>"长按æŸäº›é”®å¯çœ‹åˆ°é‡éŸ³ç¬¦å·"\n"(例如 øã€Ã¶ã€Ã´ã€Ã³ ç‰ï¼‰"</b></string> <string name="tip_to_open_symbols" msgid="7345139325622444880"><b>"轻触该键å¯åˆ‡æ¢åˆ°æ•°å—和符å·è¾“入模å¼"</b></string> <string name="tip_to_close_symbols" msgid="5227724217206927185"><b>"å†æ¬¡è½»è§¦è¯¥é”®å¯è¿”回å—æ¯è¾“入模å¼"</b></string> - <string name="tip_to_launch_settings" msgid="8402961128983196128"><b>"轻触并按ä½è¯¥é”®å¯ä»¥æ›´æ”¹é”®ç›˜è®¾ç½®ï¼Œä¾‹å¦‚自动输入"</b></string> + <string name="tip_to_launch_settings" msgid="8402961128983196128"><b>"长按该键å¯æ›´æ”¹é”®ç›˜è®¾ç½®ï¼Œä¾‹å¦‚自动输入"</b></string> <string name="tip_to_start_typing" msgid="7213843601369174313"><b>"试试å§ï¼"</b></string> <string name="label_go_key" msgid="1635148082137219148">"开始"</string> <string name="label_next_key" msgid="362972844525672568">"下一æ¥"</string> @@ -83,12 +84,13 @@ <string name="label_phone_key" msgid="4275497665515080551">"123"</string> <string name="label_alpha_key" msgid="8864943487292437456">"ABC"</string> <string name="label_alt_key" msgid="2846315350346694811">"ALT"</string> - <!-- no translation found for open_the_keyboard (2215920976029260466) --> - <skip /> - <!-- no translation found for close_the_keyboard (6251022259044940103) --> - <skip /> - <!-- no translation found for touch_and_hold (6154166367273010534) --> - <skip /> - <!-- no translation found for keyboard_settings (4585753477617374032) --> - <skip /> + <string name="open_the_keyboard" msgid="2215920976029260466"><font size="17"><b>"打开键盘"\n</b></font><font size="3">\n</font>"轻触任æ„文本å—段。"</string> + <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"å…³é—键盘"\n</b></font><font size="3">\n</font>"按“返回â€é”®ã€‚"</string> + <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>"长按æŸäº›é”®å¯å¼€å¯å…¶ä»–å—符选项"\n</b></font><font size="3">\n</font>"è®¿é—®æ ‡ç‚¹å’Œé‡éŸ³ç¬¦å·ã€‚"</string> + <string name="keyboard_settings" msgid="4585753477617374032"><font size="17"><b>"键盘设置"\n</b></font><font size="3">\n</font>"长按 "<b>"?123"</b>" 键。"</string> + <string name="popular_domain_0" msgid="3745279225122472969">".com"</string> + <string name="popular_domain_1" msgid="1370572248164278467">".net"</string> + <string name="popular_domain_2" msgid="3036812463748402878">".org"</string> + <string name="popular_domain_3" msgid="8718639560809452028">".gov"</string> + <string name="popular_domain_4" msgid="35359437471311470">".edu"</string> </resources> diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index 69d82cca3f..8d93b311ae 100644 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -63,6 +63,7 @@ <string name="alternates_for_n" msgid="6257322556221886400">"ñ"</string> <string name="alternates_for_c" msgid="151699780720639892">"ç"</string> <string name="alternates_for_y" msgid="1722776806607271199">"ýÿ"</string> + <string name="key_i" msgid="6483655742552255124">"i"</string> <string name="tip_long_press" msgid="6101270866284343344">"按ä½æŒ‰éµå¯æŸ¥çœ‹é‡éŸ³ç¬¦è™Ÿ (øã€Ã¶ ç‰)"</string> <string name="tip_dismiss" msgid="7585579046862204381">"隨時å¯ä»¥é€éŽæŒ‰å¾Œé€€éµ ↶ 關閉éµç›¤"</string> <string name="tip_access_symbols" msgid="6344098517525531652">"使用數å—和符號"</string> @@ -87,4 +88,9 @@ <string name="close_the_keyboard" msgid="6251022259044940103"><font size="17"><b>"關閉éµç›¤"\n</b></font><font size="3">\n</font>"按下 Back éµã€‚"</string> <string name="touch_and_hold" msgid="6154166367273010534"><font size="17"><b>\n"輕觸並按ä½æŒ‰éµé–‹å•Ÿé¸é …"</b></font><font size="3">\n</font>"輸入標點與輕é‡éŸ³ã€‚"</string> <string name="keyboard_settings" msgid="4585753477617374032"><font size="17"><b>"éµç›¤è¨å®š"\n</b></font><font size="3">\n</font>"è¼•è§¸ä¸¦æŒ‰ä½ "<b>"?123"</b>" éµã€‚"</string> + <string name="popular_domain_0" msgid="3745279225122472969">".com"</string> + <string name="popular_domain_1" msgid="1370572248164278467">".net"</string> + <string name="popular_domain_2" msgid="3036812463748402878">".org"</string> + <string name="popular_domain_3" msgid="8718639560809452028">".gov"</string> + <string name="popular_domain_4" msgid="35359437471311470">".edu"</string> </resources> diff --git a/res/values/bools.xml b/res/values/bools.xml index 06aa8f308c..3a951b2719 100644 --- a/res/values/bools.xml +++ b/res/values/bools.xml @@ -19,7 +19,7 @@ --> <resources> <!-- Whether or not auto-correction should be enabled by default --> - <bool name="enable_autocorrect">false</bool> + <bool name="enable_autocorrect">true</bool> <!-- Whether this input method should be used as the default for a locale. Override it for latin languages. --> <bool name="im_is_default">false</bool> diff --git a/res/values/dimens.xml b/res/values/dimens.xml index d757f096d7..5b2095c0e5 100644 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -19,6 +19,8 @@ --> <resources> - <dimen name="key_height">50dip</dimen> + <dimen name="key_height">54dip</dimen> <dimen name="bubble_pointer_offset">22dip</dimen> + <dimen name="candidate_strip_height">42dip</dimen> + <dimen name="spacebar_vertical_correction">4dip</dimen> </resources> \ No newline at end of file diff --git a/res/values/donottranslate.xml b/res/values/donottranslate.xml index d9649f3b19..c6941949ed 100644 --- a/res/values/donottranslate.xml +++ b/res/values/donottranslate.xml @@ -32,4 +32,6 @@ <string name="alternates_for_z"></string> <!-- Accented characters related to "l" --> <string name="alternates_for_l"></string> + <!-- Accented characters related to "g" --> + <string name="alternates_for_g"></string> </resources> diff --git a/res/values/strings.xml b/res/values/strings.xml index 2cd996c2ed..ec9a8b731c 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -125,7 +125,10 @@ <string name="alternates_for_c">ç</string> <!-- Accented forms of "y" --> <string name="alternates_for_y">ýÿ</string> - + + <!-- Label to display on the "i" key --> + <string name="key_i">i</string> + <!-- Tip to long press on keys --> <string name="tip_long_press">Hold a key down to see accents (ø, ö, etc.)</string> <!-- Tip to dismiss keyboard --> @@ -191,4 +194,15 @@ <!-- appears above image showing how to access keyboard settings --> <string name="keyboard_settings"><font size="17"><b>Keyboard settings\n</b></font><font size="3">\n</font>Touch \u0026 hold the <b>\?123\</b> key.</string> + + <!-- popular web domains for the locale - most popular, displayed on the keyboard --> + <string name="popular_domain_0">".com"</string> + <!-- popular web domains for the locale - item 1, displayed in the popup --> + <string name="popular_domain_1">".net"</string> + <!-- popular web domains for the locale - item 2, displayed in the popup --> + <string name="popular_domain_2">".org"</string> + <!-- popular web domains for the locale - item 3, displayed in the popup --> + <string name="popular_domain_3">".gov"</string> + <!-- popular web domains for the locale - item 4, displayed in the popup --> + <string name="popular_domain_4">".edu"</string> </resources> diff --git a/res/xml-de/kbd_qwerty.xml b/res/xml-de/kbd_qwerty.xml index 763492db5a..56113e217c 100755 --- a/res/xml-de/kbd_qwerty.xml +++ b/res/xml-de/kbd_qwerty.xml @@ -69,7 +69,7 @@ </Row> <Row> - <Key android:codes="-1" android:keyIcon="@drawable/sym_keyboard_shift" + <Key android:codes="-1" android:keyIcon="@drawable/sym_keyboard_shift" android:keyWidth="15%p" android:isModifier="true" android:iconPreview="@drawable/sym_keyboard_feedback_shift" android:isSticky="true" android:keyEdgeFlags="left"/> @@ -89,43 +89,44 @@ android:popupCharacters="@string/alternates_for_n" /> <Key android:codes="109" android:keyLabel="m"/> - <Key android:codes="-5" android:keyIcon="@drawable/sym_keyboard_delete" + <Key android:codes="-5" android:keyIcon="@drawable/sym_keyboard_delete" android:keyWidth="15%p" android:keyEdgeFlags="right" android:iconPreview="@drawable/sym_keyboard_feedback_delete" android:isRepeatable="true"/> </Row> <Row android:keyboardMode="@+id/mode_normal" android:rowEdgeFlags="bottom"> - <Key android:codes="-2" android:keyLabel="@string/label_symbol_key" + <Key android:codes="-2" android:keyLabel="@string/label_symbol_key" android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="" + android:popupCharacters="_" android:keyWidth="20%p" android:keyEdgeFlags="left"/> - <Key android:keyLabel="," android:keyWidth="15%p" /> - <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space" + <Key android:keyLabel="," android:keyWidth="10%p" /> + <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space" android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" android:isRepeatable="true"/> + android:keyWidth="40%p" android:isRepeatable="true"/> <Key android:codes="46" android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation" - android:keyWidth="15%p"/> - <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return" + android:keyWidth="10%p"/> + <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return" android:iconPreview="@drawable/sym_keyboard_feedback_return" android:keyWidth="20%p" android:keyEdgeFlags="right"/> </Row> <Row android:keyboardMode="@+id/mode_url" android:rowEdgeFlags="bottom"> - <Key android:codes="-2" android:keyLabel="@string/label_symbol_key" + <Key android:codes="-2" android:keyLabel="@string/label_symbol_key" android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="" + android:popupCharacters="_" android:keyWidth="20%p" android:keyEdgeFlags="left"/> - <Key android:keyLabel=".com" android:keyOutputText=".com" + <Key android:keyLabel="@string/popular_domain_0" + android:keyOutputText="@string/popular_domain_0" android:popupKeyboard="@xml/popup_domains" android:keyWidth="15%p"/> <Key android:keyLabel="/" android:keyWidth="15%p"/> - <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space" + <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space" android:iconPreview="@drawable/sym_keyboard_feedback_space" android:keyWidth="15%p" android:isRepeatable="true"/> - <Key android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation" + <Key android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation" android:keyWidth="15%p"/> - <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return" + <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return" android:iconPreview="@drawable/sym_keyboard_feedback_return" android:keyWidth="20%p" android:keyEdgeFlags="right"/> </Row> @@ -133,35 +134,37 @@ <Row android:keyboardMode="@+id/mode_email" android:rowEdgeFlags="bottom"> <Key android:codes="-2" android:keyLabel="@string/label_symbol_key" android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="" + android:popupCharacters="_" android:keyWidth="20%p" android:keyEdgeFlags="left"/> - <Key android:keyLabel="," android:keyWidth="15%p" /> <Key android:keyLabel="\@" android:keyWidth="15%p"/> + <Key android:keyLabel="@string/popular_domain_0" + android:keyOutputText="@string/popular_domain_0" + android:popupKeyboard="@xml/popup_domains" + android:keyWidth="15%p"/> <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space" android:iconPreview="@drawable/sym_keyboard_feedback_space" android:keyWidth="15%p" android:isRepeatable="true"/> - <Key android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation" + <Key android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation" android:keyWidth="15%p"/> - <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return" + <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return" android:iconPreview="@drawable/sym_keyboard_feedback_return" android:keyWidth="20%p" android:keyEdgeFlags="right"/> </Row> <Row android:keyboardMode="@+id/mode_im" android:rowEdgeFlags="bottom"> - <Key android:codes="-2" android:keyLabel="@string/label_symbol_key" + <Key android:codes="-2" android:keyLabel="@string/label_symbol_key" android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="" + android:popupCharacters="_" android:keyWidth="20%p" android:keyEdgeFlags="left"/> - <Key android:keyLabel="," android:keyWidth="15%p"/> - <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space" + <Key android:keyLabel="," android:keyWidth="10%p"/> + <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space" android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" android:isRepeatable="true"/> + android:keyWidth="40%p" android:isRepeatable="true"/> <Key android:codes="46" android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation" - android:keyWidth="15%p"/> + android:keyWidth="10%p"/> <Key android:keyLabel=":-)" android:keyOutputText=":-) " android:popupKeyboard="@xml/popup_smileys" android:keyWidth="20%p" android:keyEdgeFlags="right"/> </Row> </Keyboard> - \ No newline at end of file diff --git a/res/xml-fr/kbd_qwerty.xml b/res/xml-fr/kbd_qwerty.xml index 573f08a3b1..d47042ea70 100644 --- a/res/xml-fr/kbd_qwerty.xml +++ b/res/xml-fr/kbd_qwerty.xml @@ -102,12 +102,12 @@ android:popupKeyboard="@xml/kbd_popup_template" android:popupCharacters="" android:keyWidth="20%p" android:keyEdgeFlags="left"/> - <Key android:keyLabel="," android:keyWidth="15%p" /> + <Key android:keyLabel="," android:keyWidth="10%p" /> <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space" android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" android:isRepeatable="true"/> + android:keyWidth="40%p" android:isRepeatable="true"/> <Key android:codes="46" android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation" - android:keyWidth="15%p"/> + android:keyWidth="10%p"/> <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return" android:iconPreview="@drawable/sym_keyboard_feedback_return" android:keyWidth="20%p" android:keyEdgeFlags="right"/> @@ -118,7 +118,8 @@ android:popupKeyboard="@xml/kbd_popup_template" android:popupCharacters="" android:keyWidth="20%p" android:keyEdgeFlags="left"/> - <Key android:keyLabel=".com" android:keyOutputText=".com" + <Key android:keyLabel="@string/popular_domain_0" + android:keyOutputText="@string/popular_domain_0" android:popupKeyboard="@xml/popup_domains" android:keyWidth="15%p"/> <Key android:keyLabel="/" android:keyWidth="15%p"/> @@ -137,29 +138,32 @@ android:popupKeyboard="@xml/kbd_popup_template" android:popupCharacters="" android:keyWidth="20%p" android:keyEdgeFlags="left"/> - <Key android:keyLabel="," android:keyWidth="15%p" /> <Key android:keyLabel="\@" android:keyWidth="15%p"/> + <Key android:keyLabel="@string/popular_domain_0" + android:keyOutputText="@string/popular_domain_0" + android:popupKeyboard="@xml/popup_domains" + android:keyWidth="15%p"/> <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space" android:iconPreview="@drawable/sym_keyboard_feedback_space" android:keyWidth="15%p" android:isRepeatable="true"/> - <Key android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation" + <Key android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation" android:keyWidth="15%p"/> - <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return" + <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return" android:iconPreview="@drawable/sym_keyboard_feedback_return" android:keyWidth="20%p" android:keyEdgeFlags="right"/> </Row> <Row android:keyboardMode="@+id/mode_im" android:rowEdgeFlags="bottom"> - <Key android:codes="-2" android:keyLabel="@string/label_symbol_key" + <Key android:codes="-2" android:keyLabel="@string/label_symbol_key" android:popupKeyboard="@xml/kbd_popup_template" android:popupCharacters="" android:keyWidth="20%p" android:keyEdgeFlags="left"/> - <Key android:keyLabel="," android:keyWidth="15%p"/> - <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space" + <Key android:keyLabel="," android:keyWidth="10%p"/> + <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space" android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" android:isRepeatable="true"/> - <Key android:codes="46" android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation" - android:keyWidth="15%p"/> + android:keyWidth="40%p" android:isRepeatable="true"/> + <Key android:codes="46" android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation" + android:keyWidth="10%p"/> <Key android:keyLabel=":-)" android:keyOutputText=":-) " android:popupKeyboard="@xml/popup_smileys" android:keyWidth="20%p" android:keyEdgeFlags="right"/> diff --git a/res/xml/kbd_phone.xml b/res/xml/kbd_phone.xml index 880d9613af..d2bcdac522 100755 --- a/res/xml/kbd_phone.xml +++ b/res/xml/kbd_phone.xml @@ -51,7 +51,7 @@ <Row android:rowEdgeFlags="bottom"> <Key android:codes="-2" android:keyIcon="@drawable/sym_keyboard_numalt" android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="" + android:popupCharacters="_" android:iconPreview="@drawable/sym_keyboard_feedback_numalt"/> <Key android:codes="48" android:keyIcon="@drawable/sym_keyboard_num0"/> diff --git a/res/xml/kbd_phone_symbols.xml b/res/xml/kbd_phone_symbols.xml index 9ce7a1a1f5..9604664fa8 100755 --- a/res/xml/kbd_phone_symbols.xml +++ b/res/xml/kbd_phone_symbols.xml @@ -44,8 +44,8 @@ <Row> <Key android:codes="42" android:keyIcon="@drawable/sym_keyboard_numstar" android:keyEdgeFlags="left"/> - <!-- Wait is w --> - <Key android:codes="w" android:keyLabel="Wait"/> + <!-- Wait is a semicolon. --> + <Key android:codes="59" android:keyLabel="Wait"/> <Key android:codes="35" android:keyIcon="@drawable/sym_keyboard_numpound"/> <Key android:codes="-5" android:keyIcon="@drawable/sym_keyboard_delete" android:iconPreview="@drawable/sym_keyboard_feedback_delete" @@ -55,6 +55,8 @@ <Row android:rowEdgeFlags="bottom"> <Key android:codes="-2" android:keyLabel="@string/label_phone_key" + android:popupKeyboard="@xml/kbd_popup_template" + android:popupCharacters="_" android:keyEdgeFlags="left"/> <Key android:keyLabel="+"/> <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space" diff --git a/res/xml/kbd_qwerty.xml b/res/xml/kbd_qwerty.xml index fb8c574e4d..0493b99328 100755 --- a/res/xml/kbd_qwerty.xml +++ b/res/xml/kbd_qwerty.xml @@ -46,7 +46,7 @@ android:popupKeyboard="@xml/kbd_popup_template" android:popupCharacters="@string/alternates_for_u" /> - <Key android:codes="105" android:keyLabel="i" + <Key android:keyLabel="@string/key_i" android:popupKeyboard="@xml/kbd_popup_template" android:popupCharacters="@string/alternates_for_i" /> @@ -70,7 +70,10 @@ android:popupKeyboard="@xml/kbd_popup_template" android:popupCharacters="@string/alternates_for_d"/> <Key android:codes="102" android:keyLabel="f"/> - <Key android:codes="103" android:keyLabel="g"/> + <Key android:codes="103" android:keyLabel="g" + android:popupKeyboard="@xml/kbd_popup_template" + android:popupCharacters="@string/alternates_for_g"/> + /> <Key android:codes="104" android:keyLabel="h"/> <Key android:codes="106" android:keyLabel="j"/> <Key android:codes="107" android:keyLabel="k"/> @@ -100,8 +103,8 @@ android:popupCharacters="@string/alternates_for_n" /> <Key android:codes="109" android:keyLabel="m"/> - <Key android:codes="-5" android:keyIcon="@drawable/sym_keyboard_delete" - android:keyWidth="15%p" android:keyEdgeFlags="right" + <Key android:codes="-5" android:keyIcon="@drawable/sym_keyboard_delete" + android:keyWidth="15%p" android:keyEdgeFlags="right" android:iconPreview="@drawable/sym_keyboard_feedback_delete" android:isRepeatable="true"/> </Row> @@ -109,69 +112,73 @@ <Row android:keyboardMode="@+id/mode_normal" android:rowEdgeFlags="bottom"> <Key android:codes="-2" android:keyLabel="@string/label_symbol_key" android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="" + android:popupCharacters="_" android:keyWidth="20%p" android:keyEdgeFlags="left"/> - <Key android:keyLabel="," android:keyWidth="15%p" /> - <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space" + <Key android:keyLabel="," android:keyWidth="10%p" /> + <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space" android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" android:isRepeatable="true"/> + android:keyWidth="40%p" android:isRepeatable="true"/> <Key android:codes="46" android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation" - android:keyWidth="15%p"/> - <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return" + android:keyWidth="10%p"/> + <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return" android:iconPreview="@drawable/sym_keyboard_feedback_return" android:keyWidth="20%p" android:keyEdgeFlags="right"/> </Row> <Row android:keyboardMode="@+id/mode_url" android:rowEdgeFlags="bottom"> - <Key android:codes="-2" android:keyLabel="@string/label_symbol_key" + <Key android:codes="-2" android:keyLabel="@string/label_symbol_key" android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="" + android:popupCharacters="_" android:keyWidth="20%p" android:keyEdgeFlags="left"/> - <Key android:keyLabel=".com" android:keyOutputText=".com" + <Key android:keyLabel="@string/popular_domain_0" + android:keyOutputText="@string/popular_domain_0" android:popupKeyboard="@xml/popup_domains" android:keyWidth="15%p"/> <Key android:keyLabel="/" android:keyWidth="15%p"/> - <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space" + <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space" android:iconPreview="@drawable/sym_keyboard_feedback_space" android:keyWidth="15%p" android:isRepeatable="true"/> - <Key android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation" + <Key android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation" android:keyWidth="15%p"/> - <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return" + <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return" android:iconPreview="@drawable/sym_keyboard_feedback_return" android:keyWidth="20%p" android:keyEdgeFlags="right"/> </Row> <Row android:keyboardMode="@+id/mode_email" android:rowEdgeFlags="bottom"> - <Key android:codes="-2" android:keyLabel="@string/label_symbol_key" + <Key android:codes="-2" android:keyLabel="@string/label_symbol_key" android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="" + android:popupCharacters="_" android:keyWidth="20%p" android:keyEdgeFlags="left"/> - <Key android:keyLabel="," android:keyWidth="15%p" /> <Key android:keyLabel="\@" android:keyWidth="15%p"/> - <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space" + <Key android:keyLabel="@string/popular_domain_0" + android:keyOutputText="@string/popular_domain_0" + android:popupKeyboard="@xml/popup_domains" + android:keyWidth="15%p"/> + <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space" android:iconPreview="@drawable/sym_keyboard_feedback_space" android:keyWidth="15%p" android:isRepeatable="true"/> - <Key android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation" + <Key android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation" android:keyWidth="15%p"/> - <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return" + <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return" android:iconPreview="@drawable/sym_keyboard_feedback_return" android:keyWidth="20%p" android:keyEdgeFlags="right"/> </Row> <Row android:keyboardMode="@+id/mode_im" android:rowEdgeFlags="bottom"> - <Key android:codes="-2" android:keyLabel="@string/label_symbol_key" + <Key android:codes="-2" android:keyLabel="@string/label_symbol_key" android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="" + android:popupCharacters="_" android:keyWidth="20%p" android:keyEdgeFlags="left"/> - <Key android:keyLabel="," android:keyWidth="15%p"/> - <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space" + <Key android:keyLabel="," android:keyWidth="10%p"/> + <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space" android:iconPreview="@drawable/sym_keyboard_feedback_space" - android:keyWidth="30%p" android:isRepeatable="true"/> + android:keyWidth="40%p" android:isRepeatable="true"/> <Key android:codes="46" android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation" - android:keyWidth="15%p"/> + android:keyWidth="10%p"/> <Key android:keyLabel=":-)" android:keyOutputText=":-) " android:popupKeyboard="@xml/popup_smileys" android:keyWidth="20%p" android:keyEdgeFlags="right"/> </Row> </Keyboard> - \ No newline at end of file + diff --git a/res/xml/kbd_symbols.xml b/res/xml/kbd_symbols.xml index 2a150397b0..f3b8833dcf 100755 --- a/res/xml/kbd_symbols.xml +++ b/res/xml/kbd_symbols.xml @@ -94,10 +94,10 @@ </Row> <Row> - <Key android:codes="-1" android:keyLabel="@string/label_alt_key" - android:keyWidth="15%p" android:isModifier="true" + <Key android:codes="-1" android:keyLabel="@string/label_alt_key" + android:keyWidth="15%p" android:isModifier="true" android:isSticky="true" android:keyEdgeFlags="left"/> - <Key android:codes="33" android:keyLabel="!" + <Key android:codes="33" android:keyLabel="!" android:popupKeyboard="@xml/kbd_popup_template" android:popupCharacters="¡" /> @@ -119,18 +119,19 @@ </Row> <Row android:rowEdgeFlags="bottom"> - <Key android:codes="-2" android:keyLabel="@string/label_alpha_key" + <Key android:codes="-2" android:keyLabel="@string/label_alpha_key" android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="" + android:popupCharacters="_" android:keyWidth="20%p" android:keyEdgeFlags="left"/> - <Key android:keyLabel="," android:keyWidth="15%p" + <Key android:keyLabel="," android:keyWidth="10%p" android:popupKeyboard="@xml/kbd_popup_template" android:popupCharacters="‚„" /> - <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space" android:keyWidth="30%p" + <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space" + android:keyWidth="40%p" android:iconPreview="@drawable/sym_keyboard_feedback_space" android:isRepeatable="true"/> - <Key android:keyLabel="." android:keyWidth="15%p" /> + <Key android:keyLabel="." android:keyWidth="10%p" /> <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return" android:keyWidth="20%p" android:keyEdgeFlags="right" android:iconPreview="@drawable/sym_keyboard_feedback_return" /> diff --git a/res/xml/kbd_symbols_shift.xml b/res/xml/kbd_symbols_shift.xml index 6a472a412f..56428a3ade 100755 --- a/res/xml/kbd_symbols_shift.xml +++ b/res/xml/kbd_symbols_shift.xml @@ -55,7 +55,7 @@ </Row> <Row> - <Key android:codes="-1" android:keyLabel="@string/label_alt_key" + <Key android:codes="-1" android:keyLabel="@string/label_alt_key" android:keyWidth="15%p" android:isModifier="true" android:isSticky="true" android:keyEdgeFlags="left"/> <Key android:keyLabel="â„¢"/> @@ -79,14 +79,16 @@ <Row android:rowEdgeFlags="bottom"> <Key android:codes="-2" android:keyLabel="@string/label_alpha_key" android:keyWidth="20%p" android:popupKeyboard="@xml/kbd_popup_template" - android:popupCharacters="" + android:popupCharacters="_" android:keyEdgeFlags="left"/> - <Key android:keyLabel="„" android:keyWidth="15%p" /> - <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space" android:keyWidth="30%p" + <Key android:keyLabel="„" android:keyWidth="10%p" /> + <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space" + android:keyWidth="40%p" android:iconPreview="@drawable/sym_keyboard_feedback_space" android:isRepeatable="true"/> - <Key android:keyLabel="…" android:keyWidth="15%p" /> - <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return" android:keyWidth="20%p" android:keyEdgeFlags="right" + <Key android:keyLabel="…" android:keyWidth="10%p" /> + <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return" + android:keyWidth="20%p" android:keyEdgeFlags="right" android:iconPreview="@drawable/sym_keyboard_feedback_return" /> </Row> diff --git a/res/xml/popup_domains.xml b/res/xml/popup_domains.xml index 5c86386d5d..b733fe24ff 100644 --- a/res/xml/popup_domains.xml +++ b/res/xml/popup_domains.xml @@ -26,9 +26,13 @@ > <Row android:rowEdgeFlags="top|bottom"> - <Key android:keyLabel=".net" android:keyOutputText=".net" android:keyEdgeFlags="left" /> - <Key android:keyLabel=".org" android:keyOutputText=".org"/> - <Key android:keyLabel=".gov" android:keyOutputText=".gov"/> - <Key android:keyLabel=".tv" android:keyOutputText=".tv" android:keyEdgeFlags="right" /> + <Key android:keyLabel="@string/popular_domain_1" + android:keyOutputText="@string/popular_domain_1" android:keyEdgeFlags="left" /> + <Key android:keyLabel="@string/popular_domain_2" + android:keyOutputText="@string/popular_domain_2"/> + <Key android:keyLabel="@string/popular_domain_3" + android:keyOutputText="@string/popular_domain_3"/> + <Key android:keyLabel="@string/popular_domain_4" + android:keyOutputText="@string/popular_domain_4" android:keyEdgeFlags="right" /> </Row> </Keyboard> diff --git a/res/xml/popup_punctuation.xml b/res/xml/popup_punctuation.xml index 9d4575db61..7f9f611291 100644 --- a/res/xml/popup_punctuation.xml +++ b/res/xml/popup_punctuation.xml @@ -25,7 +25,16 @@ android:keyHeight="@dimen/key_height" > - <Row android:rowEdgeFlags="top|bottom"> + <Row android:rowEdgeFlags="top"> + <Key android:keyLabel=";" android:keyEdgeFlags="left" /> + <Key android:keyLabel="\\" /> + <Key android:keyLabel="&" /> + <Key android:keyLabel="(" /> + <Key android:keyLabel=")" /> + <Key android:keyLabel="-" /> + <Key android:keyLabel="+" android:keyEdgeFlags="right" /> + </Row> + <Row android:rowEdgeFlags="bottom"> <Key android:codes="58" android:keyLabel=":" android:keyEdgeFlags="left" /> <Key android:codes="47" android:keyLabel="/" /> <Key android:codes="64" android:keyLabel="\@" /> diff --git a/src/com/android/inputmethod/latin/BinaryDictionary.java b/src/com/android/inputmethod/latin/BinaryDictionary.java index bb4f1ba463..e7470a8fc9 100644 --- a/src/com/android/inputmethod/latin/BinaryDictionary.java +++ b/src/com/android/inputmethod/latin/BinaryDictionary.java @@ -32,6 +32,7 @@ public class BinaryDictionary extends Dictionary { private static final int MAX_WORDS = 16; private static final int TYPED_LETTER_MULTIPLIER = 2; + private static final boolean ENABLE_MISSED_CHARACTERS = true; private int mNativeDict; private int[] mInputCodes = new int[MAX_WORD_LENGTH * MAX_ALTERNATIVES]; @@ -64,9 +65,7 @@ public class BinaryDictionary extends Dictionary { private native boolean isValidWordNative(int nativeData, char[] word, int wordLength); private native int getSuggestionsNative(int dict, int[] inputCodes, int codesSize, char[] outputChars, int[] frequencies, - int maxWordLength, int maxWords, int maxAlternatives); - private native void setParamsNative(int typedLetterMultiplier, - int fullWordMultiplier); + int maxWordLength, int maxWords, int maxAlternatives, int skipPos); private final void loadDictionary(Context context, int resId) { AssetManager am = context.getResources().getAssets(); @@ -88,9 +87,25 @@ public class BinaryDictionary extends Dictionary { Math.min(alternatives.length, MAX_ALTERNATIVES)); } Arrays.fill(mOutputChars, (char) 0); - - int count = getSuggestionsNative(mNativeDict, mInputCodes, codesSize, mOutputChars, mFrequencies, - MAX_WORD_LENGTH, MAX_WORDS, MAX_ALTERNATIVES); + Arrays.fill(mFrequencies, 0); + + int count = getSuggestionsNative(mNativeDict, mInputCodes, codesSize, + mOutputChars, mFrequencies, + MAX_WORD_LENGTH, MAX_WORDS, MAX_ALTERNATIVES, -1); + + // If there aren't sufficient suggestions, search for words by allowing wild cards at + // the different character positions. This feature is not ready for prime-time as we need + // to figure out the best ranking for such words compared to proximity corrections and + // completions. + if (ENABLE_MISSED_CHARACTERS && count < 5) { + for (int skip = 0; skip < codesSize; skip++) { + int tempCount = getSuggestionsNative(mNativeDict, mInputCodes, codesSize, + mOutputChars, mFrequencies, + MAX_WORD_LENGTH, MAX_WORDS, MAX_ALTERNATIVES, skip); + count = Math.max(count, tempCount); + if (tempCount > 0) break; + } + } for (int j = 0; j < count; j++) { if (mFrequencies[j] < 1) break; @@ -111,7 +126,7 @@ public class BinaryDictionary extends Dictionary { char[] chars = word.toString().toLowerCase().toCharArray(); return isValidWordNative(mNativeDict, chars, chars.length); } - + public synchronized void close() { if (mNativeDict != 0) { closeNative(mNativeDict); diff --git a/src/com/android/inputmethod/latin/ContactsDictionary.java b/src/com/android/inputmethod/latin/ContactsDictionary.java new file mode 100644 index 0000000000..6f7f4b6a4e --- /dev/null +++ b/src/com/android/inputmethod/latin/ContactsDictionary.java @@ -0,0 +1,130 @@ +/* + * 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. + */ + +package com.android.inputmethod.latin; + +import android.content.ContentResolver; +import android.content.Context; +import android.database.ContentObserver; +import android.database.Cursor; +import android.provider.ContactsContract.Contacts; + +public class ContactsDictionary extends ExpandableDictionary { + + private static final String[] PROJECTION = { + Contacts._ID, + Contacts.DISPLAY_NAME, + }; + + private static final int INDEX_NAME = 1; + + private ContentObserver mObserver; + + private boolean mRequiresReload; + + private long mLastLoadedContacts; + + public ContactsDictionary(Context context) { + super(context); + // Perform a managed query. The Activity will handle closing and requerying the cursor + // when needed. + ContentResolver cres = context.getContentResolver(); + + cres.registerContentObserver(Contacts.CONTENT_URI, true, mObserver = new ContentObserver(null) { + @Override + public void onChange(boolean self) { + mRequiresReload = true; + } + }); + + loadDictionary(); + } + + public synchronized void close() { + if (mObserver != null) { + getContext().getContentResolver().unregisterContentObserver(mObserver); + mObserver = null; + } + } + + private synchronized void loadDictionary() { + long now = android.os.SystemClock.uptimeMillis(); + if (mLastLoadedContacts == 0 + || now - mLastLoadedContacts > 30 * 60 * 1000 /* 30 minutes */) { + Cursor cursor = getContext().getContentResolver() + .query(Contacts.CONTENT_URI, PROJECTION, null, null, null); + if (cursor != null) { + addWords(cursor); + } + mRequiresReload = false; + mLastLoadedContacts = now; + } + } + + @Override + public synchronized void getWords(final WordComposer codes, final WordCallback callback) { + if (mRequiresReload) loadDictionary(); + super.getWords(codes, callback); + } + + @Override + public synchronized boolean isValidWord(CharSequence word) { + if (mRequiresReload) loadDictionary(); + return super.isValidWord(word); + } + + private void addWords(Cursor cursor) { + clearDictionary(); + + final int maxWordLength = getMaxWordLength(); + if (cursor.moveToFirst()) { + while (!cursor.isAfterLast()) { + String name = cursor.getString(INDEX_NAME); + + if (name != null) { + int len = name.length(); + + // TODO: Better tokenization for non-Latin writing systems + for (int i = 0; i < len; i++) { + if (Character.isLetter(name.charAt(i))) { + int j; + for (j = i + 1; j < len; j++) { + char c = name.charAt(j); + + if (!(c == '-' || c == '\'' || + Character.isLetter(c))) { + break; + } + } + + String word = name.substring(i, j); + i = j - 1; + + // Safeguard against adding really long words. Stack + // may overflow due to recursion + if (word.length() < maxWordLength) { + super.addWord(word, 128); + } + } + } + } + + cursor.moveToNext(); + } + } + cursor.close(); + } +} diff --git a/src/com/android/inputmethod/latin/ExpandableDictionary.java b/src/com/android/inputmethod/latin/ExpandableDictionary.java new file mode 100644 index 0000000000..a136ee7f42 --- /dev/null +++ b/src/com/android/inputmethod/latin/ExpandableDictionary.java @@ -0,0 +1,457 @@ +/* + * 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. + */ + +package com.android.inputmethod.latin; + +import android.content.Context; + +/** + * Base class for an in-memory dictionary that can grow dynamically and can + * be searched for suggestions and valid words. + */ +public class ExpandableDictionary extends Dictionary { + private Context mContext; + private char[] mWordBuilder = new char[MAX_WORD_LENGTH]; + private int mMaxDepth; + private int mInputLength; + + public static final int MAX_WORD_LENGTH = 32; + private static final char QUOTE = '\''; + + static class Node { + char code; + int frequency; + boolean terminal; + NodeArray children; + } + + static class NodeArray { + Node[] data; + int length = 0; + private static final int INCREMENT = 2; + + NodeArray() { + data = new Node[INCREMENT]; + } + + void add(Node n) { + if (length + 1 > data.length) { + Node[] tempData = new Node[length + INCREMENT]; + if (length > 0) { + System.arraycopy(data, 0, tempData, 0, length); + } + data = tempData; + } + data[length++] = n; + } + } + + private NodeArray mRoots; + + private int[][] mCodes; + + ExpandableDictionary(Context context) { + mContext = context; + clearDictionary(); + mCodes = new int[MAX_WORD_LENGTH][]; + } + + Context getContext() { + return mContext; + } + + int getMaxWordLength() { + return MAX_WORD_LENGTH; + } + + public void addWord(String word, int frequency) { + addWordRec(mRoots, word, 0, frequency); + } + + private void addWordRec(NodeArray children, final String word, + final int depth, final int frequency) { + + final int wordLength = word.length(); + final char c = word.charAt(depth); + // Does children have the current character? + final int childrenLength = children.length; + Node childNode = null; + boolean found = false; + for (int i = 0; i < childrenLength; i++) { + childNode = children.data[i]; + if (childNode.code == c) { + found = true; + break; + } + } + if (!found) { + childNode = new Node(); + childNode.code = c; + children.add(childNode); + } + if (wordLength == depth + 1) { + // Terminate this word + childNode.terminal = true; + childNode.frequency += frequency; // If there are multiple similar words + if (childNode.frequency > 256) childNode.frequency = 256; + return; + } + if (childNode.children == null) { + childNode.children = new NodeArray(); + } + addWordRec(childNode.children, word, depth + 1, frequency); + } + + @Override + public void getWords(final WordComposer codes, final WordCallback callback) { + mInputLength = codes.size(); + if (mCodes.length < mInputLength) mCodes = new int[mInputLength][]; + // Cache the codes so that we don't have to lookup an array list + for (int i = 0; i < mInputLength; i++) { + mCodes[i] = codes.getCodesAt(i); + } + mMaxDepth = mInputLength * 3; + getWordsRec(mRoots, codes, mWordBuilder, 0, false, 1, 0, -1, callback); + for (int i = 0; i < mInputLength; i++) { + getWordsRec(mRoots, codes, mWordBuilder, 0, false, 1, 0, i, callback); + } + } + + @Override + public synchronized boolean isValidWord(CharSequence word) { + final int freq = getWordFrequencyRec(mRoots, word, 0, word.length()); + return freq > -1; + } + + /** + * Returns the word's frequency or -1 if not found + */ + public int getWordFrequency(CharSequence word) { + return getWordFrequencyRec(mRoots, word, 0, word.length()); + } + + /** + * Returns the word's frequency or -1 if not found + */ + private int getWordFrequencyRec(final NodeArray children, final CharSequence word, + final int offset, final int length) { + final int count = children.length; + char currentChar = word.charAt(offset); + for (int j = 0; j < count; j++) { + final Node node = children.data[j]; + if (node.code == currentChar) { + if (offset == length - 1) { + if (node.terminal) { + return node.frequency; + } + } else { + if (node.children != null) { + int freq = getWordFrequencyRec(node.children, word, offset + 1, length); + if (freq > -1) return freq; + } + } + } + } + return -1; + } + + /** + * Recursively traverse the tree for words that match the input. Input consists of + * a list of arrays. Each item in the list is one input character position. An input + * character is actually an array of multiple possible candidates. This function is not + * optimized for speed, assuming that the user dictionary will only be a few hundred words in + * size. + * @param roots node whose children have to be search for matches + * @param codes the input character codes + * @param word the word being composed as a possible match + * @param depth the depth of traversal - the length of the word being composed thus far + * @param completion whether the traversal is now in completion mode - meaning that we've + * exhausted the input and we're looking for all possible suffixes. + * @param snr current weight of the word being formed + * @param inputIndex position in the input characters. This can be off from the depth in + * case we skip over some punctuations such as apostrophe in the traversal. That is, if you type + * "wouldve", it could be matching "would've", so the depth will be one more than the + * inputIndex + * @param callback the callback class for adding a word + */ + protected void getWordsRec(NodeArray roots, final WordComposer codes, final char[] word, + final int depth, boolean completion, int snr, int inputIndex, int skipPos, + WordCallback callback) { + final int count = roots.length; + final int codeSize = mInputLength; + // Optimization: Prune out words that are too long compared to how much was typed. + if (depth > mMaxDepth) { + return; + } + int[] currentChars = null; + if (codeSize <= inputIndex) { + completion = true; + } else { + currentChars = mCodes[inputIndex]; + } + + for (int i = 0; i < count; i++) { + final Node node = roots.data[i]; + final char c = node.code; + final char lowerC = toLowerCase(c); + final boolean terminal = node.terminal; + final NodeArray children = node.children; + final int freq = node.frequency; + if (completion) { + word[depth] = c; + if (terminal) { + if (!callback.addWord(word, 0, depth + 1, freq * snr)) { + return; + } + } + if (children != null) { + getWordsRec(children, codes, word, depth + 1, completion, snr, inputIndex, + skipPos, callback); + } + } else if ((c == QUOTE && currentChars[0] != QUOTE) || depth == skipPos) { + // Skip the ' and continue deeper + word[depth] = c; + if (children != null) { + getWordsRec(children, codes, word, depth + 1, completion, snr, inputIndex, + skipPos, callback); + } + } else { + // Don't use alternatives if we're looking for missing characters + final int alternativesSize = skipPos >= 0? 1 : currentChars.length; + for (int j = 0; j < alternativesSize; j++) { + final int addedAttenuation = (j > 0 ? 1 : 2); + final int currentChar = currentChars[j]; + if (currentChar == -1) { + break; + } + if (currentChar == lowerC || currentChar == c) { + word[depth] = c; + + if (codeSize == depth + 1) { + if (terminal) { + if (INCLUDE_TYPED_WORD_IF_VALID + || !same(word, depth + 1, codes.getTypedWord())) { + int finalFreq = freq * snr * addedAttenuation; + if (skipPos < 0) finalFreq *= FULL_WORD_FREQ_MULTIPLIER; + callback.addWord(word, 0, depth + 1, finalFreq); + } + } + if (children != null) { + getWordsRec(children, codes, word, depth + 1, + true, snr * addedAttenuation, inputIndex + 1, + skipPos, callback); + } + } else if (children != null) { + getWordsRec(children, codes, word, depth + 1, + false, snr * addedAttenuation, inputIndex + 1, + skipPos, callback); + } + } + } + } + } + } + + protected void clearDictionary() { + mRoots = new NodeArray(); + } + + static char toLowerCase(char c) { + if (c < BASE_CHARS.length) { + c = BASE_CHARS[c]; + } + if (c >= 'A' && c <= 'Z') { + c = (char) (c | 32); + } else if (c > 127) { + c = Character.toLowerCase(c); + } + return c; + } + + /** + * Table mapping most combined Latin, Greek, and Cyrillic characters + * to their base characters. If c is in range, BASE_CHARS[c] == c + * if c is not a combined character, or the base character if it + * is combined. + */ + static final char BASE_CHARS[] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x0020, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, + 0x0020, 0x00a9, 0x0061, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x0020, + 0x00b0, 0x00b1, 0x0032, 0x0033, 0x0020, 0x03bc, 0x00b6, 0x00b7, + 0x0020, 0x0031, 0x006f, 0x00bb, 0x0031, 0x0031, 0x0033, 0x00bf, + 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x00c6, 0x0043, + 0x0045, 0x0045, 0x0045, 0x0045, 0x0049, 0x0049, 0x0049, 0x0049, + 0x00d0, 0x004e, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x00d7, + 0x004f, 0x0055, 0x0055, 0x0055, 0x0055, 0x0059, 0x00de, 0x0073, // Manually changed d8 to 4f + // Manually changed df to 73 + 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x00e6, 0x0063, + 0x0065, 0x0065, 0x0065, 0x0065, 0x0069, 0x0069, 0x0069, 0x0069, + 0x00f0, 0x006e, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x00f7, + 0x006f, 0x0075, 0x0075, 0x0075, 0x0075, 0x0079, 0x00fe, 0x0079, // Manually changed f8 to 6f + 0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061, 0x0043, 0x0063, + 0x0043, 0x0063, 0x0043, 0x0063, 0x0043, 0x0063, 0x0044, 0x0064, + 0x0110, 0x0111, 0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065, + 0x0045, 0x0065, 0x0045, 0x0065, 0x0047, 0x0067, 0x0047, 0x0067, + 0x0047, 0x0067, 0x0047, 0x0067, 0x0048, 0x0068, 0x0126, 0x0127, + 0x0049, 0x0069, 0x0049, 0x0069, 0x0049, 0x0069, 0x0049, 0x0069, + 0x0049, 0x0131, 0x0049, 0x0069, 0x004a, 0x006a, 0x004b, 0x006b, + 0x0138, 0x004c, 0x006c, 0x004c, 0x006c, 0x004c, 0x006c, 0x004c, + 0x006c, 0x0141, 0x0142, 0x004e, 0x006e, 0x004e, 0x006e, 0x004e, + 0x006e, 0x02bc, 0x014a, 0x014b, 0x004f, 0x006f, 0x004f, 0x006f, + 0x004f, 0x006f, 0x0152, 0x0153, 0x0052, 0x0072, 0x0052, 0x0072, + 0x0052, 0x0072, 0x0053, 0x0073, 0x0053, 0x0073, 0x0053, 0x0073, + 0x0053, 0x0073, 0x0054, 0x0074, 0x0054, 0x0074, 0x0166, 0x0167, + 0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075, + 0x0055, 0x0075, 0x0055, 0x0075, 0x0057, 0x0077, 0x0059, 0x0079, + 0x0059, 0x005a, 0x007a, 0x005a, 0x007a, 0x005a, 0x007a, 0x0073, + 0x0180, 0x0181, 0x0182, 0x0183, 0x0184, 0x0185, 0x0186, 0x0187, + 0x0188, 0x0189, 0x018a, 0x018b, 0x018c, 0x018d, 0x018e, 0x018f, + 0x0190, 0x0191, 0x0192, 0x0193, 0x0194, 0x0195, 0x0196, 0x0197, + 0x0198, 0x0199, 0x019a, 0x019b, 0x019c, 0x019d, 0x019e, 0x019f, + 0x004f, 0x006f, 0x01a2, 0x01a3, 0x01a4, 0x01a5, 0x01a6, 0x01a7, + 0x01a8, 0x01a9, 0x01aa, 0x01ab, 0x01ac, 0x01ad, 0x01ae, 0x0055, + 0x0075, 0x01b1, 0x01b2, 0x01b3, 0x01b4, 0x01b5, 0x01b6, 0x01b7, + 0x01b8, 0x01b9, 0x01ba, 0x01bb, 0x01bc, 0x01bd, 0x01be, 0x01bf, + 0x01c0, 0x01c1, 0x01c2, 0x01c3, 0x0044, 0x0044, 0x0064, 0x004c, + 0x004c, 0x006c, 0x004e, 0x004e, 0x006e, 0x0041, 0x0061, 0x0049, + 0x0069, 0x004f, 0x006f, 0x0055, 0x0075, 0x00dc, 0x00fc, 0x00dc, + 0x00fc, 0x00dc, 0x00fc, 0x00dc, 0x00fc, 0x01dd, 0x00c4, 0x00e4, + 0x0226, 0x0227, 0x00c6, 0x00e6, 0x01e4, 0x01e5, 0x0047, 0x0067, + 0x004b, 0x006b, 0x004f, 0x006f, 0x01ea, 0x01eb, 0x01b7, 0x0292, + 0x006a, 0x0044, 0x0044, 0x0064, 0x0047, 0x0067, 0x01f6, 0x01f7, + 0x004e, 0x006e, 0x00c5, 0x00e5, 0x00c6, 0x00e6, 0x00d8, 0x00f8, + 0x0041, 0x0061, 0x0041, 0x0061, 0x0045, 0x0065, 0x0045, 0x0065, + 0x0049, 0x0069, 0x0049, 0x0069, 0x004f, 0x006f, 0x004f, 0x006f, + 0x0052, 0x0072, 0x0052, 0x0072, 0x0055, 0x0075, 0x0055, 0x0075, + 0x0053, 0x0073, 0x0054, 0x0074, 0x021c, 0x021d, 0x0048, 0x0068, + 0x0220, 0x0221, 0x0222, 0x0223, 0x0224, 0x0225, 0x0041, 0x0061, + 0x0045, 0x0065, 0x00d6, 0x00f6, 0x00d5, 0x00f5, 0x004f, 0x006f, + 0x022e, 0x022f, 0x0059, 0x0079, 0x0234, 0x0235, 0x0236, 0x0237, + 0x0238, 0x0239, 0x023a, 0x023b, 0x023c, 0x023d, 0x023e, 0x023f, + 0x0240, 0x0241, 0x0242, 0x0243, 0x0244, 0x0245, 0x0246, 0x0247, + 0x0248, 0x0249, 0x024a, 0x024b, 0x024c, 0x024d, 0x024e, 0x024f, + 0x0250, 0x0251, 0x0252, 0x0253, 0x0254, 0x0255, 0x0256, 0x0257, + 0x0258, 0x0259, 0x025a, 0x025b, 0x025c, 0x025d, 0x025e, 0x025f, + 0x0260, 0x0261, 0x0262, 0x0263, 0x0264, 0x0265, 0x0266, 0x0267, + 0x0268, 0x0269, 0x026a, 0x026b, 0x026c, 0x026d, 0x026e, 0x026f, + 0x0270, 0x0271, 0x0272, 0x0273, 0x0274, 0x0275, 0x0276, 0x0277, + 0x0278, 0x0279, 0x027a, 0x027b, 0x027c, 0x027d, 0x027e, 0x027f, + 0x0280, 0x0281, 0x0282, 0x0283, 0x0284, 0x0285, 0x0286, 0x0287, + 0x0288, 0x0289, 0x028a, 0x028b, 0x028c, 0x028d, 0x028e, 0x028f, + 0x0290, 0x0291, 0x0292, 0x0293, 0x0294, 0x0295, 0x0296, 0x0297, + 0x0298, 0x0299, 0x029a, 0x029b, 0x029c, 0x029d, 0x029e, 0x029f, + 0x02a0, 0x02a1, 0x02a2, 0x02a3, 0x02a4, 0x02a5, 0x02a6, 0x02a7, + 0x02a8, 0x02a9, 0x02aa, 0x02ab, 0x02ac, 0x02ad, 0x02ae, 0x02af, + 0x0068, 0x0266, 0x006a, 0x0072, 0x0279, 0x027b, 0x0281, 0x0077, + 0x0079, 0x02b9, 0x02ba, 0x02bb, 0x02bc, 0x02bd, 0x02be, 0x02bf, + 0x02c0, 0x02c1, 0x02c2, 0x02c3, 0x02c4, 0x02c5, 0x02c6, 0x02c7, + 0x02c8, 0x02c9, 0x02ca, 0x02cb, 0x02cc, 0x02cd, 0x02ce, 0x02cf, + 0x02d0, 0x02d1, 0x02d2, 0x02d3, 0x02d4, 0x02d5, 0x02d6, 0x02d7, + 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x02de, 0x02df, + 0x0263, 0x006c, 0x0073, 0x0078, 0x0295, 0x02e5, 0x02e6, 0x02e7, + 0x02e8, 0x02e9, 0x02ea, 0x02eb, 0x02ec, 0x02ed, 0x02ee, 0x02ef, + 0x02f0, 0x02f1, 0x02f2, 0x02f3, 0x02f4, 0x02f5, 0x02f6, 0x02f7, + 0x02f8, 0x02f9, 0x02fa, 0x02fb, 0x02fc, 0x02fd, 0x02fe, 0x02ff, + 0x0300, 0x0301, 0x0302, 0x0303, 0x0304, 0x0305, 0x0306, 0x0307, + 0x0308, 0x0309, 0x030a, 0x030b, 0x030c, 0x030d, 0x030e, 0x030f, + 0x0310, 0x0311, 0x0312, 0x0313, 0x0314, 0x0315, 0x0316, 0x0317, + 0x0318, 0x0319, 0x031a, 0x031b, 0x031c, 0x031d, 0x031e, 0x031f, + 0x0320, 0x0321, 0x0322, 0x0323, 0x0324, 0x0325, 0x0326, 0x0327, + 0x0328, 0x0329, 0x032a, 0x032b, 0x032c, 0x032d, 0x032e, 0x032f, + 0x0330, 0x0331, 0x0332, 0x0333, 0x0334, 0x0335, 0x0336, 0x0337, + 0x0338, 0x0339, 0x033a, 0x033b, 0x033c, 0x033d, 0x033e, 0x033f, + 0x0300, 0x0301, 0x0342, 0x0313, 0x0308, 0x0345, 0x0346, 0x0347, + 0x0348, 0x0349, 0x034a, 0x034b, 0x034c, 0x034d, 0x034e, 0x034f, + 0x0350, 0x0351, 0x0352, 0x0353, 0x0354, 0x0355, 0x0356, 0x0357, + 0x0358, 0x0359, 0x035a, 0x035b, 0x035c, 0x035d, 0x035e, 0x035f, + 0x0360, 0x0361, 0x0362, 0x0363, 0x0364, 0x0365, 0x0366, 0x0367, + 0x0368, 0x0369, 0x036a, 0x036b, 0x036c, 0x036d, 0x036e, 0x036f, + 0x0370, 0x0371, 0x0372, 0x0373, 0x02b9, 0x0375, 0x0376, 0x0377, + 0x0378, 0x0379, 0x0020, 0x037b, 0x037c, 0x037d, 0x003b, 0x037f, + 0x0380, 0x0381, 0x0382, 0x0383, 0x0020, 0x00a8, 0x0391, 0x00b7, + 0x0395, 0x0397, 0x0399, 0x038b, 0x039f, 0x038d, 0x03a5, 0x03a9, + 0x03ca, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, + 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, + 0x03a0, 0x03a1, 0x03a2, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, + 0x03a8, 0x03a9, 0x0399, 0x03a5, 0x03b1, 0x03b5, 0x03b7, 0x03b9, + 0x03cb, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, + 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, + 0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, + 0x03c8, 0x03c9, 0x03b9, 0x03c5, 0x03bf, 0x03c5, 0x03c9, 0x03cf, + 0x03b2, 0x03b8, 0x03a5, 0x03d2, 0x03d2, 0x03c6, 0x03c0, 0x03d7, + 0x03d8, 0x03d9, 0x03da, 0x03db, 0x03dc, 0x03dd, 0x03de, 0x03df, + 0x03e0, 0x03e1, 0x03e2, 0x03e3, 0x03e4, 0x03e5, 0x03e6, 0x03e7, + 0x03e8, 0x03e9, 0x03ea, 0x03eb, 0x03ec, 0x03ed, 0x03ee, 0x03ef, + 0x03ba, 0x03c1, 0x03c2, 0x03f3, 0x0398, 0x03b5, 0x03f6, 0x03f7, + 0x03f8, 0x03a3, 0x03fa, 0x03fb, 0x03fc, 0x03fd, 0x03fe, 0x03ff, + 0x0415, 0x0415, 0x0402, 0x0413, 0x0404, 0x0405, 0x0406, 0x0406, + 0x0408, 0x0409, 0x040a, 0x040b, 0x041a, 0x0418, 0x0423, 0x040f, + 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, + 0x0418, 0x0418, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, + 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, + 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, + 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, + 0x0438, 0x0438, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, + 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, + 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, + 0x0435, 0x0435, 0x0452, 0x0433, 0x0454, 0x0455, 0x0456, 0x0456, + 0x0458, 0x0459, 0x045a, 0x045b, 0x043a, 0x0438, 0x0443, 0x045f, + 0x0460, 0x0461, 0x0462, 0x0463, 0x0464, 0x0465, 0x0466, 0x0467, + 0x0468, 0x0469, 0x046a, 0x046b, 0x046c, 0x046d, 0x046e, 0x046f, + 0x0470, 0x0471, 0x0472, 0x0473, 0x0474, 0x0475, 0x0474, 0x0475, + 0x0478, 0x0479, 0x047a, 0x047b, 0x047c, 0x047d, 0x047e, 0x047f, + 0x0480, 0x0481, 0x0482, 0x0483, 0x0484, 0x0485, 0x0486, 0x0487, + 0x0488, 0x0489, 0x048a, 0x048b, 0x048c, 0x048d, 0x048e, 0x048f, + 0x0490, 0x0491, 0x0492, 0x0493, 0x0494, 0x0495, 0x0496, 0x0497, + 0x0498, 0x0499, 0x049a, 0x049b, 0x049c, 0x049d, 0x049e, 0x049f, + 0x04a0, 0x04a1, 0x04a2, 0x04a3, 0x04a4, 0x04a5, 0x04a6, 0x04a7, + 0x04a8, 0x04a9, 0x04aa, 0x04ab, 0x04ac, 0x04ad, 0x04ae, 0x04af, + 0x04b0, 0x04b1, 0x04b2, 0x04b3, 0x04b4, 0x04b5, 0x04b6, 0x04b7, + 0x04b8, 0x04b9, 0x04ba, 0x04bb, 0x04bc, 0x04bd, 0x04be, 0x04bf, + 0x04c0, 0x0416, 0x0436, 0x04c3, 0x04c4, 0x04c5, 0x04c6, 0x04c7, + 0x04c8, 0x04c9, 0x04ca, 0x04cb, 0x04cc, 0x04cd, 0x04ce, 0x04cf, + 0x0410, 0x0430, 0x0410, 0x0430, 0x04d4, 0x04d5, 0x0415, 0x0435, + 0x04d8, 0x04d9, 0x04d8, 0x04d9, 0x0416, 0x0436, 0x0417, 0x0437, + 0x04e0, 0x04e1, 0x0418, 0x0438, 0x0418, 0x0438, 0x041e, 0x043e, + 0x04e8, 0x04e9, 0x04e8, 0x04e9, 0x042d, 0x044d, 0x0423, 0x0443, + 0x0423, 0x0443, 0x0423, 0x0443, 0x0427, 0x0447, 0x04f6, 0x04f7, + 0x042b, 0x044b, 0x04fa, 0x04fb, 0x04fc, 0x04fd, 0x04fe, 0x04ff, + }; + + // 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"; }' + +} diff --git a/src/com/android/inputmethod/latin/KeyboardSwitcher.java b/src/com/android/inputmethod/latin/KeyboardSwitcher.java index 92b7cd4a1b..c82587b719 100644 --- a/src/com/android/inputmethod/latin/KeyboardSwitcher.java +++ b/src/com/android/inputmethod/latin/KeyboardSwitcher.java @@ -37,6 +37,10 @@ public class KeyboardSwitcher { public static final int KEYBOARDMODE_EMAIL = R.id.mode_email; public static final int KEYBOARDMODE_IM = R.id.mode_im; + private static final int SYMBOLS_MODE_STATE_NONE = 0; + private static final int SYMBOLS_MODE_STATE_BEGIN = 1; + private static final int SYMBOLS_MODE_STATE_SYMBOL = 2; + LatinKeyboardView mInputView; LatinIME mContext; @@ -50,6 +54,8 @@ public class KeyboardSwitcher { private int mImeOptions; private int mTextMode = MODE_TEXT_QWERTY; private boolean mIsSymbols; + private boolean mPreferSymbols; + private int mSymbolsModeState = SYMBOLS_MODE_STATE_NONE; private int mLastDisplayWidth; @@ -64,14 +70,15 @@ public class KeyboardSwitcher { mInputView = inputView; } - void makeKeyboards() { + void makeKeyboards(boolean forceCreate) { + if (forceCreate) mKeyboards.clear(); // Configuration change is coming after the keyboard gets recreated. So don't rely on that. // If keyboards have already been made, check if we have a screen width change and // create the keyboard layouts again at the correct orientation int displayWidth = mContext.getMaxWidth(); if (displayWidth == mLastDisplayWidth) return; mLastDisplayWidth = displayWidth; - mKeyboards.clear(); + if (!forceCreate) mKeyboards.clear(); mSymbolsId = new KeyboardId(R.xml.kbd_symbols); mSymbolsShiftedId = new KeyboardId(R.xml.kbd_symbols_shift); } @@ -109,7 +116,10 @@ public class KeyboardSwitcher { } void setKeyboardMode(int mode, int imeOptions) { - setKeyboardMode(mode, imeOptions, false); + mSymbolsModeState = SYMBOLS_MODE_STATE_NONE; + mPreferSymbols = mode == MODE_SYMBOLS; + setKeyboardMode(mode == MODE_SYMBOLS ? MODE_TEXT : mode, imeOptions, + mPreferSymbols); } void setKeyboardMode(int mode, int imeOptions, boolean isSymbols) { @@ -228,5 +238,30 @@ public class KeyboardSwitcher { void toggleSymbols() { setKeyboardMode(mMode, mImeOptions, !mIsSymbols); + if (mIsSymbols && !mPreferSymbols) { + mSymbolsModeState = SYMBOLS_MODE_STATE_BEGIN; + } else { + mSymbolsModeState = SYMBOLS_MODE_STATE_NONE; + } + } + + /** + * Updates state machine to figure out when to automatically switch back to alpha mode. + * Returns true if the keyboard needs to switch back + */ + boolean onKey(int key) { + // Switch back to alpha mode if user types one or more non-space/enter characters + // followed by a space/enter + switch (mSymbolsModeState) { + case SYMBOLS_MODE_STATE_BEGIN: + if (key != LatinIME.KEYCODE_SPACE && key != LatinIME.KEYCODE_ENTER && key > 0) { + mSymbolsModeState = SYMBOLS_MODE_STATE_SYMBOL; + } + break; + case SYMBOLS_MODE_STATE_SYMBOL: + if (key == LatinIME.KEYCODE_ENTER || key == LatinIME.KEYCODE_SPACE) return true; + break; + } + return false; } } diff --git a/src/com/android/inputmethod/latin/LatinIME.java b/src/com/android/inputmethod/latin/LatinIME.java index 240668ebb3..8b76dbd395 100644 --- a/src/com/android/inputmethod/latin/LatinIME.java +++ b/src/com/android/inputmethod/latin/LatinIME.java @@ -71,14 +71,22 @@ public class LatinIME extends InputMethodService private static final int MSG_UPDATE_SUGGESTIONS = 0; private static final int MSG_START_TUTORIAL = 1; + private static final int MSG_UPDATE_SHIFT_STATE = 2; // How many continuous deletes at which to start deleting at a higher speed. private static final int DELETE_ACCELERATE_AT = 20; // Key events coming any faster than this are long-presses. - private static final int QUICK_PRESS = 200; + private static final int QUICK_PRESS = 200; + // Weight added to a user picking a new word from the suggestion strip + static final int FREQUENCY_FOR_PICKED = 3; + // Weight added to a user typing a new word that doesn't get corrected (or is reverted) + static final int FREQUENCY_FOR_TYPED = 1; + // A word that is frequently typed and get's promoted to the user dictionary, uses this + // frequency. + static final int FREQUENCY_FOR_AUTO_ADD = 250; - private static final int KEYCODE_ENTER = 10; - private static final int KEYCODE_SPACE = ' '; + static final int KEYCODE_ENTER = '\n'; + static final int KEYCODE_SPACE = ' '; // Contextual menu positions private static final int POS_SETTINGS = 0; @@ -95,6 +103,8 @@ public class LatinIME extends InputMethodService KeyboardSwitcher mKeyboardSwitcher; private UserDictionary mUserDictionary; + private ContactsDictionary mContactsDictionary; + private ExpandableDictionary mAutoDictionary; private String mLocale; @@ -114,6 +124,8 @@ public class LatinIME extends InputMethodService private boolean mQuickFixes; private boolean mShowSuggestions; private int mCorrectionMode; + private int mOrientation; + // Indicates whether the suggestion strip is to be on in landscape private boolean mJustAccepted; private CharSequence mJustRevertedSeparator; @@ -126,7 +138,8 @@ public class LatinIME extends InputMethodService private long mVibrateDuration; private AudioManager mAudioManager; - private final float FX_VOLUME = 1.0f; + // Align sound effect volume on music volume + private final float FX_VOLUME = -1.0f; private boolean mSilentMode; private String mWordSeparators; @@ -150,6 +163,9 @@ public class LatinIME extends InputMethodService } } break; + case MSG_UPDATE_SHIFT_STATE: + updateShiftKeyState(getCurrentInputEditorInfo()); + break; } } }; @@ -158,10 +174,12 @@ public class LatinIME extends InputMethodService super.onCreate(); //setStatusIcon(R.drawable.ime_qwerty); mKeyboardSwitcher = new KeyboardSwitcher(this); - initSuggest(getResources().getConfiguration().locale.toString()); - + final Configuration conf = getResources().getConfiguration(); + initSuggest(conf.locale.toString()); + mOrientation = conf.orientation; + mVibrateDuration = getResources().getInteger(R.integer.vibrate_duration_ms); - + // register to receive ringer mode changes for silent mode IntentFilter filter = new IntentFilter(AudioManager.RINGER_MODE_CHANGED_ACTION); registerReceiver(mReceiver, filter); @@ -172,13 +190,18 @@ public class LatinIME extends InputMethodService mSuggest = new Suggest(this, R.raw.main); mSuggest.setCorrectionMode(mCorrectionMode); mUserDictionary = new UserDictionary(this); + mContactsDictionary = new ContactsDictionary(this); + mAutoDictionary = new AutoDictionary(this); mSuggest.setUserDictionary(mUserDictionary); + mSuggest.setContactsDictionary(mContactsDictionary); + mSuggest.setAutoDictionary(mAutoDictionary); mWordSeparators = getResources().getString(R.string.word_separators); mSentenceSeparators = getResources().getString(R.string.sentence_separators); } @Override public void onDestroy() { mUserDictionary.close(); + mContactsDictionary.close(); unregisterReceiver(mReceiver); super.onDestroy(); } @@ -188,15 +211,24 @@ public class LatinIME extends InputMethodService if (!TextUtils.equals(conf.locale.toString(), mLocale)) { initSuggest(conf.locale.toString()); } + // If orientation changed while predicting, commit the change + if (conf.orientation != mOrientation) { + commitTyped(getCurrentInputConnection()); + mOrientation = conf.orientation; + } + if (mKeyboardSwitcher == null) { + mKeyboardSwitcher = new KeyboardSwitcher(this); + } + mKeyboardSwitcher.makeKeyboards(true); super.onConfigurationChanged(conf); } - + @Override public View onCreateInputView() { mInputView = (LatinKeyboardView) getLayoutInflater().inflate( R.layout.input, null); mKeyboardSwitcher.setInputView(mInputView); - mKeyboardSwitcher.makeKeyboards(); + mKeyboardSwitcher.makeKeyboards(true); mInputView.setOnKeyboardActionListener(this); mKeyboardSwitcher.setKeyboardMode(KeyboardSwitcher.MODE_TEXT, 0); return mInputView; @@ -204,7 +236,7 @@ public class LatinIME extends InputMethodService @Override public View onCreateCandidatesView() { - mKeyboardSwitcher.makeKeyboards(); + mKeyboardSwitcher.makeKeyboards(true); mCandidateViewContainer = (CandidateViewContainer) getLayoutInflater().inflate( R.layout.candidates, null); mCandidateViewContainer.initViews(); @@ -221,7 +253,7 @@ public class LatinIME extends InputMethodService return; } - mKeyboardSwitcher.makeKeyboards(); + mKeyboardSwitcher.makeKeyboards(false); TextEntryState.newSession(this); @@ -233,9 +265,8 @@ public class LatinIME extends InputMethodService switch (attribute.inputType&EditorInfo.TYPE_MASK_CLASS) { case EditorInfo.TYPE_CLASS_NUMBER: case EditorInfo.TYPE_CLASS_DATETIME: - mKeyboardSwitcher.setKeyboardMode(KeyboardSwitcher.MODE_TEXT, + mKeyboardSwitcher.setKeyboardMode(KeyboardSwitcher.MODE_SYMBOLS, attribute.imeOptions); - mKeyboardSwitcher.toggleSymbols(); break; case EditorInfo.TYPE_CLASS_PHONE: mKeyboardSwitcher.setKeyboardMode(KeyboardSwitcher.MODE_PHONE, @@ -278,6 +309,17 @@ public class LatinIME extends InputMethodService disableAutoCorrect = true; } } + + // If NO_SUGGESTIONS is set, don't do prediction. + if ((attribute.inputType & EditorInfo.TYPE_TEXT_FLAG_NO_SUGGESTIONS) != 0) { + mPredictionOn = false; + disableAutoCorrect = true; + } + // If it's not multiline and the autoCorrect flag is not set, then don't correct + if ((attribute.inputType & EditorInfo.TYPE_TEXT_FLAG_AUTO_CORRECT) == 0 && + (attribute.inputType & EditorInfo.TYPE_TEXT_FLAG_MULTI_LINE) == 0) { + disableAutoCorrect = true; + } if ((attribute.inputType&EditorInfo.TYPE_TEXT_FLAG_AUTO_COMPLETE) != 0) { mPredictionOn = false; mCompletionOn = true && isFullscreenMode(); @@ -309,7 +351,7 @@ public class LatinIME extends InputMethodService } mPredictionOn = mPredictionOn && mCorrectionMode > 0; checkTutorial(attribute.privateImeOptions); - if (TRACE) Debug.startMethodTracing("latinime"); + if (TRACE) Debug.startMethodTracing("/data/trace/latinime"); } @Override @@ -344,6 +386,7 @@ public class LatinIME extends InputMethodService TextEntryState.reset(); } mJustAccepted = false; + postUpdateShiftKeyState(); } @Override @@ -465,11 +508,17 @@ public class LatinIME extends InputMethodService } mCommittedLength = mComposing.length(); TextEntryState.acceptedTyped(mComposing); + mAutoDictionary.addWord(mComposing.toString(), FREQUENCY_FOR_TYPED); } updateSuggestions(); } } + private void postUpdateShiftKeyState() { + mHandler.removeMessages(MSG_UPDATE_SHIFT_STATE); + mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_UPDATE_SHIFT_STATE), 300); + } + public void updateShiftKeyState(EditorInfo attr) { InputConnection ic = getCurrentInputConnection(); if (attr != null && mInputView != null && mKeyboardSwitcher.isAlphabetMode() @@ -571,6 +620,9 @@ public class LatinIME extends InputMethodService // Cancel the just reverted state mJustRevertedSeparator = null; } + if (mKeyboardSwitcher.onKey(primaryCode)) { + changeKeyboardMode(); + } } public void onText(CharSequence text) { @@ -606,7 +658,7 @@ public class LatinIME extends InputMethodService } else { deleteChar = true; } - updateShiftKeyState(getCurrentInputEditorInfo()); + postUpdateShiftKeyState(); TextEntryState.backspace(); if (TextEntryState.getState() == TextEntryState.STATE_UNDO_COMMIT) { revertLastWord(deleteChar); @@ -640,7 +692,12 @@ public class LatinIME extends InputMethodService } } if (mInputView.isShifted()) { - primaryCode = Character.toUpperCase(primaryCode); + // TODO: This doesn't work with ß, need to fix it in the next release. + if (keyCodes == null || keyCodes[0] < Character.MIN_CODE_POINT + || keyCodes[0] > Character.MAX_CODE_POINT) { + return; + } + primaryCode = new String(keyCodes, 0, 1).toUpperCase().charAt(0); } if (mPredicting) { if (mInputView.isShifted() && mComposing.length() == 0) { @@ -756,7 +813,9 @@ public class LatinIME extends InputMethodService if (mCorrectionMode == Suggest.CORRECTION_FULL) { correctionAvailable |= typedWordValid; } - + // Don't auto-correct words with multiple capital letter + correctionAvailable &= !mWord.isMostlyCaps(); + mCandidateView.setSuggestions(stringList, false, typedWordValid, correctionAvailable); if (stringList.size() > 0) { if (correctionAvailable && !typedWordValid && stringList.size() > 1) { @@ -813,13 +872,17 @@ public class LatinIME extends InputMethodService suggestion = suggestion.toString().toUpperCase(); } else if (preferCapitalization() || (mKeyboardSwitcher.isAlphabetMode() && mInputView.isShifted())) { - suggestion = Character.toUpperCase(suggestion.charAt(0)) + suggestion = suggestion.toString().toUpperCase().charAt(0) + suggestion.subSequence(1, suggestion.length()).toString(); } InputConnection ic = getCurrentInputConnection(); if (ic != null) { ic.commitText(suggestion, 1); } + // Add the word to the auto dictionary if it's not a known word + if (mAutoDictionary.isValidWord(suggestion) || !mSuggest.isValidWord(suggestion)) { + mAutoDictionary.addWord(suggestion.toString(), FREQUENCY_FOR_PICKED); + } mPredicting = false; mCommittedLength = suggestion.length(); if (mCandidateView != null) { @@ -907,7 +970,7 @@ public class LatinIME extends InputMethodService } public void swipeDown() { - //handleClose(); + handleClose(); } public void swipeUp() { @@ -973,7 +1036,7 @@ public class LatinIME extends InputMethodService return; } if (mVibrator == null) { - mVibrator = new Vibrator(); + mVibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE); } mVibrator.vibrate(mVibrateDuration); } @@ -998,7 +1061,12 @@ public class LatinIME extends InputMethodService void tutorialDone() { mTutorial = null; } - + + void promoteToUserDictionary(String word, int frequency) { + if (mUserDictionary.isValidWord(word)) return; + mUserDictionary.addWord(word, frequency); + } + private void launchSettings() { handleClose(); Intent intent = new Intent(); @@ -1044,7 +1112,8 @@ public class LatinIME extends InputMethodService launchSettings(); break; case POS_METHOD: - InputMethodManager.getInstance(LatinIME.this).showInputMethodPicker(); + ((InputMethodManager) getSystemService(INPUT_METHOD_SERVICE)) + .showInputMethodPicker(); break; } } @@ -1107,7 +1176,35 @@ public class LatinIME extends InputMethodService for (int i = 0; i < CPS_BUFFER_SIZE; i++) total += mCpsIntervals[i]; System.out.println("CPS = " + ((CPS_BUFFER_SIZE * 1000f) / total)); } - + + class AutoDictionary extends ExpandableDictionary { + // If the user touches a typed word 2 times or more, it will become valid. + private static final int VALIDITY_THRESHOLD = 2 * FREQUENCY_FOR_PICKED; + // If the user touches a typed word 5 times or more, it will be added to the user dict. + private static final int PROMOTION_THRESHOLD = 5 * FREQUENCY_FOR_PICKED; + + public AutoDictionary(Context context) { + super(context); + } + + @Override + public boolean isValidWord(CharSequence word) { + final int frequency = getWordFrequency(word); + return frequency > VALIDITY_THRESHOLD; + } + + @Override + public void addWord(String word, int addFrequency) { + final int length = word.length(); + // Don't add very short or very long words. + if (length < 2 || length > getMaxWordLength()) return; + super.addWord(word, addFrequency); + final int freq = getWordFrequency(word); + if (freq > PROMOTION_THRESHOLD) { + LatinIME.this.promoteToUserDictionary(word, FREQUENCY_FOR_AUTO_ADD); + } + } + } } diff --git a/src/com/android/inputmethod/latin/LatinKeyboard.java b/src/com/android/inputmethod/latin/LatinKeyboard.java index 8527d9cd52..9b04aa2648 100644 --- a/src/com/android/inputmethod/latin/LatinKeyboard.java +++ b/src/com/android/inputmethod/latin/LatinKeyboard.java @@ -37,20 +37,23 @@ public class LatinKeyboard extends Keyboard { private static final int SHIFT_LOCKED = 2; private int mShiftState = SHIFT_OFF; - + + static int sSpacebarVerticalCorrection; + public LatinKeyboard(Context context, int xmlLayoutResId) { this(context, xmlLayoutResId, 0); } public LatinKeyboard(Context context, int xmlLayoutResId, int mode) { super(context, xmlLayoutResId, mode); - mShiftLockIcon = context.getResources() - .getDrawable(R.drawable.sym_keyboard_shift_locked); - mShiftLockPreviewIcon = context.getResources() - .getDrawable(R.drawable.sym_keyboard_feedback_shift_locked); + Resources res = context.getResources(); + mShiftLockIcon = res.getDrawable(R.drawable.sym_keyboard_shift_locked); + mShiftLockPreviewIcon = res.getDrawable(R.drawable.sym_keyboard_feedback_shift_locked); mShiftLockPreviewIcon.setBounds(0, 0, mShiftLockPreviewIcon.getIntrinsicWidth(), mShiftLockPreviewIcon.getIntrinsicHeight()); + sSpacebarVerticalCorrection = res.getDimensionPixelOffset( + R.dimen.spacebar_vertical_correction); } public LatinKeyboard(Context context, int layoutTemplateResId, @@ -225,6 +228,8 @@ public class LatinKeyboard extends Keyboard { y -= height / 10; if (code == KEYCODE_SHIFT) x += width / 6; if (code == KEYCODE_DELETE) x -= width / 6; + } else if (code == LatinIME.KEYCODE_SPACE) { + y += LatinKeyboard.sSpacebarVerticalCorrection; } return super.isInside(x, y); } diff --git a/src/com/android/inputmethod/latin/Suggest.java b/src/com/android/inputmethod/latin/Suggest.java index 91decd66ae..c025566b73 100755 --- a/src/com/android/inputmethod/latin/Suggest.java +++ b/src/com/android/inputmethod/latin/Suggest.java @@ -36,17 +36,21 @@ public class Suggest implements Dictionary.WordCallback { public static final int CORRECTION_NONE = 0; public static final int CORRECTION_BASIC = 1; public static final int CORRECTION_FULL = 2; - + private Dictionary mMainDict; - + private Dictionary mUserDictionary; - + + private Dictionary mAutoDictionary; + + private Dictionary mContactsDictionary; + private int mPrefMaxSuggestions = 12; - + private int[] mPriorities = new int[mPrefMaxSuggestions]; - private List<CharSequence> mSuggestions = new ArrayList<CharSequence>(); + private ArrayList<CharSequence> mSuggestions = new ArrayList<CharSequence>(); private boolean mIncludeTypedWordIfValid; - private List<CharSequence> mStringPool = new ArrayList<CharSequence>(); + private ArrayList<CharSequence> mStringPool = new ArrayList<CharSequence>(); private Context mContext; private boolean mHaveCorrection; private CharSequence mOriginalWord; @@ -63,11 +67,11 @@ public class Suggest implements Dictionary.WordCallback { mStringPool.add(sb); } } - + public int getCorrectionMode() { return mCorrectionMode; } - + public void setCorrectionMode(int mode) { mCorrectionMode = mode; } @@ -80,6 +84,17 @@ public class Suggest implements Dictionary.WordCallback { mUserDictionary = userDictionary; } + /** + * Sets an optional contacts dictionary resource to be loaded. + */ + public void setContactsDictionary(Dictionary userDictionary) { + mContactsDictionary = userDictionary; + } + + public void setAutoDictionary(Dictionary autoDictionary) { + mAutoDictionary = autoDictionary; + } + /** * Number of suggestions to generate from the input key sequence. This has * to be a number between 1 and 100 (inclusive). @@ -98,24 +113,34 @@ public class Suggest implements Dictionary.WordCallback { mStringPool.add(sb); } } - + private boolean haveSufficientCommonality(String original, CharSequence suggestion) { - final int len = Math.min(original.length(), suggestion.length()); - if (len <= 2) return true; + final int originalLength = original.length(); + final int suggestionLength = suggestion.length(); + final int minLength = Math.min(originalLength, suggestionLength); + if (minLength <= 2) return true; int matching = 0; - for (int i = 0; i < len; i++) { - if (UserDictionary.toLowerCase(original.charAt(i)) - == UserDictionary.toLowerCase(suggestion.charAt(i))) { + int lessMatching = 0; // Count matches if we skip one character + int i; + for (i = 0; i < minLength; i++) { + final char origChar = ExpandableDictionary.toLowerCase(original.charAt(i)); + if (origChar == ExpandableDictionary.toLowerCase(suggestion.charAt(i))) { matching++; + lessMatching++; + } else if (i + 1 < suggestionLength + && origChar == ExpandableDictionary.toLowerCase(suggestion.charAt(i + 1))) { + lessMatching++; } } - if (len <= 4) { + matching = Math.max(matching, lessMatching); + + if (minLength <= 4) { return matching >= 2; } else { - return matching > len / 2; + return matching > minLength / 2; } } - + /** * Returns a list of words that match the list of character codes passed in. * This list will be overwritten the next time this function is called. @@ -142,8 +167,14 @@ public class Suggest implements Dictionary.WordCallback { } // Search the dictionary only if there are at least 2 characters if (wordComposer.size() > 1) { - if (mUserDictionary != null) { - mUserDictionary.getWords(wordComposer, this); + if (mUserDictionary != null || mContactsDictionary != null) { + if (mUserDictionary != null) { + mUserDictionary.getWords(wordComposer, this); + } + if (mContactsDictionary != null) { + mContactsDictionary.getWords(wordComposer, this); + } + if (mSuggestions.size() > 0 && isValidWord(mOriginalWord)) { mHaveCorrection = true; } @@ -187,10 +218,38 @@ public class Suggest implements Dictionary.WordCallback { } i++; } - + + removeDupes(); return mSuggestions; } + private void removeDupes() { + final ArrayList<CharSequence> suggestions = mSuggestions; + if (suggestions.size() < 2) return; + int i = 1; + // Don't cache suggestions.size(), since we may be removing items + while (i < suggestions.size()) { + final CharSequence cur = suggestions.get(i); + // Compare each candidate with each previous candidate + for (int j = 0; j < i; j++) { + CharSequence previous = suggestions.get(j); + if (TextUtils.equals(cur, previous)) { + removeFromSuggestions(i); + i--; + break; + } + } + i++; + } + } + + private void removeFromSuggestions(int index) { + CharSequence garbage = mSuggestions.remove(index); + if (garbage != null && garbage instanceof StringBuilder) { + mStringPool.add(garbage); + } + } + public boolean hasMinimalCorrection() { return mHaveCorrection; } @@ -256,7 +315,9 @@ public class Suggest implements Dictionary.WordCallback { } return (mCorrectionMode == CORRECTION_FULL && mMainDict.isValidWord(word)) || (mCorrectionMode > CORRECTION_NONE && - (mUserDictionary != null && mUserDictionary.isValidWord(word))); + ((mUserDictionary != null && mUserDictionary.isValidWord(word))) + || (mAutoDictionary != null && mAutoDictionary.isValidWord(word)) + || (mContactsDictionary != null && mContactsDictionary.isValidWord(word))); } private void collectGarbage() { diff --git a/src/com/android/inputmethod/latin/UserDictionary.java b/src/com/android/inputmethod/latin/UserDictionary.java index 09549bf8ce..2f3447abdc 100644 --- a/src/com/android/inputmethod/latin/UserDictionary.java +++ b/src/com/android/inputmethod/latin/UserDictionary.java @@ -26,7 +26,7 @@ import android.database.ContentObserver; import android.database.Cursor; import android.provider.UserDictionary.Words; -public class UserDictionary extends Dictionary { +public class UserDictionary extends ExpandableDictionary { private static final String[] PROJECTION = { Words._ID, @@ -37,31 +37,12 @@ public class UserDictionary extends Dictionary { private static final int INDEX_WORD = 1; private static final int INDEX_FREQUENCY = 2; - private static final char QUOTE = '\''; - - private Context mContext; - - List<Node> mRoots; - private int mMaxDepth; - private int mInputLength; - - public static final int MAX_WORD_LENGTH = 32; - - private char[] mWordBuilder = new char[MAX_WORD_LENGTH]; - private ContentObserver mObserver; - static class Node { - char code; - int frequency; - boolean terminal; - List<Node> children; - } - private boolean mRequiresReload; public UserDictionary(Context context) { - mContext = context; + super(context); // Perform a managed query. The Activity will handle closing and requerying the cursor // when needed. ContentResolver cres = context.getContentResolver(); @@ -78,13 +59,13 @@ public class UserDictionary extends Dictionary { public synchronized void close() { if (mObserver != null) { - mContext.getContentResolver().unregisterContentObserver(mObserver); + getContext().getContentResolver().unregisterContentObserver(mObserver); mObserver = null; } } private synchronized void loadDictionary() { - Cursor cursor = mContext.getContentResolver() + Cursor cursor = getContext().getContentResolver() .query(Words.CONTENT_URI, PROJECTION, "(locale IS NULL) or (locale=?)", new String[] { Locale.getDefault().toString() }, null); addWords(cursor); @@ -99,12 +80,15 @@ public class UserDictionary extends Dictionary { * the highest. * @TODO use a higher or float range for frequency */ + @Override public synchronized void addWord(String word, int frequency) { if (mRequiresReload) loadDictionary(); // Safeguard against adding long words. Can cause stack overflow. - if (word.length() >= MAX_WORD_LENGTH) return; - addWordRec(mRoots, word, 0, frequency); - Words.addWord(mContext, word, frequency, Words.LOCALE_TYPE_CURRENT); + if (word.length() >= getMaxWordLength()) return; + + super.addWord(word, frequency); + + Words.addWord(getContext(), word, frequency, Words.LOCALE_TYPE_CURRENT); // In case the above does a synchronous callback of the change observer mRequiresReload = false; } @@ -112,362 +96,31 @@ public class UserDictionary extends Dictionary { @Override public synchronized void getWords(final WordComposer codes, final WordCallback callback) { if (mRequiresReload) loadDictionary(); - mInputLength = codes.size(); - mMaxDepth = mInputLength * 3; - getWordsRec(mRoots, codes, mWordBuilder, 0, false, 1.0f, 0, callback); + super.getWords(codes, callback); } @Override public synchronized boolean isValidWord(CharSequence word) { if (mRequiresReload) loadDictionary(); - return isValidWordRec(mRoots, word, 0, word.length()); - } - - private boolean isValidWordRec(final List<Node> children, final CharSequence word, - final int offset, final int length) { - final int count = children.size(); - char currentChar = word.charAt(offset); - for (int j = 0; j < count; j++) { - final Node node = children.get(j); - if (node.code == currentChar) { - if (offset == length - 1) { - if (node.terminal) { - return true; - } - } else { - if (node.children != null) { - if (isValidWordRec(node.children, word, offset + 1, length)) { - return true; - } - } - } - } - } - return false; - } - - static char toLowerCase(char c) { - if (c < BASE_CHARS.length) { - c = BASE_CHARS[c]; - } - c = Character.toLowerCase(c); - return c; - } - - /** - * Recursively traverse the tree for words that match the input. Input consists of - * a list of arrays. Each item in the list is one input character position. An input - * character is actually an array of multiple possible candidates. This function is not - * optimized for speed, assuming that the user dictionary will only be a few hundred words in - * size. - * @param roots node whose children have to be search for matches - * @param codes the input character codes - * @param word the word being composed as a possible match - * @param depth the depth of traversal - the length of the word being composed thus far - * @param completion whether the traversal is now in completion mode - meaning that we've - * exhausted the input and we're looking for all possible suffixes. - * @param snr current weight of the word being formed - * @param inputIndex position in the input characters. This can be off from the depth in - * case we skip over some punctuations such as apostrophe in the traversal. That is, if you type - * "wouldve", it could be matching "would've", so the depth will be one more than the - * inputIndex - * @param callback the callback class for adding a word - */ - private void getWordsRec(List<Node> roots, final WordComposer codes, final char[] word, - final int depth, boolean completion, float snr, int inputIndex, - WordCallback callback) { - final int count = roots.size(); - final int codeSize = mInputLength; - // Optimization: Prune out words that are too long compared to how much was typed. - if (depth > mMaxDepth) { - return; - } - int[] currentChars = null; - if (codeSize <= inputIndex) { - completion = true; - } else { - currentChars = codes.getCodesAt(inputIndex); - } - - for (int i = 0; i < count; i++) { - final Node node = roots.get(i); - final char c = node.code; - final char lowerC = toLowerCase(c); - boolean terminal = node.terminal; - List<Node> children = node.children; - int freq = node.frequency; - if (completion) { - word[depth] = c; - if (terminal) { - if (!callback.addWord(word, 0, depth + 1, (int) (freq * snr))) { - return; - } - } - if (children != null) { - getWordsRec(children, codes, word, depth + 1, completion, snr, inputIndex, - callback); - } - } else if (c == QUOTE && currentChars[0] != QUOTE) { - // Skip the ' and continue deeper - word[depth] = QUOTE; - if (children != null) { - getWordsRec(children, codes, word, depth + 1, completion, snr, inputIndex, - callback); - } - } else { - for (int j = 0; j < currentChars.length; j++) { - float addedAttenuation = (j > 0 ? 1f : 3f); - if (currentChars[j] == -1) { - break; - } - if (currentChars[j] == lowerC || currentChars[j] == c) { - word[depth] = c; - - if (codes.size() == depth + 1) { - if (terminal) { - if (INCLUDE_TYPED_WORD_IF_VALID - || !same(word, depth + 1, codes.getTypedWord())) { - callback.addWord(word, 0, depth + 1, - (int) (freq * snr * addedAttenuation - * FULL_WORD_FREQ_MULTIPLIER)); - } - } - if (children != null) { - getWordsRec(children, codes, word, depth + 1, - true, snr * addedAttenuation, inputIndex + 1, callback); - } - } else if (children != null) { - getWordsRec(children, codes, word, depth + 1, - false, snr * addedAttenuation, inputIndex + 1, callback); - } - } - } - } - } + return super.isValidWord(word); } private void addWords(Cursor cursor) { - mRoots = new ArrayList<Node>(); - + clearDictionary(); + + final int maxWordLength = getMaxWordLength(); if (cursor.moveToFirst()) { while (!cursor.isAfterLast()) { String word = cursor.getString(INDEX_WORD); int frequency = cursor.getInt(INDEX_FREQUENCY); // Safeguard against adding really long words. Stack may overflow due // to recursion - if (word.length() < MAX_WORD_LENGTH) { - addWordRec(mRoots, word, 0, frequency); + if (word.length() < maxWordLength) { + super.addWord(word, frequency); } cursor.moveToNext(); } } cursor.close(); } - - private void addWordRec(List<Node> children, final String word, - final int depth, final int frequency) { - - final int wordLength = word.length(); - final char c = word.charAt(depth); - // Does children have the current character? - final int childrenLength = children.size(); - Node childNode = null; - boolean found = false; - for (int i = 0; i < childrenLength; i++) { - childNode = children.get(i); - if (childNode.code == c) { - found = true; - break; - } - } - if (!found) { - childNode = new Node(); - childNode.code = c; - children.add(childNode); - } - if (wordLength == depth + 1) { - // Terminate this word - childNode.terminal = true; - childNode.frequency += frequency; // If there are multiple similar words - return; - } - if (childNode.children == null) { - childNode.children = new ArrayList<Node>(); - } - addWordRec(childNode.children, word, depth + 1, frequency); - } - - /** - * Table mapping most combined Latin, Greek, and Cyrillic characters - * to their base characters. If c is in range, BASE_CHARS[c] == c - * if c is not a combined character, or the base character if it - * is combined. - */ - static final char BASE_CHARS[] = { - 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, - 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, - 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, - 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, - 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, - 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, - 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, - 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, - 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, - 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, - 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, - 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, - 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, - 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, - 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, - 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, - 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, - 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, - 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, - 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, - 0x0020, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, - 0x0020, 0x00a9, 0x0061, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x0020, - 0x00b0, 0x00b1, 0x0032, 0x0033, 0x0020, 0x03bc, 0x00b6, 0x00b7, - 0x0020, 0x0031, 0x006f, 0x00bb, 0x0031, 0x0031, 0x0033, 0x00bf, - 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x00c6, 0x0043, - 0x0045, 0x0045, 0x0045, 0x0045, 0x0049, 0x0049, 0x0049, 0x0049, - 0x00d0, 0x004e, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x00d7, - 0x004f, 0x0055, 0x0055, 0x0055, 0x0055, 0x0059, 0x00de, 0x0073, // Manually changed d8 to 4f - // Manually changed df to 73 - 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x00e6, 0x0063, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0069, 0x0069, 0x0069, 0x0069, - 0x00f0, 0x006e, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x00f7, - 0x006f, 0x0075, 0x0075, 0x0075, 0x0075, 0x0079, 0x00fe, 0x0079, // Manually changed f8 to 6f - 0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061, 0x0043, 0x0063, - 0x0043, 0x0063, 0x0043, 0x0063, 0x0043, 0x0063, 0x0044, 0x0064, - 0x0110, 0x0111, 0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065, - 0x0045, 0x0065, 0x0045, 0x0065, 0x0047, 0x0067, 0x0047, 0x0067, - 0x0047, 0x0067, 0x0047, 0x0067, 0x0048, 0x0068, 0x0126, 0x0127, - 0x0049, 0x0069, 0x0049, 0x0069, 0x0049, 0x0069, 0x0049, 0x0069, - 0x0049, 0x0131, 0x0049, 0x0069, 0x004a, 0x006a, 0x004b, 0x006b, - 0x0138, 0x004c, 0x006c, 0x004c, 0x006c, 0x004c, 0x006c, 0x004c, - 0x006c, 0x0141, 0x0142, 0x004e, 0x006e, 0x004e, 0x006e, 0x004e, - 0x006e, 0x02bc, 0x014a, 0x014b, 0x004f, 0x006f, 0x004f, 0x006f, - 0x004f, 0x006f, 0x0152, 0x0153, 0x0052, 0x0072, 0x0052, 0x0072, - 0x0052, 0x0072, 0x0053, 0x0073, 0x0053, 0x0073, 0x0053, 0x0073, - 0x0053, 0x0073, 0x0054, 0x0074, 0x0054, 0x0074, 0x0166, 0x0167, - 0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075, - 0x0055, 0x0075, 0x0055, 0x0075, 0x0057, 0x0077, 0x0059, 0x0079, - 0x0059, 0x005a, 0x007a, 0x005a, 0x007a, 0x005a, 0x007a, 0x0073, - 0x0180, 0x0181, 0x0182, 0x0183, 0x0184, 0x0185, 0x0186, 0x0187, - 0x0188, 0x0189, 0x018a, 0x018b, 0x018c, 0x018d, 0x018e, 0x018f, - 0x0190, 0x0191, 0x0192, 0x0193, 0x0194, 0x0195, 0x0196, 0x0197, - 0x0198, 0x0199, 0x019a, 0x019b, 0x019c, 0x019d, 0x019e, 0x019f, - 0x004f, 0x006f, 0x01a2, 0x01a3, 0x01a4, 0x01a5, 0x01a6, 0x01a7, - 0x01a8, 0x01a9, 0x01aa, 0x01ab, 0x01ac, 0x01ad, 0x01ae, 0x0055, - 0x0075, 0x01b1, 0x01b2, 0x01b3, 0x01b4, 0x01b5, 0x01b6, 0x01b7, - 0x01b8, 0x01b9, 0x01ba, 0x01bb, 0x01bc, 0x01bd, 0x01be, 0x01bf, - 0x01c0, 0x01c1, 0x01c2, 0x01c3, 0x0044, 0x0044, 0x0064, 0x004c, - 0x004c, 0x006c, 0x004e, 0x004e, 0x006e, 0x0041, 0x0061, 0x0049, - 0x0069, 0x004f, 0x006f, 0x0055, 0x0075, 0x00dc, 0x00fc, 0x00dc, - 0x00fc, 0x00dc, 0x00fc, 0x00dc, 0x00fc, 0x01dd, 0x00c4, 0x00e4, - 0x0226, 0x0227, 0x00c6, 0x00e6, 0x01e4, 0x01e5, 0x0047, 0x0067, - 0x004b, 0x006b, 0x004f, 0x006f, 0x01ea, 0x01eb, 0x01b7, 0x0292, - 0x006a, 0x0044, 0x0044, 0x0064, 0x0047, 0x0067, 0x01f6, 0x01f7, - 0x004e, 0x006e, 0x00c5, 0x00e5, 0x00c6, 0x00e6, 0x00d8, 0x00f8, - 0x0041, 0x0061, 0x0041, 0x0061, 0x0045, 0x0065, 0x0045, 0x0065, - 0x0049, 0x0069, 0x0049, 0x0069, 0x004f, 0x006f, 0x004f, 0x006f, - 0x0052, 0x0072, 0x0052, 0x0072, 0x0055, 0x0075, 0x0055, 0x0075, - 0x0053, 0x0073, 0x0054, 0x0074, 0x021c, 0x021d, 0x0048, 0x0068, - 0x0220, 0x0221, 0x0222, 0x0223, 0x0224, 0x0225, 0x0041, 0x0061, - 0x0045, 0x0065, 0x00d6, 0x00f6, 0x00d5, 0x00f5, 0x004f, 0x006f, - 0x022e, 0x022f, 0x0059, 0x0079, 0x0234, 0x0235, 0x0236, 0x0237, - 0x0238, 0x0239, 0x023a, 0x023b, 0x023c, 0x023d, 0x023e, 0x023f, - 0x0240, 0x0241, 0x0242, 0x0243, 0x0244, 0x0245, 0x0246, 0x0247, - 0x0248, 0x0249, 0x024a, 0x024b, 0x024c, 0x024d, 0x024e, 0x024f, - 0x0250, 0x0251, 0x0252, 0x0253, 0x0254, 0x0255, 0x0256, 0x0257, - 0x0258, 0x0259, 0x025a, 0x025b, 0x025c, 0x025d, 0x025e, 0x025f, - 0x0260, 0x0261, 0x0262, 0x0263, 0x0264, 0x0265, 0x0266, 0x0267, - 0x0268, 0x0269, 0x026a, 0x026b, 0x026c, 0x026d, 0x026e, 0x026f, - 0x0270, 0x0271, 0x0272, 0x0273, 0x0274, 0x0275, 0x0276, 0x0277, - 0x0278, 0x0279, 0x027a, 0x027b, 0x027c, 0x027d, 0x027e, 0x027f, - 0x0280, 0x0281, 0x0282, 0x0283, 0x0284, 0x0285, 0x0286, 0x0287, - 0x0288, 0x0289, 0x028a, 0x028b, 0x028c, 0x028d, 0x028e, 0x028f, - 0x0290, 0x0291, 0x0292, 0x0293, 0x0294, 0x0295, 0x0296, 0x0297, - 0x0298, 0x0299, 0x029a, 0x029b, 0x029c, 0x029d, 0x029e, 0x029f, - 0x02a0, 0x02a1, 0x02a2, 0x02a3, 0x02a4, 0x02a5, 0x02a6, 0x02a7, - 0x02a8, 0x02a9, 0x02aa, 0x02ab, 0x02ac, 0x02ad, 0x02ae, 0x02af, - 0x0068, 0x0266, 0x006a, 0x0072, 0x0279, 0x027b, 0x0281, 0x0077, - 0x0079, 0x02b9, 0x02ba, 0x02bb, 0x02bc, 0x02bd, 0x02be, 0x02bf, - 0x02c0, 0x02c1, 0x02c2, 0x02c3, 0x02c4, 0x02c5, 0x02c6, 0x02c7, - 0x02c8, 0x02c9, 0x02ca, 0x02cb, 0x02cc, 0x02cd, 0x02ce, 0x02cf, - 0x02d0, 0x02d1, 0x02d2, 0x02d3, 0x02d4, 0x02d5, 0x02d6, 0x02d7, - 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x02de, 0x02df, - 0x0263, 0x006c, 0x0073, 0x0078, 0x0295, 0x02e5, 0x02e6, 0x02e7, - 0x02e8, 0x02e9, 0x02ea, 0x02eb, 0x02ec, 0x02ed, 0x02ee, 0x02ef, - 0x02f0, 0x02f1, 0x02f2, 0x02f3, 0x02f4, 0x02f5, 0x02f6, 0x02f7, - 0x02f8, 0x02f9, 0x02fa, 0x02fb, 0x02fc, 0x02fd, 0x02fe, 0x02ff, - 0x0300, 0x0301, 0x0302, 0x0303, 0x0304, 0x0305, 0x0306, 0x0307, - 0x0308, 0x0309, 0x030a, 0x030b, 0x030c, 0x030d, 0x030e, 0x030f, - 0x0310, 0x0311, 0x0312, 0x0313, 0x0314, 0x0315, 0x0316, 0x0317, - 0x0318, 0x0319, 0x031a, 0x031b, 0x031c, 0x031d, 0x031e, 0x031f, - 0x0320, 0x0321, 0x0322, 0x0323, 0x0324, 0x0325, 0x0326, 0x0327, - 0x0328, 0x0329, 0x032a, 0x032b, 0x032c, 0x032d, 0x032e, 0x032f, - 0x0330, 0x0331, 0x0332, 0x0333, 0x0334, 0x0335, 0x0336, 0x0337, - 0x0338, 0x0339, 0x033a, 0x033b, 0x033c, 0x033d, 0x033e, 0x033f, - 0x0300, 0x0301, 0x0342, 0x0313, 0x0308, 0x0345, 0x0346, 0x0347, - 0x0348, 0x0349, 0x034a, 0x034b, 0x034c, 0x034d, 0x034e, 0x034f, - 0x0350, 0x0351, 0x0352, 0x0353, 0x0354, 0x0355, 0x0356, 0x0357, - 0x0358, 0x0359, 0x035a, 0x035b, 0x035c, 0x035d, 0x035e, 0x035f, - 0x0360, 0x0361, 0x0362, 0x0363, 0x0364, 0x0365, 0x0366, 0x0367, - 0x0368, 0x0369, 0x036a, 0x036b, 0x036c, 0x036d, 0x036e, 0x036f, - 0x0370, 0x0371, 0x0372, 0x0373, 0x02b9, 0x0375, 0x0376, 0x0377, - 0x0378, 0x0379, 0x0020, 0x037b, 0x037c, 0x037d, 0x003b, 0x037f, - 0x0380, 0x0381, 0x0382, 0x0383, 0x0020, 0x00a8, 0x0391, 0x00b7, - 0x0395, 0x0397, 0x0399, 0x038b, 0x039f, 0x038d, 0x03a5, 0x03a9, - 0x03ca, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, - 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, - 0x03a0, 0x03a1, 0x03a2, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, - 0x03a8, 0x03a9, 0x0399, 0x03a5, 0x03b1, 0x03b5, 0x03b7, 0x03b9, - 0x03cb, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, - 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, - 0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, - 0x03c8, 0x03c9, 0x03b9, 0x03c5, 0x03bf, 0x03c5, 0x03c9, 0x03cf, - 0x03b2, 0x03b8, 0x03a5, 0x03d2, 0x03d2, 0x03c6, 0x03c0, 0x03d7, - 0x03d8, 0x03d9, 0x03da, 0x03db, 0x03dc, 0x03dd, 0x03de, 0x03df, - 0x03e0, 0x03e1, 0x03e2, 0x03e3, 0x03e4, 0x03e5, 0x03e6, 0x03e7, - 0x03e8, 0x03e9, 0x03ea, 0x03eb, 0x03ec, 0x03ed, 0x03ee, 0x03ef, - 0x03ba, 0x03c1, 0x03c2, 0x03f3, 0x0398, 0x03b5, 0x03f6, 0x03f7, - 0x03f8, 0x03a3, 0x03fa, 0x03fb, 0x03fc, 0x03fd, 0x03fe, 0x03ff, - 0x0415, 0x0415, 0x0402, 0x0413, 0x0404, 0x0405, 0x0406, 0x0406, - 0x0408, 0x0409, 0x040a, 0x040b, 0x041a, 0x0418, 0x0423, 0x040f, - 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, - 0x0418, 0x0418, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, - 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, - 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, - 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, - 0x0438, 0x0438, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, - 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, - 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, - 0x0435, 0x0435, 0x0452, 0x0433, 0x0454, 0x0455, 0x0456, 0x0456, - 0x0458, 0x0459, 0x045a, 0x045b, 0x043a, 0x0438, 0x0443, 0x045f, - 0x0460, 0x0461, 0x0462, 0x0463, 0x0464, 0x0465, 0x0466, 0x0467, - 0x0468, 0x0469, 0x046a, 0x046b, 0x046c, 0x046d, 0x046e, 0x046f, - 0x0470, 0x0471, 0x0472, 0x0473, 0x0474, 0x0475, 0x0474, 0x0475, - 0x0478, 0x0479, 0x047a, 0x047b, 0x047c, 0x047d, 0x047e, 0x047f, - 0x0480, 0x0481, 0x0482, 0x0483, 0x0484, 0x0485, 0x0486, 0x0487, - 0x0488, 0x0489, 0x048a, 0x048b, 0x048c, 0x048d, 0x048e, 0x048f, - 0x0490, 0x0491, 0x0492, 0x0493, 0x0494, 0x0495, 0x0496, 0x0497, - 0x0498, 0x0499, 0x049a, 0x049b, 0x049c, 0x049d, 0x049e, 0x049f, - 0x04a0, 0x04a1, 0x04a2, 0x04a3, 0x04a4, 0x04a5, 0x04a6, 0x04a7, - 0x04a8, 0x04a9, 0x04aa, 0x04ab, 0x04ac, 0x04ad, 0x04ae, 0x04af, - 0x04b0, 0x04b1, 0x04b2, 0x04b3, 0x04b4, 0x04b5, 0x04b6, 0x04b7, - 0x04b8, 0x04b9, 0x04ba, 0x04bb, 0x04bc, 0x04bd, 0x04be, 0x04bf, - 0x04c0, 0x0416, 0x0436, 0x04c3, 0x04c4, 0x04c5, 0x04c6, 0x04c7, - 0x04c8, 0x04c9, 0x04ca, 0x04cb, 0x04cc, 0x04cd, 0x04ce, 0x04cf, - 0x0410, 0x0430, 0x0410, 0x0430, 0x04d4, 0x04d5, 0x0415, 0x0435, - 0x04d8, 0x04d9, 0x04d8, 0x04d9, 0x0416, 0x0436, 0x0417, 0x0437, - 0x04e0, 0x04e1, 0x0418, 0x0438, 0x0418, 0x0438, 0x041e, 0x043e, - 0x04e8, 0x04e9, 0x04e8, 0x04e9, 0x042d, 0x044d, 0x0423, 0x0443, - 0x0423, 0x0443, 0x0423, 0x0443, 0x0427, 0x0447, 0x04f6, 0x04f7, - 0x042b, 0x044b, 0x04fa, 0x04fb, 0x04fc, 0x04fd, 0x04fe, 0x04ff, - }; - - // 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"; }' - } diff --git a/src/com/android/inputmethod/latin/WordComposer.java b/src/com/android/inputmethod/latin/WordComposer.java index c950a7f185..50725d481e 100644 --- a/src/com/android/inputmethod/latin/WordComposer.java +++ b/src/com/android/inputmethod/latin/WordComposer.java @@ -26,7 +26,7 @@ public class WordComposer { /** * The list of unicode values for each keystroke (including surrounding keys) */ - private List<int[]> mCodes; + private ArrayList<int[]> mCodes; /** * The word chosen from the candidate list, until it is committed. @@ -34,6 +34,8 @@ public class WordComposer { private String mPreferredWord; private StringBuilder mTypedWord; + + private int mCapsCount; /** * Whether the user chose to capitalize the word. @@ -53,6 +55,7 @@ public class WordComposer { mIsCapitalized = false; mPreferredWord = null; mTypedWord.setLength(0); + mCapsCount = 0; } /** @@ -80,6 +83,7 @@ public class WordComposer { public void add(int primaryCode, int[] codes) { mTypedWord.append((char) primaryCode); mCodes.add(codes); + if (Character.isUpperCase((char) primaryCode)) mCapsCount++; } /** @@ -87,7 +91,10 @@ public class WordComposer { */ public void deleteLast() { mCodes.remove(mCodes.size() - 1); - mTypedWord.deleteCharAt(mTypedWord.length() - 1); + final int lastPos = mTypedWord.length() - 1; + char last = mTypedWord.charAt(lastPos); + mTypedWord.deleteCharAt(lastPos); + if (Character.isUpperCase(last)) mCapsCount--; } /** @@ -138,4 +145,11 @@ public class WordComposer { public CharSequence getPreferredWord() { return mPreferredWord != null ? mPreferredWord : getTypedWord(); } + + /** + * Returns true if more than one character is upper case, otherwise returns false. + */ + public boolean isMostlyCaps() { + return mCapsCount > 1; + } } -- GitLab