aboutsummaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
Diffstat (limited to 'java')
-rw-r--r--java/res/layout/sound_effect_volume_dialog.xml44
-rw-r--r--java/res/values-af/strings.xml3
-rw-r--r--java/res/values-am/strings.xml3
-rw-r--r--java/res/values-ar/donottranslate-more-keys.xml7
-rw-r--r--java/res/values-ar/strings.xml3
-rw-r--r--java/res/values-be/strings.xml153
-rw-r--r--java/res/values-bg/strings.xml3
-rw-r--r--java/res/values-ca/strings.xml3
-rw-r--r--java/res/values-cs/strings.xml3
-rw-r--r--java/res/values-da/strings.xml3
-rw-r--r--java/res/values-de/strings.xml3
-rw-r--r--java/res/values-el/strings.xml3
-rw-r--r--java/res/values-en-rGB/strings.xml3
-rw-r--r--java/res/values-es-rUS/strings.xml3
-rw-r--r--java/res/values-es/strings.xml5
-rw-r--r--java/res/values-et/strings.xml153
-rw-r--r--java/res/values-fa/strings.xml3
-rw-r--r--java/res/values-fi/strings.xml3
-rw-r--r--java/res/values-fr/strings.xml3
-rw-r--r--java/res/values-hi/strings.xml3
-rw-r--r--java/res/values-hr/strings.xml3
-rw-r--r--java/res/values-hu/strings.xml3
-rw-r--r--java/res/values-in/strings.xml3
-rw-r--r--java/res/values-it/strings.xml3
-rw-r--r--java/res/values-iw/strings.xml3
-rw-r--r--java/res/values-ja/strings.xml3
-rw-r--r--java/res/values-ko/strings.xml3
-rw-r--r--java/res/values-lt/strings.xml3
-rw-r--r--java/res/values-lv/strings.xml3
-rw-r--r--java/res/values-ms/strings.xml3
-rw-r--r--java/res/values-nb/strings.xml3
-rw-r--r--java/res/values-nl/strings.xml3
-rw-r--r--java/res/values-pl/strings.xml3
-rw-r--r--java/res/values-pt-rPT/strings.xml5
-rw-r--r--java/res/values-pt/strings.xml3
-rw-r--r--java/res/values-rm/strings.xml4
-rw-r--r--java/res/values-ro/strings.xml3
-rw-r--r--java/res/values-ru/strings.xml3
-rw-r--r--java/res/values-sk/strings.xml3
-rw-r--r--java/res/values-sl/strings.xml3
-rw-r--r--java/res/values-sr/strings.xml3
-rw-r--r--java/res/values-sv/strings.xml3
-rw-r--r--java/res/values-sw/strings.xml3
-rw-r--r--java/res/values-th/strings.xml3
-rw-r--r--java/res/values-tl/strings.xml3
-rw-r--r--java/res/values-tr/strings.xml3
-rw-r--r--java/res/values-uk/strings.xml3
-rw-r--r--java/res/values-vi/strings.xml3
-rw-r--r--java/res/values-zh-rCN/strings.xml3
-rw-r--r--java/res/values-zh-rTW/strings.xml3
-rw-r--r--java/res/values-zu/strings.xml3
-rw-r--r--java/res/values/dimens.xml2
-rw-r--r--java/res/values/donottranslate-more-keys.xml2
-rw-r--r--java/res/values/strings.xml6
-rw-r--r--java/res/xml/kbd_rows_symbols.xml4
-rw-r--r--java/res/xml/prefs.xml5
-rw-r--r--java/src/com/android/inputmethod/accessibility/AccessibleKeyboardViewProxy.java30
-rw-r--r--java/src/com/android/inputmethod/compat/SuggestionSpanUtils.java30
-rw-r--r--java/src/com/android/inputmethod/keyboard/LatinKeyboard.java9
-rw-r--r--java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java10
-rw-r--r--java/src/com/android/inputmethod/keyboard/MiniKeyboardView.java11
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java24
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java44
-rw-r--r--java/src/com/android/inputmethod/latin/MoreSuggestionsView.java12
-rw-r--r--java/src/com/android/inputmethod/latin/Settings.java139
-rw-r--r--java/src/com/android/inputmethod/latin/SynchronouslyLoadedContactsDictionary.java53
-rw-r--r--java/src/com/android/inputmethod/latin/UserDictionary.java6
-rw-r--r--java/src/com/android/inputmethod/latin/Utils.java18
-rw-r--r--java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java39
69 files changed, 772 insertions, 175 deletions
diff --git a/java/res/layout/sound_effect_volume_dialog.xml b/java/res/layout/sound_effect_volume_dialog.xml
new file mode 100644
index 000000000..c5b2f10e2
--- /dev/null
+++ b/java/res/layout/sound_effect_volume_dialog.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2011, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_margin="10dip">
+ <LinearLayout
+ android:orientation="horizontal"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:gravity="center_horizontal"
+ android:layout_margin="10dip">
+ <TextView android:id="@+id/sound_effect_volume_value"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textSize="20dip"/>
+ </LinearLayout>
+ <SeekBar
+ android:id="@+id/sound_effect_volume_bar"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:max="100"
+ android:layout_margin="10dip"/>
+</LinearLayout>
diff --git a/java/res/values-af/strings.xml b/java/res/values-af/strings.xml
index 6c52f9c5a..2063b2dc3 100644
--- a/java/res/values-af/strings.xml
+++ b/java/res/values-af/strings.xml
@@ -148,5 +148,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"Engels (VK)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"Engels (VS)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Bruikbaarheidstudie-modus"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"Vibrasie-tydsduurinstellings"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Sleuteldruk se vibrasie-tydsduurinstellings"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Sleuteldruk se klankvolume-instellings"</string>
</resources>
diff --git a/java/res/values-am/strings.xml b/java/res/values-am/strings.xml
index 40cbbcefa..d5280bc64 100644
--- a/java/res/values-am/strings.xml
+++ b/java/res/values-am/strings.xml
@@ -148,5 +148,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"እንግሊዘኛ (የታላቋ ብሪታንያ)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"እንግሊዘኛ (ዩ.ኤስ)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"የተገልጋይነት ጥናት ሁነታ"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"በቅንጅቶች ወቅት ንዝረት"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"ቁልፍ ተጫን በቅንጅቶች ወቅት ንዝረት"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"ቁልፍ ተጫን የድምጽ መጠን ቅንጅቶች"</string>
</resources>
diff --git a/java/res/values-ar/donottranslate-more-keys.xml b/java/res/values-ar/donottranslate-more-keys.xml
index 36f670e00..cde686084 100644
--- a/java/res/values-ar/donottranslate-more-keys.xml
+++ b/java/res/values-ar/donottranslate-more-keys.xml
@@ -102,5 +102,10 @@
<!-- In order to make Tatweel easily distinguishable from other punctuations, we use consecutive Tatweels only for its displayed label. -->
<string name="more_keys_for_dash">"\u0651,\u0652,\u064c,\u0653,\u064f,\u0650,\u064e,\u064b,\u0640\u0640\u0640|\u0640,\u064d,\u0654,\u0656,\u0655,\u0670"</string>
<string name="more_keys_for_bullet">♪</string>
- <string name="more_keys_for_star">★</string>
+ <!-- \u066d: ARABIC FIVE POINTED STAR -->
+ <string name="more_keys_for_star">★,\u066d</string>
+ <!-- \ufd3e: ORNATE LEFT PARENTHESIS -->
+ <string name="more_keys_for_left_parenthesis">[,{,&lt;,\ufd3e</string>
+ <!-- \ufd3f: ORNATE RIGHT PARENTHESIS -->
+ <string name="more_keys_for_right_parenthesis">],},&gt;,\ufd3f</string>
</resources>
diff --git a/java/res/values-ar/strings.xml b/java/res/values-ar/strings.xml
index f094310db..dca73659a 100644
--- a/java/res/values-ar/strings.xml
+++ b/java/res/values-ar/strings.xml
@@ -148,5 +148,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"الإنجليزية (المملكة المتحدة)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"الإنجليزية (الولايات المتحدة)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"وضع سهولة الاستخدام"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"إعدادات مدة الاهتزاز"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"إعدادات مدة اهتزاز الضغط على المفاتيح"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"إعدادات مستوى صوت الضغط على المفاتيح"</string>
</resources>
diff --git a/java/res/values-be/strings.xml b/java/res/values-be/strings.xml
new file mode 100644
index 000000000..1ed944caf
--- /dev/null
+++ b/java/res/values-be/strings.xml
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2008, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="english_ime_name" msgid="7252517407088836577">"Клавіятура Android"</string>
+ <string name="english_ime_settings" msgid="6661589557206947774">"Налады клавіятуры Android"</string>
+ <string name="english_ime_input_options" msgid="3909945612939668554">"Параметры ўводу"</string>
+ <string name="spell_checker_service_name" msgid="2003013122022285508">"Папраўкі Android"</string>
+ <string name="android_spell_checker_settings" msgid="5822324635435443689">"Налады праверкі арфаграфіі"</string>
+ <string name="use_proximity_option_title" msgid="7469233942295924620">"Выкарыстоўвайць дадзеныя аб блізкасці"</string>
+ <string name="use_proximity_option_summary" msgid="2857708859847261945">"Для праверкі арфаграфіі выкарыстоўваць алгарытм блізкасці, падобны на клавіятуру"</string>
+ <string name="vibrate_on_keypress" msgid="5258079494276955460">"Вібрацыя пры націску клавіш"</string>
+ <string name="sound_on_keypress" msgid="6093592297198243644">"Гук пры націску"</string>
+ <string name="popup_on_keypress" msgid="123894815723512944">"Па націску на клавішы ўсплывае акно"</string>
+ <string name="general_category" msgid="1859088467017573195">"Агульныя"</string>
+ <string name="correction_category" msgid="2236750915056607613">"Выпраўленне тэксту"</string>
+ <string name="misc_category" msgid="6894192814868233453">"Іншыя параметры"</string>
+ <string name="advanced_settings" msgid="362895144495591463">"Адмысловыя налады"</string>
+ <string name="advanced_settings_summary" msgid="5193513161106637254">"Парам. для дасведч. карыст."</string>
+ <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Затрым. скр. падк. клав."</string>
+ <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Няма затрымкі"</string>
+ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Па змаўчанні"</string>
+ <string name="use_contacts_dict" msgid="4435317977804180815">"Прапан. імёны кантактаў"</string>
+ <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Выкарыстоўваць імёны са спісу кантактаў для прапаноў і выпраўл."</string>
+ <string name="enable_span_insert" msgid="7204653105667167620">"Уключыць карэкцiроўкі"</string>
+ <string name="enable_span_insert_summary" msgid="2947317657871394467">"Задаць прапановы для карэкцiроўкі"</string>
+ <string name="auto_cap" msgid="1719746674854628252">"Аўтаматычна рабіць вялікія літары"</string>
+ <string name="configure_dictionaries_title" msgid="4238652338556902049">"Дадатковыя слоўнікі"</string>
+ <string name="main_dictionary" msgid="4798763781818361168">"Асноўны слоўнік"</string>
+ <string name="prefs_show_suggestions" msgid="8026799663445531637">"Паказаць прапановы на выпраўленне"</string>
+ <string name="prefs_show_suggestions_summary" msgid="1583132279498502825">"Паказваць прапанаваныя словы падчас набору тэксту"</string>
+ <string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Заўсёды паказваць"</string>
+ <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Паказаць у партрэтным рэжыме"</string>
+ <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Заўседы хаваць"</string>
+ <string name="prefs_settings_key" msgid="4623341240804046498">"Паказаць умоўныя азначэнні налад"</string>
+ <string name="auto_correction" msgid="4979925752001319458">"Аўтамат. выпраўленне"</string>
+ <string name="auto_correction_summary" msgid="5625751551134658006">"Прабелы і пунктуацыйныя знакі дазваляюць аўтаматычна выпраўляць памылкова ўведзеныя словы"</string>
+ <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Адключаны"</string>
+ <string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"Сціплы"</string>
+ <string name="auto_correction_threshold_mode_aggeressive" msgid="3524029103734923819">"Агрэсіўны"</string>
+ <string name="auto_correction_threshold_mode_very_aggeressive" msgid="3386782235540547678">"Вельмі агрэсіўны"</string>
+ <string name="bigram_suggestion" msgid="2636414079905220518">"Біграмныя падказкi"</string>
+ <string name="bigram_suggestion_summary" msgid="4383845146070101531">"Выкарыстаць папярэдняе слова, каб палепшыць прапанову"</string>
+ <string name="bigram_prediction" msgid="8914273444762259739">"Бiграмныя падказкi"</string>
+ <string name="bigram_prediction_summary" msgid="1747261921174300098">"Выкарыстанне папярэдняга слова для падказак"</string>
+ <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Захаваныя"</string>
+ <string name="label_go_key" msgid="1635148082137219148">"Пачаць"</string>
+ <string name="label_next_key" msgid="362972844525672568">"Далей"</string>
+ <string name="label_done_key" msgid="2441578748772529288">"Гатова"</string>
+ <string name="label_send_key" msgid="2815056534433717444">"Адправіць"</string>
+ <string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string>
+ <string name="label_to_symbol_key" msgid="8516904117128967293">"?123"</string>
+ <string name="label_to_symbol_with_microphone_key" msgid="9035925553010061906">"123"</string>
+ <string name="label_pause_key" msgid="181098308428035340">"Паўза"</string>
+ <string name="label_wait_key" msgid="6402152600878093134">"Чакае"</string>
+ <string name="spoken_use_headphones" msgid="896961781287283493">"Каб праслухаць паролi, падключыце гарнiтуру."</string>
+ <string name="spoken_current_text_is" msgid="2485723011272583845">"Бягучы тэкст %s"</string>
+ <string name="spoken_no_text_entered" msgid="7479685225597344496">"Тэкст не ўведзены"</string>
+ <string name="spoken_description_unknown" msgid="3197434010402179157">"Клавішны код %d"</string>
+ <string name="spoken_description_shift" msgid="244197883292549308">"Зрух"</string>
+ <string name="spoken_description_shift_shifted" msgid="954941524766465022">"Зрух уключаны"</string>
+ <string name="spoken_description_caps_lock" msgid="5660626444912131764">"Caps Lock уключаны"</string>
+ <string name="spoken_description_delete" msgid="8740376944276199801">"Выдаліць"</string>
+ <string name="spoken_description_to_symbol" msgid="5486340107500448969">"Сімвалы"</string>
+ <string name="spoken_description_to_alpha" msgid="23129338819771807">"Літары"</string>
+ <string name="spoken_description_to_numeric" msgid="591752092685161732">"Лічбы"</string>
+ <string name="spoken_description_settings" msgid="4627462689603838099">"Налады"</string>
+ <string name="spoken_description_tab" msgid="2667716002663482248">"Укладка"</string>
+ <string name="spoken_description_space" msgid="2582521050049860859">"Прабел"</string>
+ <string name="spoken_description_mic" msgid="615536748882611950">"Галасавы ўвод"</string>
+ <string name="spoken_description_smiley" msgid="2256309826200113918">"Смайлік"</string>
+ <string name="spoken_description_return" msgid="8178083177238315647">"Увод"</string>
+ <string name="spoken_description_comma" msgid="4970844442999724586">"Коска"</string>
+ <string name="spoken_description_period" msgid="5286614628077903945">"Кропка"</string>
+ <string name="spoken_description_left_parenthesis" msgid="8524822120595052415">"Адчыняючая дужка"</string>
+ <string name="spoken_description_right_parenthesis" msgid="1085757995851933164">"Дужка, якая зачыняе"</string>
+ <string name="spoken_description_colon" msgid="4312420908484277077">"Двукроп\'е"</string>
+ <string name="spoken_description_semicolon" msgid="37737920987155179">"Кропка з коскай"</string>
+ <string name="spoken_description_exclamation_mark" msgid="2625684427460737157">"Клічнік"</string>
+ <string name="spoken_description_question_mark" msgid="7074097784255379666">"Пытальнік"</string>
+ <string name="spoken_description_double_quote" msgid="5485320575389905967">"Двукоссі"</string>
+ <string name="spoken_description_single_quote" msgid="4451320362665463938">"Паўдвукоссі"</string>
+ <string name="spoken_description_dot" msgid="40711082435231673">"Кропка"</string>
+ <string name="spoken_description_square_root" msgid="190595160284757811">"Квадратны корань"</string>
+ <string name="spoken_description_pi" msgid="4554418247799952239">"Пі"</string>
+ <string name="spoken_description_delta" msgid="3607948313655721579">"Дэльта"</string>
+ <string name="spoken_description_trademark" msgid="475877774077871369">"Гандлёвая марка"</string>
+ <string name="spoken_description_care_of" msgid="7492800237237796530">"Працэнт"</string>
+ <string name="spoken_description_star" msgid="1009742725387231977">"Пазначыць"</string>
+ <string name="spoken_description_pound" msgid="5530577649206922631">"Фунт"</string>
+ <string name="spoken_description_ellipsis" msgid="1687670869947652062">"Шматкроп\'е"</string>
+ <string name="spoken_description_low_double_quote" msgid="3551394572784840975">"Нізкія падвойныя двукоссі"</string>
+ <string name="voice_warning_title" msgid="4419354150908395008">"Галасавы ўвод"</string>
+ <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Галасавы ўвод пакуль не падтрымліваецца для вашай мовы, але працуе на англійскай мове."</string>
+ <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"Галасавы набор выкарыстоўвае распазнанне гаворкі Google. Ужываецца "<a href="http://m.google.com/privacy">"палiтыка прыватнасцi для мабiльных прылад"</a>"."</string>
+ <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Каб адключыць галасавы ўвод, перайдзіце ў налады метаду ўводу."</string>
+ <string name="voice_hint_dialog_message" msgid="1420686286820661548">"Каб выкарыстоўваць галасавы ўвод, націсніце кнопку мікрафона."</string>
+ <string name="voice_listening" msgid="467518160751321844">"Гаварыце"</string>
+ <string name="voice_working" msgid="6666937792815731889">"Апрацоўка"</string>
+ <string name="voice_initializing" msgid="661962047129906646"></string>
+ <string name="voice_error" msgid="5140896300312186162">"Памылка. Паспрабуйце яшчэ."</string>
+ <string name="voice_network_error" msgid="6649556447401862563">"Не атрымалася ўсталяваць падключэнне"</string>
+ <string name="voice_too_much_speech" msgid="5746973620134227376">"Памылка, зашмат гаворкі."</string>
+ <string name="voice_audio_error" msgid="5072707727016414454">"Праблема з гукам"</string>
+ <string name="voice_server_error" msgid="7807129913977261644">"Памылка сервера"</string>
+ <string name="voice_speech_timeout" msgid="8461817525075498795">"Не чуваць гаворку"</string>
+ <string name="voice_no_match" msgid="4285117547030179174">"Няма супадзенняў"</string>
+ <string name="voice_not_installed" msgid="5552450909753842415">"Галасавы пошук не ўсталяваны"</string>
+ <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Падказка:"</b>" Правядзіце пальцам праз клавіятуру, каб казаць"</string>
+ <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Падказка:"</b>" У наступны раз паспрабуйце прагаворваць такiя знакі пунктуацыі, як \"кропка\", \"коска\" або \"пытальнік\"."</string>
+ <string name="cancel" msgid="6830980399865683324">"Адмяніць"</string>
+ <string name="ok" msgid="7898366843681727667">"ОК"</string>
+ <string name="voice_input" msgid="3583258583521397548">"Ключ галасавога ўводу"</string>
+ <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"На асн. клавіятуры"</string>
+ <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"На сімв. клавіятуры"</string>
+ <string name="voice_input_modes_off" msgid="3745699748218082014">"Адключана"</string>
+ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Мік. на асн. клав."</string>
+ <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Мік. на сімв. клав."</string>
+ <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Галасавы набор адкл."</string>
+ <string name="selectInputMethod" msgid="315076553378705821">"Выберыце метад уводу"</string>
+ <string name="configure_input_method" msgid="373356270290742459">"Налада метадаў уводу"</string>
+ <string name="language_selection_title" msgid="1651299598555326750">"Мовы ўводу"</string>
+ <string name="select_language" msgid="3693815588777926848">"Мовы ўводу"</string>
+ <string name="hint_add_to_dictionary" msgid="9006292060636342317">"... Дакраніцеся яшчэ раз, каб захаваць"</string>
+ <string name="has_dictionary" msgid="6071847973466625007">"Слоўнік даступны"</string>
+ <string name="prefs_enable_log" msgid="6620424505072963557">"Уключыць зваротную сувязь з карыстальнікамі"</string>
+ <string name="prefs_description_log" msgid="5827825607258246003">"Дапамажыце палепшыць гэты рэдактар ​​метаду ўводу, аўтаматычна адпраўляючы статыстыку выкарыстання і справаздачы аб збоях Google."</string>
+ <string name="keyboard_layout" msgid="8451164783510487501">"Тэма клавіятуры"</string>
+ <string name="subtype_de_qwerty" msgid="3358900499589259491">"Нямецкая QWERTY"</string>
+ <string name="subtype_en_GB" msgid="88170601942311355">"Англійская (ЗК)"</string>
+ <string name="subtype_en_US" msgid="6160452336634534239">"Англійская (ЗША)"</string>
+ <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Рэжым даследвання выкарыстальнасці"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Налады працягласцi вiбрацыi пры нацiску"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Налады гучнасцi пры нацiску"</string>
+</resources>
diff --git a/java/res/values-bg/strings.xml b/java/res/values-bg/strings.xml
index b3f8387de..30fe132d8 100644
--- a/java/res/values-bg/strings.xml
+++ b/java/res/values-bg/strings.xml
@@ -148,5 +148,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"английски (Великобритания)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"английски (САЩ)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Режим за изучаване на използваемостта"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"Настройки за продължителност на вибрирането"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Настройки за продължителност на вибрирането при натискане на клавиш"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Настройки за силата на звука при натискане на клавиш"</string>
</resources>
diff --git a/java/res/values-ca/strings.xml b/java/res/values-ca/strings.xml
index e09b9e3e5..a58d8faa9 100644
--- a/java/res/values-ca/strings.xml
+++ b/java/res/values-ca/strings.xml
@@ -148,5 +148,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"Anglès (Regne Unit)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"Anglès (EUA)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Mode d\'estudi d\'usabilitat"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"Configuració de la durada de les vibracions"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Configuració de la durada de les vibracions per pulsació de tecla"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Configuració del volum de so de pulsació de tecla"</string>
</resources>
diff --git a/java/res/values-cs/strings.xml b/java/res/values-cs/strings.xml
index 85386a29a..d57ccaa28 100644
--- a/java/res/values-cs/strings.xml
+++ b/java/res/values-cs/strings.xml
@@ -148,5 +148,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"angličtina (Spojené království)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"angličtina (USA)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Režim studie použitelnosti"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"Nastavení trvání vibrace"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Nastavení trvání vibrace při stisku klávesy"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Nastavení hlasitosti zvuku při stisknutí klávesy"</string>
</resources>
diff --git a/java/res/values-da/strings.xml b/java/res/values-da/strings.xml
index 1fb4bf312..b91acaa90 100644
--- a/java/res/values-da/strings.xml
+++ b/java/res/values-da/strings.xml
@@ -148,5 +148,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"Engelsk (Storbritannien)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"Engelsk (USA)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Tilstand for brugsstudie"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"Indstillinger for varighed af vibration"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Indstillinger for varighed af vibration ved tastetryk"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Indstillinger for lydstyrke ved tastetryk"</string>
</resources>
diff --git a/java/res/values-de/strings.xml b/java/res/values-de/strings.xml
index 32ef13565..d329f3271 100644
--- a/java/res/values-de/strings.xml
+++ b/java/res/values-de/strings.xml
@@ -148,5 +148,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"Englisch (Großbritannien)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"Englisch (USA)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Modus der Studie zur Benutzerfreundlichkeit"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"Einstellungen für Vibrationsdauer"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Einstellungen für Vibrationsdauer bei Tastendruck"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Einstellungen für Tonlautstärke bei Tastendruck"</string>
</resources>
diff --git a/java/res/values-el/strings.xml b/java/res/values-el/strings.xml
index 298d888fa..6fe191ee7 100644
--- a/java/res/values-el/strings.xml
+++ b/java/res/values-el/strings.xml
@@ -148,5 +148,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"Αγγλικά (Η.Β.)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"Αγγλικά (Η.Π.Α)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Λειτουργία μελέτης χρηστικότητας"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"Ρυθμίσεις διάρκειας δόνησης"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Ρυθμίσεις διάρκειας δόνησης κατά το πάτημα πλήκτρων"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Ρυθμίσεις έντασης ήχου κατά το πάτημα πλήκτρων"</string>
</resources>
diff --git a/java/res/values-en-rGB/strings.xml b/java/res/values-en-rGB/strings.xml
index 5ae9f6d8a..a7d50860c 100644
--- a/java/res/values-en-rGB/strings.xml
+++ b/java/res/values-en-rGB/strings.xml
@@ -148,5 +148,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"English (UK)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"English (US)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Usability study mode"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"Vibration duration settings"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Key-press vibration duration settings"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Key-press sound volume settings"</string>
</resources>
diff --git a/java/res/values-es-rUS/strings.xml b/java/res/values-es-rUS/strings.xml
index 214456e58..95e309ff7 100644
--- a/java/res/values-es-rUS/strings.xml
+++ b/java/res/values-es-rUS/strings.xml
@@ -148,5 +148,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"Inglés (Reino Unido)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"Inglés (EE.UU.)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Modo de estudio de usabilidad"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"Configuración de la duración de vibraciones"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Configuración de la duración de vibraciones al presionar las teclas"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Configuración del volumen de sonio al presionar las teclas"</string>
</resources>
diff --git a/java/res/values-es/strings.xml b/java/res/values-es/strings.xml
index 860bcc44b..814a5f6de 100644
--- a/java/res/values-es/strings.xml
+++ b/java/res/values-es/strings.xml
@@ -52,7 +52,7 @@
<string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Ocultar siempre"</string>
<string name="prefs_settings_key" msgid="4623341240804046498">"Mostrar tecla de ajustes"</string>
<string name="auto_correction" msgid="4979925752001319458">"Autocorrección"</string>
- <string name="auto_correction_summary" msgid="5625751551134658006">"Pulsa la tecla de espacio o punto para corregir errores"</string>
+ <string name="auto_correction_summary" msgid="5625751551134658006">"Pulsar la tecla de espacio o punto para corregir errores"</string>
<string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Desactivada"</string>
<string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"Parcial"</string>
<string name="auto_correction_threshold_mode_aggeressive" msgid="3524029103734923819">"Total"</string>
@@ -148,5 +148,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"inglés (Reino Unido)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"inglés (EE.UU.)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Modo de estudio de usabilidad"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"Ajustes de duración de vibración"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Ajustes de duración de vibración al pulsar tecla"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Ajustes de volumen de sonido al pulsar tecla"</string>
</resources>
diff --git a/java/res/values-et/strings.xml b/java/res/values-et/strings.xml
new file mode 100644
index 000000000..2c69c99d3
--- /dev/null
+++ b/java/res/values-et/strings.xml
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2008, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="english_ime_name" msgid="7252517407088836577">"Androidi klaviatuur"</string>
+ <string name="english_ime_settings" msgid="6661589557206947774">"Androidi klaviatuuriseaded"</string>
+ <string name="english_ime_input_options" msgid="3909945612939668554">"Sisestusvalikud"</string>
+ <string name="spell_checker_service_name" msgid="2003013122022285508">"Androidi parandus"</string>
+ <string name="android_spell_checker_settings" msgid="5822324635435443689">"Õigekirjakontrolli seaded"</string>
+ <string name="use_proximity_option_title" msgid="7469233942295924620">"Kasuta lähedusandmeid"</string>
+ <string name="use_proximity_option_summary" msgid="2857708859847261945">"Kasuta õigekirjakontrollis klaviatuurisarnast lähedusalgoritmi"</string>
+ <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibreeri klahvivajutusel"</string>
+ <string name="sound_on_keypress" msgid="6093592297198243644">"Heli klahvivajutusel"</string>
+ <string name="popup_on_keypress" msgid="123894815723512944">"Klahvivajutusel kuva hüpik"</string>
+ <string name="general_category" msgid="1859088467017573195">"Üldine"</string>
+ <string name="correction_category" msgid="2236750915056607613">"Teksti parandamine"</string>
+ <string name="misc_category" msgid="6894192814868233453">"Muud valikud"</string>
+ <string name="advanced_settings" msgid="362895144495591463">"Täpsemad seaded"</string>
+ <string name="advanced_settings_summary" msgid="5193513161106637254">"Valikud ekspertkasutajatele"</string>
+ <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Hüpiku loobumisviivitus"</string>
+ <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Viivituseta"</string>
+ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Vaikeseade"</string>
+ <string name="use_contacts_dict" msgid="4435317977804180815">"Soovita kontaktkirjeid"</string>
+ <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Kasuta soovitusteks ja parandusteks nimesid kontaktiloendist"</string>
+ <string name="enable_span_insert" msgid="7204653105667167620">"Uute paranduste lubamine"</string>
+ <string name="enable_span_insert_summary" msgid="2947317657871394467">"Soovituste seadmine uute paranduste jaoks"</string>
+ <string name="auto_cap" msgid="1719746674854628252">"Automaatne suurtähtede kasutamine"</string>
+ <string name="configure_dictionaries_title" msgid="4238652338556902049">"Pistiksõnaraamatud"</string>
+ <string name="main_dictionary" msgid="4798763781818361168">"Peamine sõnaraamat"</string>
+ <string name="prefs_show_suggestions" msgid="8026799663445531637">"Kuva parandussoovitusi"</string>
+ <string name="prefs_show_suggestions_summary" msgid="1583132279498502825">"Kuva sisestamise ajal sõnasoovitusi"</string>
+ <string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Kuva alati"</string>
+ <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3551821800439659812">"Kuva portreerežiimis"</string>
+ <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Peida alati"</string>
+ <string name="prefs_settings_key" msgid="4623341240804046498">"Kuva seadete võti"</string>
+ <string name="auto_correction" msgid="4979925752001319458">"Automaatparandus"</string>
+ <string name="auto_correction_summary" msgid="5625751551134658006">"Tühik ja kirjavahemärgid parand. autom. kirjavigadega sõnad"</string>
+ <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Väljas"</string>
+ <string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"Mõõdukas"</string>
+ <string name="auto_correction_threshold_mode_aggeressive" msgid="3524029103734923819">"Agressiivne"</string>
+ <string name="auto_correction_threshold_mode_very_aggeressive" msgid="3386782235540547678">"Väga agressiivne"</string>
+ <string name="bigram_suggestion" msgid="2636414079905220518">"Bigrammi soovitused"</string>
+ <string name="bigram_suggestion_summary" msgid="4383845146070101531">"Kasutage eelmist sõna soovituse parandamiseks"</string>
+ <string name="bigram_prediction" msgid="8914273444762259739">"Bigrammi ennustus"</string>
+ <string name="bigram_prediction_summary" msgid="1747261921174300098">"Kasuta ennustuseks ka eelmist sõna"</string>
+ <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : salvestatud"</string>
+ <string name="label_go_key" msgid="1635148082137219148">"Mine"</string>
+ <string name="label_next_key" msgid="362972844525672568">"Edasi"</string>
+ <string name="label_done_key" msgid="2441578748772529288">"Valmis"</string>
+ <string name="label_send_key" msgid="2815056534433717444">"Saada"</string>
+ <string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string>
+ <string name="label_to_symbol_key" msgid="8516904117128967293">"?123"</string>
+ <string name="label_to_symbol_with_microphone_key" msgid="9035925553010061906">"123"</string>
+ <string name="label_pause_key" msgid="181098308428035340">"Peata"</string>
+ <string name="label_wait_key" msgid="6402152600878093134">"Oota"</string>
+ <string name="spoken_use_headphones" msgid="896961781287283493">"Ühendage peakomplekt, et kuulata paroole."</string>
+ <string name="spoken_current_text_is" msgid="2485723011272583845">"Praegune tekst on %s"</string>
+ <string name="spoken_no_text_entered" msgid="7479685225597344496">"Teksti ei ole sisestatud"</string>
+ <string name="spoken_description_unknown" msgid="3197434010402179157">"Klahvi kood: %d"</string>
+ <string name="spoken_description_shift" msgid="244197883292549308">"Tõstuklahv"</string>
+ <string name="spoken_description_shift_shifted" msgid="954941524766465022">"Tõstuklahv on lubatud"</string>
+ <string name="spoken_description_caps_lock" msgid="5660626444912131764">"Suurtähelukk on lubatud"</string>
+ <string name="spoken_description_delete" msgid="8740376944276199801">"Kustuta"</string>
+ <string name="spoken_description_to_symbol" msgid="5486340107500448969">"Sümbolid"</string>
+ <string name="spoken_description_to_alpha" msgid="23129338819771807">"Tähed"</string>
+ <string name="spoken_description_to_numeric" msgid="591752092685161732">"Numbrid"</string>
+ <string name="spoken_description_settings" msgid="4627462689603838099">"Seaded"</string>
+ <string name="spoken_description_tab" msgid="2667716002663482248">"Tabulaator"</string>
+ <string name="spoken_description_space" msgid="2582521050049860859">"Tühik"</string>
+ <string name="spoken_description_mic" msgid="615536748882611950">"Kõnesisend"</string>
+ <string name="spoken_description_smiley" msgid="2256309826200113918">"Naerunägu"</string>
+ <string name="spoken_description_return" msgid="8178083177238315647">"Tagasi"</string>
+ <string name="spoken_description_comma" msgid="4970844442999724586">"Koma"</string>
+ <string name="spoken_description_period" msgid="5286614628077903945">"Punkt"</string>
+ <string name="spoken_description_left_parenthesis" msgid="8524822120595052415">"Vasaksulg"</string>
+ <string name="spoken_description_right_parenthesis" msgid="1085757995851933164">"Paremsulg"</string>
+ <string name="spoken_description_colon" msgid="4312420908484277077">"Koolon"</string>
+ <string name="spoken_description_semicolon" msgid="37737920987155179">"Semikoolon"</string>
+ <string name="spoken_description_exclamation_mark" msgid="2625684427460737157">"Hüüumärk"</string>
+ <string name="spoken_description_question_mark" msgid="7074097784255379666">"Küsimärk"</string>
+ <string name="spoken_description_double_quote" msgid="5485320575389905967">"Jutumärgid"</string>
+ <string name="spoken_description_single_quote" msgid="4451320362665463938">"Üksikjutumärgid"</string>
+ <string name="spoken_description_dot" msgid="40711082435231673">"Punkt"</string>
+ <string name="spoken_description_square_root" msgid="190595160284757811">"Ruutjuur"</string>
+ <string name="spoken_description_pi" msgid="4554418247799952239">"Pii"</string>
+ <string name="spoken_description_delta" msgid="3607948313655721579">"Delta"</string>
+ <string name="spoken_description_trademark" msgid="475877774077871369">"Kaubamärk"</string>
+ <string name="spoken_description_care_of" msgid="7492800237237796530">"Vahendaja"</string>
+ <string name="spoken_description_star" msgid="1009742725387231977">"Tärn"</string>
+ <string name="spoken_description_pound" msgid="5530577649206922631">"Nael"</string>
+ <string name="spoken_description_ellipsis" msgid="1687670869947652062">"Kolmikpunkt"</string>
+ <string name="spoken_description_low_double_quote" msgid="3551394572784840975">"Alumised jutumärgid"</string>
+ <string name="voice_warning_title" msgid="4419354150908395008">"Kõnesisend"</string>
+ <string name="voice_warning_locale_not_supported" msgid="637923019716442333">"Kõnesisendit ei toetata praegu teie keeles, kuid see töötab inglise keeles."</string>
+ <string name="voice_warning_may_not_understand" msgid="5596289095878251072">"Kõnesisend kasutab Google\'i kõnetuvastust. Kehtivad "<a href="http://m.google.com/privacy">"Mobile\'i privaatsuseeskirjad"</a>"."</string>
+ <string name="voice_warning_how_to_turn_off" msgid="3190378129944934856">"Kõnesisendi väljalülitamiseks minge sisestusmeetodi seadete juurde."</string>
+ <string name="voice_hint_dialog_message" msgid="1420686286820661548">"Kõnesisendi kasutamiseks vajutage mikrofoni nuppu."</string>
+ <string name="voice_listening" msgid="467518160751321844">"Alustage rääkimist"</string>
+ <string name="voice_working" msgid="6666937792815731889">"Töötab"</string>
+ <string name="voice_initializing" msgid="661962047129906646"></string>
+ <string name="voice_error" msgid="5140896300312186162">"Viga. Proovige uuesti."</string>
+ <string name="voice_network_error" msgid="6649556447401862563">"Ühendamine nurjus."</string>
+ <string name="voice_too_much_speech" msgid="5746973620134227376">"Viga. Liiga palju kõnet."</string>
+ <string name="voice_audio_error" msgid="5072707727016414454">"Heli probleem"</string>
+ <string name="voice_server_error" msgid="7807129913977261644">"Serveri viga"</string>
+ <string name="voice_speech_timeout" msgid="8461817525075498795">"Kõne pole kuuldav"</string>
+ <string name="voice_no_match" msgid="4285117547030179174">"Ühtki vastet ei leitud"</string>
+ <string name="voice_not_installed" msgid="5552450909753842415">"Hääleotsing pole installitud"</string>
+ <string name="voice_swipe_hint" msgid="6943546180310682021"><b>"Vihje:"</b>" rääkimiseks libistage sõrme üle ekraani"</string>
+ <string name="voice_punctuation_hint" msgid="1611389463237317754"><b>"Vihje:"</b>" proovige järgmine kord kirjavahemärkide ütlemist, nt „punkt”, „koma” või „küsimärk”."</string>
+ <string name="cancel" msgid="6830980399865683324">"Tühista"</string>
+ <string name="ok" msgid="7898366843681727667">"OK"</string>
+ <string name="voice_input" msgid="3583258583521397548">"Häälesisendi klahv"</string>
+ <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Peamisel klaviatuuril"</string>
+ <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Sümbol. klaviatuuril"</string>
+ <string name="voice_input_modes_off" msgid="3745699748218082014">"Väljas"</string>
+ <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mikr. peam. klaviat."</string>
+ <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mikr. sümb. klaviat."</string>
+ <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Kõnesisend on keelatud"</string>
+ <string name="selectInputMethod" msgid="315076553378705821">"Sisestusmeet. valim."</string>
+ <string name="configure_input_method" msgid="373356270290742459">"Sisestusmeetodite seadistamine"</string>
+ <string name="language_selection_title" msgid="1651299598555326750">"Sisestuskeeled"</string>
+ <string name="select_language" msgid="3693815588777926848">"Sisestuskeeled"</string>
+ <string name="hint_add_to_dictionary" msgid="9006292060636342317">"←Salvestamiseks puudutage uuesti"</string>
+ <string name="has_dictionary" msgid="6071847973466625007">"Sõnastik saadaval"</string>
+ <string name="prefs_enable_log" msgid="6620424505072963557">"Luba kasutaja tagasiside"</string>
+ <string name="prefs_description_log" msgid="5827825607258246003">"Saatke Google\'ile automaatselt kasutusstatistikat ja krahhiaruandeid ning aidake seda sisestusmeetodi redigeerijat parandada."</string>
+ <string name="keyboard_layout" msgid="8451164783510487501">"Klaviatuuri teema"</string>
+ <string name="subtype_de_qwerty" msgid="3358900499589259491">"Saksa QWERTY"</string>
+ <string name="subtype_en_GB" msgid="88170601942311355">"Inglise (UK)"</string>
+ <string name="subtype_en_US" msgid="6160452336634534239">"Inglise (USA)"</string>
+ <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Kasutatavuse uurimisrežiim"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Klahvivajutuse vibratsiooni kestuse seaded"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Klahvivajutuse helitugevuse seaded"</string>
+</resources>
diff --git a/java/res/values-fa/strings.xml b/java/res/values-fa/strings.xml
index b6ace8a7b..7d8c1e941 100644
--- a/java/res/values-fa/strings.xml
+++ b/java/res/values-fa/strings.xml
@@ -152,5 +152,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"انگیسی (UK)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"انگیسی (US)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"حالت بررسی قابلیت استفاده"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"تنظیمات مدت لرزش"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"تنظیمات مدت زمان لرزش فشار کلید"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"تنظیمات میزان صدای فشار کلید"</string>
</resources>
diff --git a/java/res/values-fi/strings.xml b/java/res/values-fi/strings.xml
index addeec76e..c77cd8107 100644
--- a/java/res/values-fi/strings.xml
+++ b/java/res/values-fi/strings.xml
@@ -148,5 +148,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"englanti (Iso-Britannia)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"englanti (Yhdysvallat)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Käytettävyystutkimustila"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"Tärinän kestoasetukset"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Näppäimenpainalluksen värinän kestoasetukset"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Näppäimenpainalluksen äänenvoimakkuusasetukset"</string>
</resources>
diff --git a/java/res/values-fr/strings.xml b/java/res/values-fr/strings.xml
index 5cdead9ce..ef9303e88 100644
--- a/java/res/values-fr/strings.xml
+++ b/java/res/values-fr/strings.xml
@@ -148,5 +148,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"Anglais (Royaume-Uni)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"Anglais (États-Unis)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Mode d\'étude de l\'utilisabilité"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"Paramètres de durée du vibreur"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Paramètres de durée du vibreur à chaque pression de touche"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Paramètres de volume sonore à chaque pression de touche"</string>
</resources>
diff --git a/java/res/values-hi/strings.xml b/java/res/values-hi/strings.xml
index a920b421e..58d515d9d 100644
--- a/java/res/values-hi/strings.xml
+++ b/java/res/values-hi/strings.xml
@@ -148,5 +148,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"अंग्रेज़ी (यूके)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"अंग्रेज़ी (यूएस)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"उपयोगिता अध्ययन मोड"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"कंपन अवधि सेटिंग"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"कुंजी-स्‍पर्श कंपन अवधि सेटिंग"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"कुंजी-स्‍पर्श ध्‍वनि वॉल्‍यूम सेटिंग"</string>
</resources>
diff --git a/java/res/values-hr/strings.xml b/java/res/values-hr/strings.xml
index 0f2d8e958..30c20b3cc 100644
--- a/java/res/values-hr/strings.xml
+++ b/java/res/values-hr/strings.xml
@@ -148,5 +148,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"Engleski (UK)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"Engleski (SAD)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Način studije upotrebljivosti"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"Postavke trajanja vibracije"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Postavke trajanja vibracije kod pritiska tipke"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Postavke glasnoće zvuka kod pritiska tipke"</string>
</resources>
diff --git a/java/res/values-hu/strings.xml b/java/res/values-hu/strings.xml
index 816325544..180b6fcf9 100644
--- a/java/res/values-hu/strings.xml
+++ b/java/res/values-hu/strings.xml
@@ -148,5 +148,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"angol (brit)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"angol (amerikai)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Használhatósági teszt"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"Rezgés időtartamának beállítása"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Gombnyomás rezgési időtartamának beállításai"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Gombnyomás hangerejének beállításai"</string>
</resources>
diff --git a/java/res/values-in/strings.xml b/java/res/values-in/strings.xml
index 2e3b5ff26..a023b6477 100644
--- a/java/res/values-in/strings.xml
+++ b/java/res/values-in/strings.xml
@@ -148,5 +148,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"Inggris (Inggris)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"Inggris (AS)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Modus studi daya guna"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"Setelan durasi getaran"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Setelan durasi getaran saat tombol ditekan"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Setelan volume suara saat tombol ditekan"</string>
</resources>
diff --git a/java/res/values-it/strings.xml b/java/res/values-it/strings.xml
index 54792ec4c..58c0e2c3b 100644
--- a/java/res/values-it/strings.xml
+++ b/java/res/values-it/strings.xml
@@ -148,5 +148,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"Inglese (UK)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"Inglese (USA)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Modalità Studio sull\'usabilità"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"Impostazioni durata vibrazione"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Impostazioni durata vibrazione alla pressione di un tasto"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Impostazioni volume audio alla pressione di un tasto"</string>
</resources>
diff --git a/java/res/values-iw/strings.xml b/java/res/values-iw/strings.xml
index 5fef6202f..1ea5a6930 100644
--- a/java/res/values-iw/strings.xml
+++ b/java/res/values-iw/strings.xml
@@ -148,5 +148,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"אנגלית (בריטניה)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"אנגלית (ארה\"ב)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"מצב מחקר שימושיות"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"הגדרות משך רטט"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"הגדרות משך רטט בלחיצה על מקש"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"הגדרות עוצמת קול בלחיצה על מקש"</string>
</resources>
diff --git a/java/res/values-ja/strings.xml b/java/res/values-ja/strings.xml
index 19606096b..540bb4688 100644
--- a/java/res/values-ja/strings.xml
+++ b/java/res/values-ja/strings.xml
@@ -148,5 +148,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"英語(英国)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"英語(米国)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"使いやすさの研究モード"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"バイブレーションの長さの設定"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"キー操作バイブの振動時間の設定"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"キー操作音の音量設定"</string>
</resources>
diff --git a/java/res/values-ko/strings.xml b/java/res/values-ko/strings.xml
index a8c157f03..bc2b6289c 100644
--- a/java/res/values-ko/strings.xml
+++ b/java/res/values-ko/strings.xml
@@ -148,5 +148,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"영어(영국)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"영어(미국)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"가용성 연구 모드"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"진동 시간 설정"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"키를 누를 때 진동 시간 설정"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"키를 누를 때 효과음 설정"</string>
</resources>
diff --git a/java/res/values-lt/strings.xml b/java/res/values-lt/strings.xml
index 7a95156cd..6263f6706 100644
--- a/java/res/values-lt/strings.xml
+++ b/java/res/values-lt/strings.xml
@@ -148,5 +148,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"Anglų k. (JK)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"Anglų k. (JAV)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Tinkamumo tyrimo režimas"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"Vibracijos trukmės nustatymai"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Vibracijos paspaudus mygtuką trukmės nustatymai"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Garso paspaudus mygtuką garsumo nustatymai"</string>
</resources>
diff --git a/java/res/values-lv/strings.xml b/java/res/values-lv/strings.xml
index 40f40bfb6..af01d92f6 100644
--- a/java/res/values-lv/strings.xml
+++ b/java/res/values-lv/strings.xml
@@ -148,5 +148,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"Angļu valoda (Lielbritānija)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"Angļu valoda (ASV)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Lietojamības izpētes režīms"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"Vibrēšanas ilguma iestatījumi"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Taustiņu nospiešanas vibrācijas ilguma iestatījumi"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Taustiņu nospiešanas skaņas skaļuma iestatījumi"</string>
</resources>
diff --git a/java/res/values-ms/strings.xml b/java/res/values-ms/strings.xml
index d109eb227..8a9954175 100644
--- a/java/res/values-ms/strings.xml
+++ b/java/res/values-ms/strings.xml
@@ -148,5 +148,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"Bahasa Inggeris (UK)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"Bahasa Inggeris (AS)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Mod kajian kebolehgunaan"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"Tetapan tempoh getaran"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Tetapan tempoh getaran tekanan kekunci"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Tetapan kelantangan bunyi tekanan kekunci"</string>
</resources>
diff --git a/java/res/values-nb/strings.xml b/java/res/values-nb/strings.xml
index 5cb4d583b..acd636bdd 100644
--- a/java/res/values-nb/strings.xml
+++ b/java/res/values-nb/strings.xml
@@ -148,5 +148,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"Engelsk (Storbritannia)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"Engelsk (USA)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Nyttighetsmodus"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"Innstillinger for vibrasjonsvarighet"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Innstillinger for vibrasjonsvarighet ved tastetrykk"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Innstillinger for lydstyrke ved tastetrykk"</string>
</resources>
diff --git a/java/res/values-nl/strings.xml b/java/res/values-nl/strings.xml
index f9c69f5aa..7f0ff7eaf 100644
--- a/java/res/values-nl/strings.xml
+++ b/java/res/values-nl/strings.xml
@@ -148,5 +148,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"Engels (GB)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"Engels (VS)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Modus voor gebruiksvriendelijkheidsonderzoek"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"Instellingen voor trillingsduur"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Instellingen voor trillingsduur bij druk op een toets"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Instellingen voor geluidsvolume bij druk op een toets"</string>
</resources>
diff --git a/java/res/values-pl/strings.xml b/java/res/values-pl/strings.xml
index 623eacebe..a9a6a76b6 100644
--- a/java/res/values-pl/strings.xml
+++ b/java/res/values-pl/strings.xml
@@ -148,5 +148,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"Angielska (Wielka Brytania)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"Angielska (Stany Zjednoczone)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Tryb badania przydatności"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"Ustawienia trwania wibracji"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Czas trwania wibracji przy naciśnięciu"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Głośność dźwięku przy naciśnięciu"</string>
</resources>
diff --git a/java/res/values-pt-rPT/strings.xml b/java/res/values-pt-rPT/strings.xml
index 25ff74a29..0a30235f4 100644
--- a/java/res/values-pt-rPT/strings.xml
+++ b/java/res/values-pt-rPT/strings.xml
@@ -135,7 +135,7 @@
<string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mic. tecl. principal"</string>
<string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mic. tecl. símbolos"</string>
<string name="voice_input_modes_summary_off" msgid="63875609591897607">"Entr. voz desact."</string>
- <string name="selectInputMethod" msgid="315076553378705821">"Seleccionar método de entrada"</string>
+ <string name="selectInputMethod" msgid="315076553378705821">"Selecionar método de entrada"</string>
<string name="configure_input_method" msgid="373356270290742459">"Configurar métodos de introdução"</string>
<string name="language_selection_title" msgid="1651299598555326750">"Idiomas de entrada"</string>
<string name="select_language" msgid="3693815588777926848">"Idiomas de introdução"</string>
@@ -148,5 +148,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"Inglês (RU)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"Inglês (EUA)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Modo de estudo da capacidade de utilização"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"Definições de duração da vibração"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Definições de duração da vibração ao premir as teclas"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Definições de volume de som ao premir as teclas"</string>
</resources>
diff --git a/java/res/values-pt/strings.xml b/java/res/values-pt/strings.xml
index b6b98574a..36a70daa6 100644
--- a/java/res/values-pt/strings.xml
+++ b/java/res/values-pt/strings.xml
@@ -148,5 +148,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"Inglês (Reino Unido)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"Inglês (EUA)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Modo de estudo de utilização"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"Configurações de duração da vibração"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Configurações de duração da vibração ao tocar a tecla"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Configurações do volume ao tocar a tecla"</string>
</resources>
diff --git a/java/res/values-rm/strings.xml b/java/res/values-rm/strings.xml
index ce1190e95..090f3fc47 100644
--- a/java/res/values-rm/strings.xml
+++ b/java/res/values-rm/strings.xml
@@ -234,6 +234,8 @@
<skip />
<!-- no translation found for prefs_usability_study_mode (1261130555134595254) -->
<skip />
- <!-- no translation found for prefs_vibration_duration_settings (3194657361314787870) -->
+ <!-- no translation found for prefs_keypress_vibration_duration_settings (1829950405285211668) -->
+ <skip />
+ <!-- no translation found for prefs_keypress_sound_volume_settings (5875933757082305040) -->
<skip />
</resources>
diff --git a/java/res/values-ro/strings.xml b/java/res/values-ro/strings.xml
index 6a40b557f..c1dea5431 100644
--- a/java/res/values-ro/strings.xml
+++ b/java/res/values-ro/strings.xml
@@ -148,5 +148,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"Engleză (Marea Britanie)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"Engleză (S.U.A.)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Modul Studiu privind utilizarea"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"Setări pentru durata vibrării"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Setări pentru durata vibrării la apăsarea tastei"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Setări pentru volumul sunetului la apăsarea tastei"</string>
</resources>
diff --git a/java/res/values-ru/strings.xml b/java/res/values-ru/strings.xml
index 589739402..863c8a28c 100644
--- a/java/res/values-ru/strings.xml
+++ b/java/res/values-ru/strings.xml
@@ -148,5 +148,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"Английский (Великобритания)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"Английский (США)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Режим проверки удобства использования"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"Продолжительность вибросигнала"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Настройки вибросигнала при нажатии клавиш"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Настройки громкости звука при нажатии клавиш"</string>
</resources>
diff --git a/java/res/values-sk/strings.xml b/java/res/values-sk/strings.xml
index 22b61005f..b7ab8f204 100644
--- a/java/res/values-sk/strings.xml
+++ b/java/res/values-sk/strings.xml
@@ -148,5 +148,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"Anglická klávesnica (UK)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"Anglická klávesnica (US)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Režim štúdie použiteľnosti"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"Nastavenia dĺžky vibrovania"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Nastavenia trvania vibrovania pri stlačení klávesu"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Nastavenia hlasitosti zvuku pri stlačení klávesu"</string>
</resources>
diff --git a/java/res/values-sl/strings.xml b/java/res/values-sl/strings.xml
index 2bf7d1908..d7f357aa0 100644
--- a/java/res/values-sl/strings.xml
+++ b/java/res/values-sl/strings.xml
@@ -148,5 +148,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"angleščina (Združeno kraljestvo)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"angleščina (ZDA)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Način za preučevanje uporabnosti"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"Nastavitve trajanja vibriranja"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Nastavitve za trajanje vibriranja ob pritisku tipke"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Nastavitve za glasnost zvoka ob pritisku tipke"</string>
</resources>
diff --git a/java/res/values-sr/strings.xml b/java/res/values-sr/strings.xml
index 82eca94eb..0906fce6e 100644
--- a/java/res/values-sr/strings.xml
+++ b/java/res/values-sr/strings.xml
@@ -148,5 +148,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"енглески (УК)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"енглески (САД)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Режим за студију могућности коришћења"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"Подешавања трајања вибрације"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Подешавања трајања вибрације при притиску на тастере"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Подешавања јачине звука при притиску на тастере"</string>
</resources>
diff --git a/java/res/values-sv/strings.xml b/java/res/values-sv/strings.xml
index e63b7bd21..46760bbe2 100644
--- a/java/res/values-sv/strings.xml
+++ b/java/res/values-sv/strings.xml
@@ -148,5 +148,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"Engelskt (brittiskt)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"Engelskt (amerikanskt)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Läge för studie av användbarhet"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"Inställningar för vibrationens varaktighet"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Inställningar för vibrationslängd vid knapptryck"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Volyminställningar för knappljud"</string>
</resources>
diff --git a/java/res/values-sw/strings.xml b/java/res/values-sw/strings.xml
index 37b96ade1..822907b05 100644
--- a/java/res/values-sw/strings.xml
+++ b/java/res/values-sw/strings.xml
@@ -148,5 +148,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"Kiingereza cha (Uingereza)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"Kiingereza cha (Marekani)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Modi ya uchunguzi wa utumizi"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"Mipangilio ya muda wa kutetema"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Bonyeza mipangilio ya kipindi cha mtetemo"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Bonyeza mipangilio ya nguvu za sauti"</string>
</resources>
diff --git a/java/res/values-th/strings.xml b/java/res/values-th/strings.xml
index 0f17c0521..53f56606c 100644
--- a/java/res/values-th/strings.xml
+++ b/java/res/values-th/strings.xml
@@ -148,5 +148,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"อังกฤษ (สหราชอาณาจักร)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"อังกฤษ (อเมริกัน)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"โหมดศึกษาประโยชน์ในการใช้งาน"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"การตั้งค่าระยะเวลาการสั่น"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"การตั้งค่าระยะเวลาการสั่นเมื่อกดแป้นพิมพ์"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"การตั้งค่าระดับเสียงเมื่อกดแป้นพิมพ์"</string>
</resources>
diff --git a/java/res/values-tl/strings.xml b/java/res/values-tl/strings.xml
index 0f03c245d..701963f2a 100644
--- a/java/res/values-tl/strings.xml
+++ b/java/res/values-tl/strings.xml
@@ -148,5 +148,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"Ingles (UK)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"Ingles (Estados Unidos)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Study mode ng pagiging kapaki-pakinabang"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"Mga setting ng tagal ng vibration"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Mga setting ng tagal ng vibration ng keypress"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Mga setting ng volume ng tunog ng keypress"</string>
</resources>
diff --git a/java/res/values-tr/strings.xml b/java/res/values-tr/strings.xml
index 1655e1cd6..4ae7d78c9 100644
--- a/java/res/values-tr/strings.xml
+++ b/java/res/values-tr/strings.xml
@@ -148,5 +148,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"İngilizce (BK)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"İngilizce (ABD)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Kullanılabilirlik çalışması modu"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"Titreşim süresi ayarları"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Tuşa basma titreşim süresi ayarları"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Tuşa basma ses düzeyi ayarları"</string>
</resources>
diff --git a/java/res/values-uk/strings.xml b/java/res/values-uk/strings.xml
index 3b2641933..234a9c56a 100644
--- a/java/res/values-uk/strings.xml
+++ b/java/res/values-uk/strings.xml
@@ -148,5 +148,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"Англійська (Великобританія)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"Англійська (США)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Режим вивчення зручності у використанні"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"Налаштування тривалості вібрації"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Налаштування тривалості вібрації під час натискання клавіші"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Налаштування гучності звуку під час натискання клавіші"</string>
</resources>
diff --git a/java/res/values-vi/strings.xml b/java/res/values-vi/strings.xml
index b4cbc3732..fbfe93a76 100644
--- a/java/res/values-vi/strings.xml
+++ b/java/res/values-vi/strings.xml
@@ -148,5 +148,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"Tiếng Anh (Anh)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"Tiếng Anh (Mỹ)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Chế độ nghiên cứu tính khả dụng"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"Cài đặt thời lượng rung"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Cài đặt thời gian rung khi nhấn phím"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Cài đặt âm lượng khi nhấn phím"</string>
</resources>
diff --git a/java/res/values-zh-rCN/strings.xml b/java/res/values-zh-rCN/strings.xml
index b7a8e7af9..c3adf23c0 100644
--- a/java/res/values-zh-rCN/strings.xml
+++ b/java/res/values-zh-rCN/strings.xml
@@ -148,5 +148,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"英语(英国)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"英语(美国)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"可用性研究模式"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"振动持续时间设置"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"按键振动持续时间设置"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"按键音量设置"</string>
</resources>
diff --git a/java/res/values-zh-rTW/strings.xml b/java/res/values-zh-rTW/strings.xml
index 4c13991bd..8d60fb7cd 100644
--- a/java/res/values-zh-rTW/strings.xml
+++ b/java/res/values-zh-rTW/strings.xml
@@ -148,5 +148,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"英文 (英式)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"英文 (美式)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"使用性研究模式"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"震動持續時間設定"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"按鍵震動持續時間設定"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"按鍵音量設定"</string>
</resources>
diff --git a/java/res/values-zu/strings.xml b/java/res/values-zu/strings.xml
index 902968100..072d17cba 100644
--- a/java/res/values-zu/strings.xml
+++ b/java/res/values-zu/strings.xml
@@ -148,5 +148,6 @@
<string name="subtype_en_GB" msgid="88170601942311355">"i-English(UK)"</string>
<string name="subtype_en_US" msgid="6160452336634534239">"i-English (US)"</string>
<string name="prefs_usability_study_mode" msgid="1261130555134595254">"Imodi yesitadi yokusebenziseka"</string>
- <string name="prefs_vibration_duration_settings" msgid="3194657361314787870">"Izisetho zobude kokudlidliza"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Izilungiselelo ze-keypress vibration duraton"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Izilungiselelo zevolumu yomsindo wekeypress"</string>
</resources>
diff --git a/java/res/values/dimens.xml b/java/res/values/dimens.xml
index 8b4cd6d1b..352141ca6 100644
--- a/java/res/values/dimens.xml
+++ b/java/res/values/dimens.xml
@@ -81,7 +81,7 @@
<dimen name="more_suggestions_key_horizontal_padding">12dip</dimen>
<dimen name="more_suggestions_row_height">40dip</dimen>
<dimen name="more_suggestions_bottom_gap">6dip</dimen>
- <dimen name="more_suggestions_modal_tolerance">0.05in</dimen>
+ <dimen name="more_suggestions_modal_tolerance">0.2in</dimen>
<dimen name="more_suggestions_slide_allowance">0.1in</dimen>
<integer name="max_more_suggestions_row">6</integer>
<fraction name="min_more_suggestions_width">90%</fraction>
diff --git a/java/res/values/donottranslate-more-keys.xml b/java/res/values/donottranslate-more-keys.xml
index 6322adc49..6c7753999 100644
--- a/java/res/values/donottranslate-more-keys.xml
+++ b/java/res/values/donottranslate-more-keys.xml
@@ -99,4 +99,6 @@
<string name="more_keys_for_bullet">♪,♥,♠,♦,♣</string>
<string name="more_keys_for_star">†,‡,★</string>
<string name="more_keys_for_plus">±</string>
+ <string name="more_keys_for_left_parenthesis">[,{,&lt;</string>
+ <string name="more_keys_for_right_parenthesis">],},&gt;</string>
</resources>
diff --git a/java/res/values/strings.xml b/java/res/values/strings.xml
index 8bc97f66e..e00547a62 100644
--- a/java/res/values/strings.xml
+++ b/java/res/values/strings.xml
@@ -342,6 +342,8 @@
<!-- Title of an option for usability study mode -->
<string name="prefs_usability_study_mode">Usability study mode</string>
- <!-- Title of the settings for vibration duration -->
- <string name="prefs_vibration_duration_settings">Vibration duration settings</string>
+ <!-- Title of the settings for keypress vibration duration -->
+ <string name="prefs_keypress_vibration_duration_settings">Keypress vibration duration settings</string>
+ <!-- Title of the settings for keypress sound volume -->
+ <string name="prefs_keypress_sound_volume_settings">Keypress sound volume settings</string>
</resources>
diff --git a/java/res/xml/kbd_rows_symbols.xml b/java/res/xml/kbd_rows_symbols.xml
index 074db5023..c5bcb14c3 100644
--- a/java/res/xml/kbd_rows_symbols.xml
+++ b/java/res/xml/kbd_rows_symbols.xml
@@ -85,10 +85,10 @@
latin:moreKeys="@string/more_keys_for_plus" />
<Key
latin:keyLabel="("
- latin:moreKeys="[,{,&lt;" />
+ latin:moreKeys="@string/more_keys_for_left_parenthesis" />
<Key
latin:keyLabel=")"
- latin:moreKeys="],},&gt;"
+ latin:moreKeys="@string/more_keys_for_right_parenthesis"
latin:keyWidth="fillRight" />
</Row>
<Row
diff --git a/java/res/xml/prefs.xml b/java/res/xml/prefs.xml
index b54df2686..dcaa2029c 100644
--- a/java/res/xml/prefs.xml
+++ b/java/res/xml/prefs.xml
@@ -121,7 +121,10 @@
android:defaultValue="true" />
<PreferenceScreen
android:key="pref_vibration_duration_settings"
- android:title="@string/prefs_vibration_duration_settings"/>
+ android:title="@string/prefs_keypress_vibration_duration_settings"/>
+ <PreferenceScreen
+ android:key="pref_keypress_sound_volume"
+ android:title="@string/prefs_keypress_sound_volume_settings" />
<!-- TODO: evaluate results and revive this option. The code
already supports it. -->
<!-- <CheckBoxPreference -->
diff --git a/java/src/com/android/inputmethod/accessibility/AccessibleKeyboardViewProxy.java b/java/src/com/android/inputmethod/accessibility/AccessibleKeyboardViewProxy.java
index 4c109c708..cef82267f 100644
--- a/java/src/com/android/inputmethod/accessibility/AccessibleKeyboardViewProxy.java
+++ b/java/src/com/android/inputmethod/accessibility/AccessibleKeyboardViewProxy.java
@@ -23,7 +23,6 @@ import android.graphics.Paint;
import android.inputmethodservice.InputMethodService;
import android.util.Log;
import android.view.MotionEvent;
-import android.view.ViewConfiguration;
import android.view.accessibility.AccessibilityEvent;
import android.view.inputmethod.EditorInfo;
@@ -38,18 +37,12 @@ public class AccessibleKeyboardViewProxy {
private static final String TAG = AccessibleKeyboardViewProxy.class.getSimpleName();
private static final AccessibleKeyboardViewProxy sInstance = new AccessibleKeyboardViewProxy();
- // Delay in milliseconds between key press DOWN and UP events
- private static final long DELAY_KEY_PRESS = 10;
-
private InputMethodService mInputMethod;
private FlickGestureDetector mGestureDetector;
private LatinKeyboardView mView;
private AccessibleKeyboardActionListener mListener;
- private int mScaledEdgeSlop;
private int mLastHoverKeyIndex = KeyDetector.NOT_A_KEY;
- private int mLastX = -1;
- private int mLastY = -1;
public static void init(InputMethodService inputMethod, SharedPreferences prefs) {
sInstance.initInternal(inputMethod, prefs);
@@ -77,7 +70,6 @@ public class AccessibleKeyboardViewProxy {
mInputMethod = inputMethod;
mGestureDetector = new KeyboardFlickGestureDetector(inputMethod);
- mScaledEdgeSlop = ViewConfiguration.get(inputMethod).getScaledEdgeSlop();
}
public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event,
@@ -143,27 +135,10 @@ public class AccessibleKeyboardViewProxy {
if (keyIndex != mLastHoverKeyIndex) {
fireKeyHoverEvent(tracker, mLastHoverKeyIndex, false);
mLastHoverKeyIndex = keyIndex;
- mLastX = x;
- mLastY = y;
fireKeyHoverEvent(tracker, mLastHoverKeyIndex, true);
}
return true;
- case MotionEventCompatUtils.ACTION_HOVER_EXIT:
- final int width = mView.getWidth();
- final int height = mView.getHeight();
-
- if (x < mScaledEdgeSlop || y < mScaledEdgeSlop || x >= (width - mScaledEdgeSlop)
- || y >= (height - mScaledEdgeSlop)) {
- fireKeyHoverEvent(tracker, mLastHoverKeyIndex, false);
- mLastHoverKeyIndex = KeyDetector.NOT_A_KEY;
- mLastX = -1;
- mLastY = -1;
- } else if (mLastHoverKeyIndex != KeyDetector.NOT_A_KEY) {
- fireKeyPressEvent(tracker, mLastX, mLastY, event.getEventTime());
- }
-
- return true;
}
return false;
@@ -197,11 +172,6 @@ public class AccessibleKeyboardViewProxy {
}
}
- private void fireKeyPressEvent(PointerTracker tracker, int x, int y, long eventTime) {
- tracker.onDownEvent(x, y, eventTime, mView);
- tracker.onUpEvent(x, y, eventTime + DELAY_KEY_PRESS);
- }
-
private class KeyboardFlickGestureDetector extends FlickGestureDetector {
public KeyboardFlickGestureDetector(Context context) {
super(context);
diff --git a/java/src/com/android/inputmethod/compat/SuggestionSpanUtils.java b/java/src/com/android/inputmethod/compat/SuggestionSpanUtils.java
index 2766cc3f1..164d2b748 100644
--- a/java/src/com/android/inputmethod/compat/SuggestionSpanUtils.java
+++ b/java/src/com/android/inputmethod/compat/SuggestionSpanUtils.java
@@ -16,6 +16,7 @@
package com.android.inputmethod.compat;
+import com.android.inputmethod.latin.LatinImeLogger;
import com.android.inputmethod.latin.SuggestedWords;
import com.android.inputmethod.latin.SuggestionSpanPickedNotificationReceiver;
@@ -27,6 +28,7 @@ import android.text.TextUtils;
import android.util.Log;
import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Locale;
@@ -38,9 +40,6 @@ public class SuggestionSpanUtils {
public static final String SUGGESTION_SPAN_PICKED_AFTER = "after";
public static final String SUGGESTION_SPAN_PICKED_BEFORE = "before";
public static final String SUGGESTION_SPAN_PICKED_HASHCODE = "hashcode";
- // TODO: Use the API constant after it gets public.
- public static final int FLAG_AUTO_CORRECTION = 0x0004;
- public static final int SUGGESTION_MAX_SIZE = 5;
public static final boolean SUGGESTION_SPAN_IS_SUPPORTED;
private static final Class<?> CLASS_SuggestionSpan = CompatUtils
@@ -49,20 +48,36 @@ public class SuggestionSpanUtils {
Context.class, Locale.class, String[].class, int.class, Class.class };
private static final Constructor<?> CONSTRUCTOR_SuggestionSpan = CompatUtils
.getConstructor(CLASS_SuggestionSpan, INPUT_TYPE_SuggestionSpan);
+ public static final Field FIELD_FLAG_AUTO_CORRECTION
+ = CompatUtils.getField(CLASS_SuggestionSpan, "FLAG_AUTO_CORRECTION");
+ public static final Field FIELD_SUGGESTION_MAX_SIZE
+ = CompatUtils.getField(CLASS_SuggestionSpan, "SUGGESTION_MAX_SIZE");
+ public static final Integer OBJ_FLAG_AUTO_CORRECTION = (Integer) CompatUtils
+ .getFieldValue(null, null, FIELD_FLAG_AUTO_CORRECTION);;
+ public static final Integer OBJ_SUGGESTION_MAX_SIZE = (Integer) CompatUtils
+ .getFieldValue(null, null, FIELD_SUGGESTION_MAX_SIZE);;
+
static {
SUGGESTION_SPAN_IS_SUPPORTED =
CLASS_SuggestionSpan != null && CONSTRUCTOR_SuggestionSpan != null;
+ if (LatinImeLogger.sDBG) {
+ if (SUGGESTION_SPAN_IS_SUPPORTED
+ && (OBJ_FLAG_AUTO_CORRECTION == null || OBJ_SUGGESTION_MAX_SIZE == null)) {
+ Log.e(TAG, "Field is accidentially null.");
+ }
+ }
}
public static CharSequence getTextWithAutoCorrectionIndicatorUnderline(
Context context, CharSequence text) {
- if (TextUtils.isEmpty(text) || CONSTRUCTOR_SuggestionSpan == null) {
+ if (TextUtils.isEmpty(text) || CONSTRUCTOR_SuggestionSpan == null
+ || OBJ_FLAG_AUTO_CORRECTION == null) {
return text;
}
final Spannable spannable = text instanceof Spannable
? (Spannable) text : new SpannableString(text);
final Object[] args =
- { context, null, new String[] {}, FLAG_AUTO_CORRECTION,
+ { context, null, new String[] {}, (int)OBJ_FLAG_AUTO_CORRECTION,
(Class<?>) SuggestionSpanPickedNotificationReceiver.class };
final Object ss = CompatUtils.newInstance(CONSTRUCTOR_SuggestionSpan, args);
if (ss == null) {
@@ -78,7 +93,8 @@ public class SuggestionSpanUtils {
CharSequence pickedWord, SuggestedWords suggestedWords) {
if (TextUtils.isEmpty(pickedWord) || CONSTRUCTOR_SuggestionSpan == null
|| suggestedWords == null || suggestedWords.size() == 0
- || suggestedWords.getInfo(0).isObsoleteSuggestedWord()) {
+ || suggestedWords.getInfo(0).isObsoleteSuggestedWord()
+ || OBJ_SUGGESTION_MAX_SIZE == null) {
return pickedWord;
}
@@ -90,7 +106,7 @@ public class SuggestionSpanUtils {
}
final ArrayList<String> suggestionsList = new ArrayList<String>();
for (int i = 0; i < suggestedWords.size(); ++i) {
- if (suggestionsList.size() >= SUGGESTION_MAX_SIZE) {
+ if (suggestionsList.size() >= OBJ_SUGGESTION_MAX_SIZE) {
break;
}
final CharSequence word = suggestedWords.getWord(i);
diff --git a/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java b/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java
index c51f1849b..762039625 100644
--- a/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java
@@ -38,7 +38,6 @@ import com.android.inputmethod.latin.R;
import com.android.inputmethod.latin.SubtypeSwitcher;
import com.android.inputmethod.latin.Utils;
-import java.lang.ref.SoftReference;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Locale;
@@ -329,10 +328,12 @@ public class LatinKeyboard extends Keyboard {
Math.max(0, Math.min(y, mOccupiedHeight - 1)));
}
+ private static final int[] ATTR_TEXT_SIZE = { android.R.attr.textSize };
+
public static int getTextSizeFromTheme(Theme theme, int style, int defValue) {
- TypedArray array = theme.obtainStyledAttributes(
- style, new int[] { android.R.attr.textSize });
- int textSize = array.getDimensionPixelSize(array.getResourceId(0, 0), defValue);
+ final TypedArray a = theme.obtainStyledAttributes(style, ATTR_TEXT_SIZE);
+ final int textSize = a.getDimensionPixelSize(a.getResourceId(0, 0), defValue);
+ a.recycle();
return textSize;
}
}
diff --git a/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java b/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java
index a24195e87..aab52e139 100644
--- a/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java
@@ -624,16 +624,6 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke
}
@Override
- public boolean dispatchTouchEvent(MotionEvent event) {
- // Drop non-hover touch events when touch exploration is enabled.
- if (AccessibilityUtils.getInstance().isTouchExplorationEnabled()) {
- return false;
- }
-
- return super.dispatchTouchEvent(event);
- }
-
- @Override
public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) {
if (AccessibilityUtils.getInstance().isTouchExplorationEnabled()) {
final PointerTracker tracker = getPointerTracker(0);
diff --git a/java/src/com/android/inputmethod/keyboard/MiniKeyboardView.java b/java/src/com/android/inputmethod/keyboard/MiniKeyboardView.java
index 0e6e129bb..f2c5b7b49 100644
--- a/java/src/com/android/inputmethod/keyboard/MiniKeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/MiniKeyboardView.java
@@ -27,7 +27,6 @@ import com.android.inputmethod.keyboard.PointerTracker.DrawingProxy;
import com.android.inputmethod.keyboard.PointerTracker.TimerProxy;
import com.android.inputmethod.latin.R;
-
/**
* A view that renders a virtual {@link MiniKeyboard}. It handles rendering of keys and detecting
* key presses and touch movements.
@@ -115,7 +114,7 @@ public class MiniKeyboardView extends KeyboardView implements MoreKeysPanel {
@Override
public DrawingProxy getDrawingProxy() {
- return this;
+ return this;
}
@Override
@@ -174,9 +173,15 @@ public class MiniKeyboardView extends KeyboardView implements MoreKeysPanel {
return x;
}
+ private boolean mIsDismissing;
+
@Override
public boolean dismissMoreKeysPanel() {
- return mController.dismissMoreKeysPanel();
+ if (mIsDismissing) return false;
+ mIsDismissing = true;
+ final boolean dismissed = mController.dismissMoreKeysPanel();
+ mIsDismissing = false;
+ return dismissed;
}
@Override
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java
index dd31d17c8..de64639b0 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java
@@ -19,6 +19,7 @@ package com.android.inputmethod.keyboard.internal;
import android.content.Context;
import android.content.res.Resources;
import android.content.res.TypedArray;
+import android.content.res.XmlResourceParser;
import android.util.DisplayMetrics;
import android.util.Log;
import android.util.TypedValue;
@@ -168,7 +169,7 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
keyboardAttr.recycle();
TypedArray keyAttr = res.obtainAttributes(Xml.asAttributeSet(parser),
R.styleable.Keyboard_Key);
- mDefaultKeyWidth = KeyboardBuilder.getDimensionOrFraction(keyboardAttr,
+ mDefaultKeyWidth = KeyboardBuilder.getDimensionOrFraction(keyAttr,
R.styleable.Keyboard_Key_keyWidth, params.mBaseWidth, params.mDefaultKeyWidth);
keyAttr.recycle();
@@ -268,14 +269,17 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
public KeyboardBuilder<KP> load(KeyboardId id) {
mParams.mId = id;
+ final XmlResourceParser parser = mResources.getXml(id.getXmlId());
try {
- parseKeyboard(id.getXmlId());
+ parseKeyboard(parser);
} catch (XmlPullParserException e) {
Log.w(TAG, "keyboard XML parse error: " + e);
throw new IllegalArgumentException(e);
} catch (IOException e) {
Log.w(TAG, "keyboard XML parse error: " + e);
throw new RuntimeException(e);
+ } finally {
+ parser.close();
}
return this;
}
@@ -288,9 +292,9 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
return new Keyboard(mParams);
}
- private void parseKeyboard(int resId) throws XmlPullParserException, IOException {
+ private void parseKeyboard(XmlResourceParser parser)
+ throws XmlPullParserException, IOException {
if (DEBUG) Log.d(TAG, String.format("<%s> %s", TAG_KEYBOARD, mParams.mId));
- final XmlPullParser parser = mResources.getXml(resId);
int event;
while ((event = parser.next()) != XmlPullParser.END_DOCUMENT) {
if (event == XmlPullParser.START_TAG) {
@@ -319,7 +323,10 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
if (TAG_KEYBOARD.equals(tag)) {
final TypedArray keyboardAttr = res.obtainAttributes(Xml.asAttributeSet(parser),
R.styleable.Keyboard);
- return keyboardAttr.getString(R.styleable.Keyboard_keyboardLocale);
+ final String locale = keyboardAttr.getString(
+ R.styleable.Keyboard_keyboardLocale);
+ keyboardAttr.recycle();
+ return locale;
} else {
throw new IllegalStartTag(parser, TAG_KEYBOARD);
}
@@ -535,7 +542,12 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
throw new ParseException("No keyboardLayout attribute in <include/>", parser);
if (DEBUG) Log.d(TAG, String.format("<%s keyboardLayout=%s />",
TAG_INCLUDE, mResources.getResourceEntryName(keyboardLayout)));
- parseMerge(mResources.getLayout(keyboardLayout), row, skip);
+ final XmlResourceParser parserForInclude = mResources.getXml(keyboardLayout);
+ try {
+ parseMerge(parserForInclude, row, skip);
+ } finally {
+ parserForInclude.close();
+ }
}
}
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 05aa305f5..d57154ad5 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -28,7 +28,6 @@ import android.content.res.Resources;
import android.inputmethodservice.InputMethodService;
import android.media.AudioManager;
import android.net.ConnectivityManager;
-import android.os.Build;
import android.os.Debug;
import android.os.Message;
import android.os.SystemClock;
@@ -182,7 +181,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
// TODO: Create an inner class to group options and pseudo-options to improve readability.
// These variables are initialized according to the {@link EditorInfo#inputType}.
- private boolean mShouldInsertMagicSpace;
+ private boolean mInsertSpaceOnPickSuggestionManually;
private boolean mInputTypeNoAutoCorrect;
private boolean mIsSettingsSuggestionStripOn;
private boolean mApplicationSpecifiedCompletionOn;
@@ -373,6 +372,8 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
private boolean mHasPendingFinishInput;
public void startOrientationChanging() {
+ removeMessages(MSG_PENDING_IMS_CALLBACK);
+ resetPendingImsCallback();
mIsOrientationChanging = true;
final LatinIME latinIme = getOuterInstance();
latinIme.mKeyboardSwitcher.saveKeyboardState();
@@ -718,6 +719,9 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
voiceIme.resetVoiceStates(InputTypeCompatUtils.isPasswordInputType(inputType)
|| InputTypeCompatUtils.isVisiblePasswordInputType(inputType));
+ // The EditorInfo might have a flag that affects fullscreen mode.
+ // Note: This call should be done by InputMethodService?
+ updateFullscreenMode();
initializeInputAttributes(attribute);
inputView.closing();
@@ -734,7 +738,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
if (mSuggest != null && mSettingsValues.mAutoCorrectEnabled) {
mSuggest.setAutoCorrectionThreshold(mSettingsValues.mAutoCorrectionThreshold);
- }
+ }
mVoiceProxy.loadSettings(attribute, mPrefs);
// This will work only when the subtype is not supported.
LanguageSwitcherProxy.loadSettings();
@@ -745,8 +749,6 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
if (mSuggestionsView != null)
mSuggestionsView.clear();
- // The EditorInfo might have a flag that affects fullscreen mode.
- updateFullscreenMode();
setSuggestionStripShownInternal(
isSuggestionsStripVisible(), /* needsInputViewShown */ false);
// Delay updating suggestions because keyboard input view may not be shown at this point.
@@ -776,7 +778,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
inputType, attribute.imeOptions));
}
- mShouldInsertMagicSpace = false;
+ mInsertSpaceOnPickSuggestionManually = false;
mInputTypeNoAutoCorrect = false;
mIsSettingsSuggestionStripOn = false;
mApplicationSpecifiedCompletionOn = false;
@@ -791,9 +793,11 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
}
if (InputTypeCompatUtils.isEmailVariation(variation)
|| variation == InputType.TYPE_TEXT_VARIATION_PERSON_NAME) {
- mShouldInsertMagicSpace = false;
+ // The point in turning this off is that we don't want to insert a space after
+ // a name when filling a form: we can't delete trailing spaces when changing fields
+ mInsertSpaceOnPickSuggestionManually = false;
} else {
- mShouldInsertMagicSpace = true;
+ mInsertSpaceOnPickSuggestionManually = true;
}
if (InputTypeCompatUtils.isEmailVariation(variation)) {
mIsSettingsSuggestionStripOn = false;
@@ -1058,9 +1062,9 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
super.updateFullscreenMode();
if (mKeyPreviewBackingView == null) return;
- // In extract mode, no need to have extra space to show the key preview.
+ // In fullscreen mode, no need to have extra space to show the key preview.
// If not, we should have extra space above the keyboard to show the key preview.
- mKeyPreviewBackingView.setVisibility(isExtractViewShown() ? View.GONE : View.VISIBLE);
+ mKeyPreviewBackingView.setVisibility(isFullscreenMode() ? View.GONE : View.VISIBLE);
}
@Override
@@ -1589,6 +1593,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
}
public boolean isShowingPunctuationList() {
+ if (mSuggestionsView == null) return false;
return mSettingsValues.mSuggestPuncList == mSuggestionsView.getSuggestions();
}
@@ -1815,8 +1820,8 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
final int rawPrimaryCode = suggestion.charAt(0);
// Maybe apply the "bidi mirrored" conversions for parentheses
final LatinKeyboard keyboard = mKeyboardSwitcher.getLatinKeyboard();
- final int primaryCode = Key.getRtlParenthesisCode(
- rawPrimaryCode, keyboard.mIsRtlKeyboard);
+ final boolean isRtl = keyboard != null && keyboard.mIsRtlKeyboard;
+ final int primaryCode = Key.getRtlParenthesisCode(rawPrimaryCode, isRtl);
final CharSequence beforeText = ic != null ? ic.getTextBeforeCursor(1, 0) : "";
final int toLeft = (ic == null || TextUtils.isEmpty(beforeText))
@@ -1850,7 +1855,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
suggestion.toString(), index, suggestions.mWords);
TextEntryState.acceptedSuggestion(mComposingStringBuilder.toString(), suggestion);
// Follow it with a space
- if (mShouldInsertMagicSpace && !recorrecting) {
+ if (mInsertSpaceOnPickSuggestionManually && !recorrecting) {
sendMagicSpace();
}
@@ -2144,16 +2149,9 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
}
};
- // update sound effect volume
+ // update keypress sound volume
private void updateSoundEffectVolume() {
- final String[] volumePerHardwareList = mResources.getStringArray(R.array.keypress_volumes);
- final String hardwarePrefix = Build.HARDWARE + ",";
- for (final String element : volumePerHardwareList) {
- if (element.startsWith(hardwarePrefix)) {
- mFxVolume = Float.parseFloat(element.substring(element.lastIndexOf(',') + 1));
- break;
- }
- }
+ mFxVolume = Utils.getCurrentKeypressSoundVolume(mPrefs, mResources);
}
// update flags for silent mode
@@ -2334,7 +2332,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
p.println(" mCorrectionMode=" + mCorrectionMode);
p.println(" mHasUncommittedTypedChars=" + mHasUncommittedTypedChars);
p.println(" mAutoCorrectEnabled=" + mSettingsValues.mAutoCorrectEnabled);
- p.println(" mShouldInsertMagicSpace=" + mShouldInsertMagicSpace);
+ p.println(" mInsertSpaceOnPickSuggestionManually=" + mInsertSpaceOnPickSuggestionManually);
p.println(" mApplicationSpecifiedCompletionOn=" + mApplicationSpecifiedCompletionOn);
p.println(" TextEntryState.state=" + TextEntryState.getState());
p.println(" mSoundOn=" + mSettingsValues.mSoundOn);
diff --git a/java/src/com/android/inputmethod/latin/MoreSuggestionsView.java b/java/src/com/android/inputmethod/latin/MoreSuggestionsView.java
index 51f6c040d..c61dd6313 100644
--- a/java/src/com/android/inputmethod/latin/MoreSuggestionsView.java
+++ b/java/src/com/android/inputmethod/latin/MoreSuggestionsView.java
@@ -35,7 +35,6 @@ import com.android.inputmethod.keyboard.PointerTracker.DrawingProxy;
import com.android.inputmethod.keyboard.PointerTracker.KeyEventHandler;
import com.android.inputmethod.keyboard.PointerTracker.TimerProxy;
-
/**
* A view that renders a virtual {@link MoreSuggestions}. It handles rendering of keys and detecting
* key presses and touch movements.
@@ -125,7 +124,7 @@ public class MoreSuggestionsView extends KeyboardView implements MoreKeysPanel {
@Override
public DrawingProxy getDrawingProxy() {
- return this;
+ return this;
}
@Override
@@ -180,10 +179,15 @@ public class MoreSuggestionsView extends KeyboardView implements MoreKeysPanel {
return x;
}
+ private boolean mIsDismissing;
+
@Override
public boolean dismissMoreKeysPanel() {
- if (mController == null) return false;
- return mController.dismissMoreKeysPanel();
+ if (mIsDismissing) return false;
+ mIsDismissing = true;
+ final boolean dismissed = mController.dismissMoreKeysPanel();
+ mIsDismissing = false;
+ return dismissed;
}
@Override
diff --git a/java/src/com/android/inputmethod/latin/Settings.java b/java/src/com/android/inputmethod/latin/Settings.java
index d9508f4c1..eeb0299b1 100644
--- a/java/src/com/android/inputmethod/latin/Settings.java
+++ b/java/src/com/android/inputmethod/latin/Settings.java
@@ -26,6 +26,7 @@ import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.Resources;
+import android.media.AudioManager;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.ListPreference;
@@ -91,9 +92,11 @@ public class Settings extends InputMethodSettingsActivity
public static final String PREF_USABILITY_STUDY_MODE = "usability_study_mode";
- public static final String PREF_VIBRATION_DURATION_SETTINGS =
+ public static final String PREF_KEYPRESS_VIBRATION_DURATION_SETTINGS =
"pref_vibration_duration_settings";
+ public static final String PREF_KEYPRESS_SOUND_VOLUME =
+ "pref_keypress_sound_volume";
// Dialog ids
private static final int VOICE_INPUT_CONFIRM_DIALOG = 0;
@@ -327,7 +330,8 @@ public class Settings extends InputMethodSettingsActivity
}
private PreferenceScreen mInputLanguageSelection;
- private PreferenceScreen mVibrationDurationSettingsPref;
+ private PreferenceScreen mKeypressVibrationDurationSettingsPref;
+ private PreferenceScreen mKeypressSoundVolumeSettingsPref;
private ListPreference mVoicePreference;
private CheckBoxPreference mShowSettingsKeyPreference;
private ListPreference mShowCorrectionSuggestionsPreference;
@@ -341,7 +345,8 @@ public class Settings extends InputMethodSettingsActivity
private boolean mVoiceOn;
private AlertDialog mDialog;
- private TextView mVibrationSettingsTextView;
+ private TextView mKeypressVibrationDurationSettingsTextView;
+ private TextView mKeypressSoundVolumeSettingsTextView;
private boolean mOkClicked = false;
private String mVoiceModeOff;
@@ -477,19 +482,34 @@ public class Settings extends InputMethodSettingsActivity
}
}
- mVibrationDurationSettingsPref =
- (PreferenceScreen) findPreference(PREF_VIBRATION_DURATION_SETTINGS);
- if (mVibrationDurationSettingsPref != null) {
- mVibrationDurationSettingsPref.setOnPreferenceClickListener(
+ mKeypressVibrationDurationSettingsPref =
+ (PreferenceScreen) findPreference(PREF_KEYPRESS_VIBRATION_DURATION_SETTINGS);
+ if (mKeypressVibrationDurationSettingsPref != null) {
+ mKeypressVibrationDurationSettingsPref.setOnPreferenceClickListener(
new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference arg0) {
- showVibrationSettingsDialog();
+ showKeypressVibrationDurationSettingsDialog();
return true;
}
});
- updateVibrationDurationSettingsSummary(prefs, res);
+ updateKeypressVibrationDurationSettingsSummary(prefs, res);
}
+
+ mKeypressSoundVolumeSettingsPref =
+ (PreferenceScreen) findPreference(PREF_KEYPRESS_SOUND_VOLUME);
+ if (mKeypressSoundVolumeSettingsPref != null) {
+ mKeypressSoundVolumeSettingsPref.setOnPreferenceClickListener(
+ new OnPreferenceClickListener() {
+ @Override
+ public boolean onPreferenceClick(Preference arg0) {
+ showKeypressSoundVolumeSettingDialog();
+ return true;
+ }
+ });
+ updateKeypressSoundVolumeSummary(prefs, res);
+ }
+ refreshEnablingsOfKeypressSoundAndVibrationSettings(prefs, res);
}
@SuppressWarnings("unused")
@@ -537,6 +557,7 @@ public class Settings extends InputMethodSettingsActivity
updateVoiceModeSummary();
updateShowCorrectionSuggestionsSummary();
updateKeyPreviewPopupDelaySummary();
+ refreshEnablingsOfKeypressSoundAndVibrationSettings(prefs, getResources());
}
@Override
@@ -637,26 +658,44 @@ public class Settings extends InputMethodSettingsActivity
}
}
- private void updateVibrationDurationSettingsSummary(SharedPreferences sp, Resources res) {
- if (mVibrationDurationSettingsPref != null) {
- mVibrationDurationSettingsPref.setSummary(
+ private void refreshEnablingsOfKeypressSoundAndVibrationSettings(
+ SharedPreferences sp, Resources res) {
+ if (mKeypressVibrationDurationSettingsPref != null) {
+ final boolean hasVibrator = VibratorCompatWrapper.getInstance(this).hasVibrator();
+ final boolean vibrateOn = hasVibrator && sp.getBoolean(Settings.PREF_VIBRATE_ON,
+ res.getBoolean(R.bool.config_default_vibration_enabled));
+ mKeypressVibrationDurationSettingsPref.setEnabled(vibrateOn);
+ }
+
+ if (mKeypressSoundVolumeSettingsPref != null) {
+ final boolean soundOn = sp.getBoolean(Settings.PREF_SOUND_ON,
+ res.getBoolean(R.bool.config_default_sound_enabled));
+ mKeypressSoundVolumeSettingsPref.setEnabled(soundOn);
+ }
+ }
+
+ private void updateKeypressVibrationDurationSettingsSummary(
+ SharedPreferences sp, Resources res) {
+ if (mKeypressVibrationDurationSettingsPref != null) {
+ mKeypressVibrationDurationSettingsPref.setSummary(
Utils.getCurrentVibrationDuration(sp, res)
+ res.getString(R.string.settings_ms));
}
}
- private void showVibrationSettingsDialog() {
+ private void showKeypressVibrationDurationSettingsDialog() {
final SharedPreferences sp = getPreferenceManager().getSharedPreferences();
final Activity context = getActivityInternal();
final Resources res = context.getResources();
final AlertDialog.Builder builder = new AlertDialog.Builder(context);
- builder.setTitle(R.string.prefs_vibration_duration_settings);
+ builder.setTitle(R.string.prefs_keypress_vibration_duration_settings);
builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int whichButton) {
- final int ms = Integer.valueOf(mVibrationSettingsTextView.getText().toString());
- sp.edit().putInt(Settings.PREF_VIBRATION_DURATION_SETTINGS, ms).apply();
- updateVibrationDurationSettingsSummary(sp, res);
+ final int ms = Integer.valueOf(
+ mKeypressVibrationDurationSettingsTextView.getText().toString());
+ sp.edit().putInt(Settings.PREF_KEYPRESS_VIBRATION_DURATION_SETTINGS, ms).apply();
+ updateKeypressVibrationDurationSettingsSummary(sp, res);
}
});
builder.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
@@ -669,13 +708,13 @@ public class Settings extends InputMethodSettingsActivity
R.layout.vibration_settings_dialog, null);
final int currentMs = Utils.getCurrentVibrationDuration(
getPreferenceManager().getSharedPreferences(), getResources());
- mVibrationSettingsTextView = (TextView)v.findViewById(R.id.vibration_value);
+ mKeypressVibrationDurationSettingsTextView = (TextView)v.findViewById(R.id.vibration_value);
final SeekBar sb = (SeekBar)v.findViewById(R.id.vibration_settings);
sb.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
final int tempMs = arg1;
- mVibrationSettingsTextView.setText(String.valueOf(tempMs));
+ mKeypressVibrationDurationSettingsTextView.setText(String.valueOf(tempMs));
}
@Override
@@ -689,7 +728,67 @@ public class Settings extends InputMethodSettingsActivity
}
});
sb.setProgress(currentMs);
- mVibrationSettingsTextView.setText(String.valueOf(currentMs));
+ mKeypressVibrationDurationSettingsTextView.setText(String.valueOf(currentMs));
+ builder.setView(v);
+ builder.create().show();
+ }
+
+ private void updateKeypressSoundVolumeSummary(SharedPreferences sp, Resources res) {
+ if (mKeypressSoundVolumeSettingsPref != null) {
+ mKeypressSoundVolumeSettingsPref.setSummary(
+ String.valueOf((int)(Utils.getCurrentKeypressSoundVolume(sp, res) * 100)));
+ }
+ }
+
+ private void showKeypressSoundVolumeSettingDialog() {
+ final AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
+ final SharedPreferences sp = getPreferenceManager().getSharedPreferences();
+ final Activity context = getActivityInternal();
+ final Resources res = context.getResources();
+ final AlertDialog.Builder builder = new AlertDialog.Builder(context);
+ builder.setTitle(R.string.prefs_keypress_sound_volume_settings);
+ builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int whichButton) {
+ final float volume =
+ ((float)Integer.valueOf(
+ mKeypressSoundVolumeSettingsTextView.getText().toString())) / 100;
+ sp.edit().putFloat(Settings.PREF_KEYPRESS_SOUND_VOLUME, volume).apply();
+ updateKeypressSoundVolumeSummary(sp, res);
+ }
+ });
+ builder.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int whichButton) {
+ dialog.dismiss();
+ }
+ });
+ final View v = context.getLayoutInflater().inflate(
+ R.layout.sound_effect_volume_dialog, null);
+ final int currentVolumeInt = (int)(Utils.getCurrentKeypressSoundVolume(
+ getPreferenceManager().getSharedPreferences(), getResources()) * 100);
+ mKeypressSoundVolumeSettingsTextView =
+ (TextView)v.findViewById(R.id.sound_effect_volume_value);
+ final SeekBar sb = (SeekBar)v.findViewById(R.id.sound_effect_volume_bar);
+ sb.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
+ @Override
+ public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
+ final int tempVolume = arg1;
+ mKeypressSoundVolumeSettingsTextView.setText(String.valueOf(tempVolume));
+ }
+
+ @Override
+ public void onStartTrackingTouch(SeekBar arg0) {
+ }
+
+ @Override
+ public void onStopTrackingTouch(SeekBar arg0) {
+ final float tempVolume = ((float)arg0.getProgress()) / 100;
+ am.playSoundEffect(AudioManager.FX_KEYPRESS_STANDARD, tempVolume);
+ }
+ });
+ sb.setProgress(currentVolumeInt);
+ mKeypressSoundVolumeSettingsTextView.setText(String.valueOf(currentVolumeInt));
builder.setView(v);
builder.create().show();
}
diff --git a/java/src/com/android/inputmethod/latin/SynchronouslyLoadedContactsDictionary.java b/java/src/com/android/inputmethod/latin/SynchronouslyLoadedContactsDictionary.java
new file mode 100644
index 000000000..444c7f5f0
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/SynchronouslyLoadedContactsDictionary.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin;
+
+import android.content.Context;
+
+import com.android.inputmethod.keyboard.ProximityInfo;
+
+public class SynchronouslyLoadedContactsDictionary extends ContactsDictionary {
+ private boolean mClosed;
+
+ public SynchronouslyLoadedContactsDictionary(final Context context) {
+ super(context, Suggest.DIC_CONTACTS);
+ mClosed = false;
+ }
+
+ @Override
+ public synchronized void getWords(final WordComposer codes, final WordCallback callback,
+ final ProximityInfo proximityInfo) {
+ blockingReloadDictionaryIfRequired();
+ getWordsInner(codes, callback, proximityInfo);
+ }
+
+ @Override
+ public synchronized boolean isValidWord(CharSequence word) {
+ blockingReloadDictionaryIfRequired();
+ return getWordFrequency(word) > -1;
+ }
+
+ // Protect against multiple closing
+ @Override
+ public synchronized void close() {
+ // Actually with the current implementation of ContactsDictionary it's safe to close
+ // several times, so the following protection is really only for foolproofing
+ if (mClosed) return;
+ mClosed = true;
+ super.close();
+ }
+}
diff --git a/java/src/com/android/inputmethod/latin/UserDictionary.java b/java/src/com/android/inputmethod/latin/UserDictionary.java
index 67da4fa50..0bbbf3995 100644
--- a/java/src/com/android/inputmethod/latin/UserDictionary.java
+++ b/java/src/com/android/inputmethod/latin/UserDictionary.java
@@ -179,8 +179,9 @@ public class UserDictionary extends ExpandableDictionary {
new Thread("addWord") {
@Override
public void run() {
+ Cursor cursor = null;
try {
- final Cursor cursor = client.query(Words.CONTENT_URI, PROJECTION_ADD,
+ cursor = client.query(Words.CONTENT_URI, PROJECTION_ADD,
"word=? and ((locale IS NULL) or (locale=?))",
new String[] { word, mLocale }, null);
if (cursor != null && cursor.moveToFirst()) {
@@ -201,6 +202,9 @@ public class UserDictionary extends ExpandableDictionary {
// If we come here, the activity is already about to be killed, and we
// have no means of contacting the content provider any more.
// See ContentResolver#insert, inside the catch(){}
+ } finally {
+ if (null != cursor) cursor.close();
+ client.release();
}
}
}.start();
diff --git a/java/src/com/android/inputmethod/latin/Utils.java b/java/src/com/android/inputmethod/latin/Utils.java
index f6343f1d7..b29ff1975 100644
--- a/java/src/com/android/inputmethod/latin/Utils.java
+++ b/java/src/com/android/inputmethod/latin/Utils.java
@@ -779,7 +779,7 @@ public class Utils {
}
public static int getCurrentVibrationDuration(SharedPreferences sp, Resources res) {
- final int ms = sp.getInt(Settings.PREF_VIBRATION_DURATION_SETTINGS, -1);
+ final int ms = sp.getInt(Settings.PREF_KEYPRESS_VIBRATION_DURATION_SETTINGS, -1);
if (ms >= 0) {
return ms;
}
@@ -794,6 +794,22 @@ public class Utils {
return -1;
}
+ public static float getCurrentKeypressSoundVolume(SharedPreferences sp, Resources res) {
+ final float volume = sp.getFloat(Settings.PREF_KEYPRESS_SOUND_VOLUME, -1.0f);
+ if (volume >= 0) {
+ return volume;
+ }
+
+ final String[] volumePerHardwareList = res.getStringArray(R.array.keypress_volumes);
+ final String hardwarePrefix = Build.HARDWARE + ",";
+ for (final String element : volumePerHardwareList) {
+ if (element.startsWith(hardwarePrefix)) {
+ return Float.parseFloat(element.substring(element.lastIndexOf(',') + 1));
+ }
+ }
+ return -1.0f;
+ }
+
public static boolean willAutoCorrect(SuggestedWords suggestions) {
return !suggestions.mTypedWordValid && suggestions.mHasAutoCorrectionCandidate
&& !suggestions.shouldBlockAutoCorrection();
diff --git a/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java b/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java
index f9e6a5e68..095c2c51c 100644
--- a/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java
+++ b/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java
@@ -35,6 +35,7 @@ import com.android.inputmethod.latin.DictionaryFactory;
import com.android.inputmethod.latin.Flag;
import com.android.inputmethod.latin.LocaleUtils;
import com.android.inputmethod.latin.R;
+import com.android.inputmethod.latin.SynchronouslyLoadedContactsDictionary;
import com.android.inputmethod.latin.SynchronouslyLoadedUserDictionary;
import com.android.inputmethod.latin.Utils;
import com.android.inputmethod.latin.WhitelistDictionary;
@@ -60,11 +61,6 @@ public class AndroidSpellCheckerService extends SpellCheckerService {
private static final int CAPITALIZE_ALL = 2; // All caps
private final static String[] EMPTY_STRING_ARRAY = new String[0];
- private final static SuggestionsInfo NOT_IN_DICT_EMPTY_SUGGESTIONS =
- new SuggestionsInfo(0, EMPTY_STRING_ARRAY);
- private final static SuggestionsInfo IN_DICT_EMPTY_SUGGESTIONS =
- new SuggestionsInfo(SuggestionsInfo.RESULT_ATTR_IN_THE_DICTIONARY,
- EMPTY_STRING_ARRAY);
private final static Flag[] USE_FULL_EDIT_DISTANCE_FLAG_ARRAY;
static {
// See BinaryDictionary.java for an explanation of these flags
@@ -82,6 +78,7 @@ public class AndroidSpellCheckerService extends SpellCheckerService {
Collections.synchronizedMap(new TreeMap<String, Dictionary>());
private Map<String, Dictionary> mWhitelistDictionaries =
Collections.synchronizedMap(new TreeMap<String, Dictionary>());
+ private SynchronouslyLoadedContactsDictionary mContactsDictionary;
// The threshold for a candidate to be offered as a suggestion.
private double mSuggestionThreshold;
@@ -101,6 +98,15 @@ public class AndroidSpellCheckerService extends SpellCheckerService {
return new AndroidSpellCheckerSession(this);
}
+ private static SuggestionsInfo getNotInDictEmptySuggestions() {
+ return new SuggestionsInfo(0, EMPTY_STRING_ARRAY);
+ }
+
+ private static SuggestionsInfo getInDictEmptySuggestions() {
+ return new SuggestionsInfo(SuggestionsInfo.RESULT_ATTR_IN_THE_DICTIONARY,
+ EMPTY_STRING_ARRAY);
+ }
+
private static class SuggestionsGatherer implements WordCallback {
public static class Result {
public final String[] mSuggestions;
@@ -267,6 +273,14 @@ public class AndroidSpellCheckerService extends SpellCheckerService {
for (Dictionary dict : oldWhitelistDictionaries.values()) {
dict.close();
}
+ if (null != mContactsDictionary) {
+ // The synchronously loaded contacts dictionary should have been in one
+ // or several pools, but it is shielded against multiple closing and it's
+ // safe to call it several times.
+ final SynchronouslyLoadedContactsDictionary dictToClose = mContactsDictionary;
+ mContactsDictionary = null;
+ dictToClose.close();
+ }
return false;
}
@@ -300,6 +314,11 @@ public class AndroidSpellCheckerService extends SpellCheckerService {
mWhitelistDictionaries.put(localeStr, whitelistDictionary);
}
dictionaryCollection.addDictionary(whitelistDictionary);
+ if (null == mContactsDictionary) {
+ mContactsDictionary = new SynchronouslyLoadedContactsDictionary(this);
+ }
+ // TODO: add a setting to use or not contacts when checking spelling
+ dictionaryCollection.addDictionary(mContactsDictionary);
return new DictAndProximity(dictionaryCollection, proximityInfo);
}
@@ -393,9 +412,9 @@ public class AndroidSpellCheckerService extends SpellCheckerService {
DictAndProximity dictInfo = null;
try {
dictInfo = mDictionaryPool.takeOrGetNull();
- if (null == dictInfo) return NOT_IN_DICT_EMPTY_SUGGESTIONS;
- return dictInfo.mDictionary.isValidWord(text) ? IN_DICT_EMPTY_SUGGESTIONS
- : NOT_IN_DICT_EMPTY_SUGGESTIONS;
+ if (null == dictInfo) return getNotInDictEmptySuggestions();
+ return dictInfo.mDictionary.isValidWord(text) ? getInDictEmptySuggestions()
+ : getNotInDictEmptySuggestions();
} finally {
if (null != dictInfo) {
if (!mDictionaryPool.offer(dictInfo)) {
@@ -430,7 +449,7 @@ public class AndroidSpellCheckerService extends SpellCheckerService {
DictAndProximity dictInfo = null;
try {
dictInfo = mDictionaryPool.takeOrGetNull();
- if (null == dictInfo) return NOT_IN_DICT_EMPTY_SUGGESTIONS;
+ if (null == dictInfo) return getNotInDictEmptySuggestions();
dictInfo.mDictionary.getWords(composer, suggestionsGatherer,
dictInfo.mProximityInfo);
isInDict = dictInfo.mDictionary.isValidWord(text);
@@ -475,7 +494,7 @@ public class AndroidSpellCheckerService extends SpellCheckerService {
throw e;
} else {
Log.e(TAG, "Exception while spellcheking: " + e);
- return NOT_IN_DICT_EMPTY_SUGGESTIONS;
+ return getNotInDictEmptySuggestions();
}
}
}