diff options
Diffstat (limited to 'java')
72 files changed, 855 insertions, 952 deletions
diff --git a/java/res/values-af/strings.xml b/java/res/values-af/strings.xml index 5bfd9d9a4..18e63f317 100644 --- a/java/res/values-af/strings.xml +++ b/java/res/values-af/strings.xml @@ -44,10 +44,8 @@ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Verstek"</string> <string name="use_contacts_dict" msgid="4435317977804180815">"Stel kontakname voor"</string> <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Gebruik name van kontakte vir voorstelle en korreksies"</string> - <!-- no translation found for use_double_space_period (8781529969425082860) --> - <skip /> - <!-- no translation found for use_double_space_period_summary (6532892187247952799) --> - <skip /> + <string name="use_double_space_period" msgid="8781529969425082860">"Dubbelspasie-punt"</string> + <string name="use_double_space_period_summary" msgid="6532892187247952799">"Dubbeltik op spasiebalk voeg \'n punt in, gevolg deur \'n spasie"</string> <string name="auto_cap" msgid="1719746674854628252">"Outohoofletters"</string> <string name="auto_cap_summary" msgid="7934452761022946874">"Die eerste woord van elke sin moet met \'n hoofletter begin"</string> <string name="configure_dictionaries_title" msgid="4238652338556902049">"Voeg woordeboeke by"</string> @@ -76,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"Vorige"</string> <string name="label_done_key" msgid="2441578748772529288">"Klaar"</string> <string name="label_send_key" msgid="2815056534433717444">"Stuur"</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">"Laat wag"</string> <string name="label_wait_key" msgid="6402152600878093134">"Wag"</string> <string name="spoken_use_headphones" msgid="896961781287283493">"Koppel \'n kopstuk om te hoor hoe wagwoordsleutels hardop gesê word."</string> diff --git a/java/res/values-am/strings.xml b/java/res/values-am/strings.xml index 9794d2e66..4f66a1676 100644 --- a/java/res/values-am/strings.xml +++ b/java/res/values-am/strings.xml @@ -74,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"ቀዳሚ"</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">"የይለፍቃል ቁልፎች ጮክ በለው ሲነገሩ ለመስማት የጆሮ ማዳመጫ ሰካ::"</string> diff --git a/java/res/values-ar/strings.xml b/java/res/values-ar/strings.xml index f4897a881..a3877ed49 100644 --- a/java/res/values-ar/strings.xml +++ b/java/res/values-ar/strings.xml @@ -44,10 +44,8 @@ <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> - <!-- no translation found for use_double_space_period (8781529969425082860) --> - <skip /> - <!-- no translation found for use_double_space_period_summary (6532892187247952799) --> - <skip /> + <string name="use_double_space_period" msgid="8781529969425082860">"نقطة المسافة المزدوجة"</string> + <string name="use_double_space_period_summary" msgid="6532892187247952799">"يؤدي النقر نقرًا مزدوجًا على مفتاح المسافة إلى إدخال نقطة متبوعة بمسافة"</string> <string name="auto_cap" msgid="1719746674854628252">"أحرف كبيرة تلقائيًا"</string> <string name="auto_cap_summary" msgid="7934452761022946874">"كتابة الحرف الأول من كل جملة بحرف كبير."</string> <string name="configure_dictionaries_title" msgid="4238652338556902049">"القواميس الإضافية"</string> @@ -76,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"السابق"</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">"أ ب ج"</string> - <string name="label_to_symbol_key" msgid="8516904117128967293">"٣٢١؟"</string> - <string name="label_to_symbol_with_microphone_key" msgid="9035925553010061906">"٣٢١"</string> <string name="label_pause_key" msgid="181098308428035340">"توقف مؤقت"</string> <string name="label_wait_key" msgid="6402152600878093134">"انتظار"</string> <string name="spoken_use_headphones" msgid="896961781287283493">"يمكنك توصيل سماعة رأس لسماع مفاتيح كلمة المرور منطوقة بصوت عالٍ."</string> diff --git a/java/res/values-be/strings.xml b/java/res/values-be/strings.xml index f5716b7fc..bf396943f 100644 --- a/java/res/values-be/strings.xml +++ b/java/res/values-be/strings.xml @@ -74,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"Назад"</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">"АБВ"</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> diff --git a/java/res/values-bg/strings.xml b/java/res/values-bg/strings.xml index 20d398e88..27d3ac7d5 100644 --- a/java/res/values-bg/strings.xml +++ b/java/res/values-bg/strings.xml @@ -74,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"Пред."</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">"АБВ"</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">"Включете слушалки, за да чуете клавишите за паролата на висок глас."</string> diff --git a/java/res/values-ca/strings.xml b/java/res/values-ca/strings.xml index bf6122ff1..0182dd492 100644 --- a/java/res/values-ca/strings.xml +++ b/java/res/values-ca/strings.xml @@ -74,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"Ant."</string> <string name="label_done_key" msgid="2441578748772529288">"Fet"</string> <string name="label_send_key" msgid="2815056534433717444">"Envia"</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">"Pausa"</string> <string name="label_wait_key" msgid="6402152600878093134">"Espera"</string> <string name="spoken_use_headphones" msgid="896961781287283493">"Connecta un auricular per escoltar les claus de la contrasenya en veu alta."</string> diff --git a/java/res/values-cs/strings.xml b/java/res/values-cs/strings.xml index 9c80863dc..806ac1291 100644 --- a/java/res/values-cs/strings.xml +++ b/java/res/values-cs/strings.xml @@ -74,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"Před."</string> <string name="label_done_key" msgid="2441578748772529288">"Hotovo"</string> <string name="label_send_key" msgid="2815056534433717444">"Odeslat"</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">"Pauza"</string> <string name="label_wait_key" msgid="6402152600878093134">"Čekat"</string> <string name="spoken_use_headphones" msgid="896961781287283493">"Chcete-li slyšet, které klávesy jste při zadávání hesla stiskli, připojte sluchátka."</string> diff --git a/java/res/values-da/strings.xml b/java/res/values-da/strings.xml index 6cb105012..4fbfe905d 100644 --- a/java/res/values-da/strings.xml +++ b/java/res/values-da/strings.xml @@ -74,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"Forr."</string> <string name="label_done_key" msgid="2441578748772529288">"Udfør"</string> <string name="label_send_key" msgid="2815056534433717444">"Send"</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">"Pause"</string> <string name="label_wait_key" msgid="6402152600878093134">"Vent"</string> <string name="spoken_use_headphones" msgid="896961781287283493">"Tilslut et headset for at høre indtastningen blive læst højt ved angivelse af adgangskode."</string> diff --git a/java/res/values-de/strings.xml b/java/res/values-de/strings.xml index c844ec82b..1fad9e710 100644 --- a/java/res/values-de/strings.xml +++ b/java/res/values-de/strings.xml @@ -74,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"Zurück"</string> <string name="label_done_key" msgid="2441578748772529288">"Fertig"</string> <string name="label_send_key" msgid="2815056534433717444">"Senden"</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">"Pause"</string> <string name="label_wait_key" msgid="6402152600878093134">"Warten"</string> <string name="spoken_use_headphones" msgid="896961781287283493">"Schließen Sie ein Headset an, um das Passwort gesprochen zu hören."</string> diff --git a/java/res/values-el/strings.xml b/java/res/values-el/strings.xml index 1ab64f9da..2b99e7e00 100644 --- a/java/res/values-el/strings.xml +++ b/java/res/values-el/strings.xml @@ -44,7 +44,7 @@ <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="use_double_space_period" msgid="8781529969425082860">"Τελεία με διπλό πάτημα πλήκρου διαστ."</string> + <string name="use_double_space_period" msgid="8781529969425082860">"Τελεία με διπλό πάτημα πλήκτρ.διαστ."</string> <string name="use_double_space_period_summary" msgid="6532892187247952799">"Το διπλό πάτημα του πλήκτρ.διαστ. εισάγει μια τελεία και ένα κενό"</string> <string name="auto_cap" msgid="1719746674854628252">"Αυτόματη χρήση κεφαλαίων"</string> <string name="auto_cap_summary" msgid="7934452761022946874">"Χρήση κεφαλαίου στην πρώτη λέξη κάθε πρότασης"</string> @@ -74,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"Προηγ"</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">"ΑΒΓ"</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">"Συνδέστε ένα σετ ακουστικών για να ακούσετε τα πλήκτρα του κωδικού πρόσβασης να εκφωνούνται δυνατά."</string> diff --git a/java/res/values-en-rGB/strings.xml b/java/res/values-en-rGB/strings.xml index adfd9e309..652d5aa46 100644 --- a/java/res/values-en-rGB/strings.xml +++ b/java/res/values-en-rGB/strings.xml @@ -76,9 +76,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"Prev"</string> <string name="label_done_key" msgid="2441578748772529288">"Done"</string> <string name="label_send_key" msgid="2815056534433717444">"Send"</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">"Pause"</string> <string name="label_wait_key" msgid="6402152600878093134">"Wait"</string> <string name="spoken_use_headphones" msgid="896961781287283493">"Plug in a headset to hear password keys spoken aloud."</string> diff --git a/java/res/values-es-rUS/strings.xml b/java/res/values-es-rUS/strings.xml index b4302226b..9e87970de 100644 --- a/java/res/values-es-rUS/strings.xml +++ b/java/res/values-es-rUS/strings.xml @@ -44,8 +44,8 @@ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Predeterminada"</string> <string name="use_contacts_dict" msgid="4435317977804180815">"Sugerir nombres de contacto"</string> <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Usar nombres de los contactos para sugerencias y correcciones"</string> - <string name="use_double_space_period" msgid="8781529969425082860">"Doble espacio después de punto"</string> - <string name="use_double_space_period_summary" msgid="6532892187247952799">"Si tocas dos veces la barra espaciadora, se inserta un punto seguido de un espacio."</string> + <string name="use_double_space_period" msgid="8781529969425082860">"Punto y doble espacio"</string> + <string name="use_double_space_period_summary" msgid="6532892187247952799">"Tocar dos veces la barra espaciadora inserta un punto y espacio."</string> <string name="auto_cap" msgid="1719746674854628252">"Mayúsculas automáticas"</string> <string name="auto_cap_summary" msgid="7934452761022946874">"Escribe con mayúscula la primera palabra de cada frase"</string> <string name="configure_dictionaries_title" msgid="4238652338556902049">"Diccionarios complementarios"</string> @@ -74,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"Ant."</string> <string name="label_done_key" msgid="2441578748772529288">"Listo"</string> <string name="label_send_key" msgid="2815056534433717444">"Enviar"</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">"Pausa"</string> <string name="label_wait_key" msgid="6402152600878093134">"Espera"</string> <string name="spoken_use_headphones" msgid="896961781287283493">"Enchufa tus auriculares para escuchar en voz alta qué teclas presionas al ingresar una contraseña."</string> diff --git a/java/res/values-es/strings.xml b/java/res/values-es/strings.xml index 37aa2c85e..24335e65a 100644 --- a/java/res/values-es/strings.xml +++ b/java/res/values-es/strings.xml @@ -44,7 +44,7 @@ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Predeterminado"</string> <string name="use_contacts_dict" msgid="4435317977804180815">"Sugerir contactos"</string> <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Utilizar nombres de contactos para sugerencias y correcciones"</string> - <string name="use_double_space_period" msgid="8781529969425082860">"Punto y doble espacio"</string> + <string name="use_double_space_period" msgid="8781529969425082860">"Punto y espacio"</string> <string name="use_double_space_period_summary" msgid="6532892187247952799">"Si tocas dos veces el espacio, se inserta un punto seguido de un espacio."</string> <string name="auto_cap" msgid="1719746674854628252">"Mayúsculas automáticas"</string> <string name="auto_cap_summary" msgid="7934452761022946874">"Poner la primera letra de cada palabra en mayúscula"</string> @@ -74,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"Anterior"</string> <string name="label_done_key" msgid="2441578748772529288">"Ok"</string> <string name="label_send_key" msgid="2815056534433717444">"Enviar"</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">"Pausa"</string> <string name="label_wait_key" msgid="6402152600878093134">"Espera"</string> <string name="spoken_use_headphones" msgid="896961781287283493">"Conecta un auricular para escuchar las contraseñas en voz alta."</string> diff --git a/java/res/values-et/strings.xml b/java/res/values-et/strings.xml index 35997b2ae..25dcdca73 100644 --- a/java/res/values-et/strings.xml +++ b/java/res/values-et/strings.xml @@ -74,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"Eelm."</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> diff --git a/java/res/values-fa/strings.xml b/java/res/values-fa/strings.xml index dbc32c53c..d4a0e66b0 100644 --- a/java/res/values-fa/strings.xml +++ b/java/res/values-fa/strings.xml @@ -44,10 +44,8 @@ <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> - <!-- no translation found for use_double_space_period (8781529969425082860) --> - <skip /> - <!-- no translation found for use_double_space_period_summary (6532892187247952799) --> - <skip /> + <string name="use_double_space_period" msgid="8781529969425082860">"نقطه با دو فاصله"</string> + <string name="use_double_space_period_summary" msgid="6532892187247952799">"با دوبار ضربه روی دکمه فاصله نقطه با یک فاصله بعد آن درج میشود"</string> <string name="auto_cap" msgid="1719746674854628252">"بزرگکردن خودکار حروف"</string> <string name="auto_cap_summary" msgid="7934452761022946874">"بزرگنویسی کلمه اول هر جمله"</string> <string name="configure_dictionaries_title" msgid="4238652338556902049">"فرهنگهای لغت افزودنی"</string> @@ -76,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"قبلی"</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">"ابپ"</string> - <string name="label_to_symbol_key" msgid="8516904117128967293">"۳۲۱؟"</string> - <string name="label_to_symbol_with_microphone_key" msgid="9035925553010061906">"۳۲۱"</string> <string name="label_pause_key" msgid="181098308428035340">"توقف موقت"</string> <string name="label_wait_key" msgid="6402152600878093134">"منتظر بمانید"</string> <string name="spoken_use_headphones" msgid="896961781287283493">"برای شنیدن کلیدهای گذرواژه که با صدای بلند خوانده میشوند، از هدست استفاده کنید."</string> diff --git a/java/res/values-fi/strings.xml b/java/res/values-fi/strings.xml index 8e444dcb3..36890d95a 100644 --- a/java/res/values-fi/strings.xml +++ b/java/res/values-fi/strings.xml @@ -74,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"Edell"</string> <string name="label_done_key" msgid="2441578748772529288">"Valmis"</string> <string name="label_send_key" msgid="2815056534433717444">"Lähetä"</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">"Tauko"</string> <string name="label_wait_key" msgid="6402152600878093134">"Odota"</string> <string name="spoken_use_headphones" msgid="896961781287283493">"Liitä kuulokkeet kuullaksesi, mitä näppäimiä painat kirjoittaessasi salasanaa."</string> diff --git a/java/res/values-fr/strings.xml b/java/res/values-fr/strings.xml index 182f39ac4..3f895325e 100644 --- a/java/res/values-fr/strings.xml +++ b/java/res/values-fr/strings.xml @@ -74,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"Préc."</string> <string name="label_done_key" msgid="2441578748772529288">"OK"</string> <string name="label_send_key" msgid="2815056534433717444">"Envoi"</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">"Pause"</string> <string name="label_wait_key" msgid="6402152600878093134">"Délai"</string> <string name="spoken_use_headphones" msgid="896961781287283493">"Branchez des écouteurs pour entendre l\'énoncé à haute voix des touches lors de la saisie du mot de passe."</string> diff --git a/java/res/values-hi/strings.xml b/java/res/values-hi/strings.xml index dbb94eb3d..6537b859e 100644 --- a/java/res/values-hi/strings.xml +++ b/java/res/values-hi/strings.xml @@ -44,7 +44,7 @@ <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="use_double_space_period" msgid="8781529969425082860">"दोहरी रिक्ति वाला पीरियड"</string> + <string name="use_double_space_period" msgid="8781529969425082860">"दोहरे स्पेस वाला पीरियड"</string> <string name="use_double_space_period_summary" msgid="6532892187247952799">"स्पेसबार पर डबल टैप करने से पीरियड शामिल हो जाता है जिसके बाद एक रिक्ति होती है"</string> <string name="auto_cap" msgid="1719746674854628252">"स्वत: अक्षर बड़े करना"</string> <string name="auto_cap_summary" msgid="7934452761022946874">"प्रत्येक वाक्य के पहले शब्द को बड़ा लिखें"</string> @@ -74,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"पिछला"</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">"कखग"</string> - <string name="label_to_symbol_key" msgid="8516904117128967293">"?१२३"</string> - <string name="label_to_symbol_with_microphone_key" msgid="9035925553010061906">"१२३"</string> <string name="label_pause_key" msgid="181098308428035340">"पॉज़ करें"</string> <string name="label_wait_key" msgid="6402152600878093134">"प्रतीक्षा करें"</string> <string name="spoken_use_headphones" msgid="896961781287283493">"ज़ोर से बोली गई पासवर्ड कुंजियां सुनने के लिए हेडसेट प्लग इन करें."</string> diff --git a/java/res/values-hr/strings.xml b/java/res/values-hr/strings.xml index a0963e53d..d788c1f0e 100644 --- a/java/res/values-hr/strings.xml +++ b/java/res/values-hr/strings.xml @@ -74,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"Pret."</string> <string name="label_done_key" msgid="2441578748772529288">"Gotovo"</string> <string name="label_send_key" msgid="2815056534433717444">"Pošalji"</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">"Pauza"</string> <string name="label_wait_key" msgid="6402152600878093134">"Pričekaj"</string> <string name="spoken_use_headphones" msgid="896961781287283493">"Priključite slušalice da biste čuli tipke zaporke izgovorene naglas."</string> diff --git a/java/res/values-hu/strings.xml b/java/res/values-hu/strings.xml index e9972d23e..1df863927 100644 --- a/java/res/values-hu/strings.xml +++ b/java/res/values-hu/strings.xml @@ -74,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"Előző"</string> <string name="label_done_key" msgid="2441578748772529288">"Kész"</string> <string name="label_send_key" msgid="2815056534433717444">"Küldés"</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">"Szün."</string> <string name="label_wait_key" msgid="6402152600878093134">"Vár"</string> <string name="spoken_use_headphones" msgid="896961781287283493">"Csatlakoztasson egy headsetet, ha hallani szeretné a jelszót felolvasva."</string> diff --git a/java/res/values-in/strings.xml b/java/res/values-in/strings.xml index d761ffc50..f26ad38a4 100644 --- a/java/res/values-in/strings.xml +++ b/java/res/values-in/strings.xml @@ -45,7 +45,7 @@ <string name="use_contacts_dict" msgid="4435317977804180815">"Sarankan nama Kontak"</string> <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Menggunakan nama dari Kontak untuk saran dan koreksi"</string> <string name="use_double_space_period" msgid="8781529969425082860">"Titik spasi ganda"</string> - <string name="use_double_space_period_summary" msgid="6532892187247952799">"Mengetuk dua kali bilah spasi akan memasukkan titik diikuti satu spasi"</string> + <string name="use_double_space_period_summary" msgid="6532892187247952799">"Mengetuk tombol spasi dua kali akan memasukkan titik diikuti satu spasi"</string> <string name="auto_cap" msgid="1719746674854628252">"Kapitalisasi otomatis"</string> <string name="auto_cap_summary" msgid="7934452761022946874">"Kapitalisasi kata pertama di setiap kalimat"</string> <string name="configure_dictionaries_title" msgid="4238652338556902049">"Kamus pengaya"</string> @@ -74,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"Sblm"</string> <string name="label_done_key" msgid="2441578748772529288">"Selesai"</string> <string name="label_send_key" msgid="2815056534433717444">"Kirimkan"</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">"Jeda"</string> <string name="label_wait_key" msgid="6402152600878093134">"Tunggu"</string> <string name="spoken_use_headphones" msgid="896961781287283493">"Pasang headset untuk mendengar tombol sandi yang diucapkan dengan keras."</string> diff --git a/java/res/values-is/strings.xml b/java/res/values-is/strings.xml index 9dc37edd8..8ea7461c2 100644 --- a/java/res/values-is/strings.xml +++ b/java/res/values-is/strings.xml @@ -123,11 +123,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"Fyrra"</string> <string name="label_done_key" msgid="2441578748772529288">"Lokið"</string> <string name="label_send_key" msgid="2815056534433717444">"Senda"</string> - <string name="label_to_alpha_key" msgid="4793983863798817523">"ABC"</string> - <!-- no translation found for label_to_symbol_key (8516904117128967293) --> - <skip /> - <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) --> - <skip /> <!-- no translation found for label_pause_key (181098308428035340) --> <skip /> <!-- no translation found for label_wait_key (6402152600878093134) --> diff --git a/java/res/values-it/strings.xml b/java/res/values-it/strings.xml index a3ed5dd1f..a78c5c56a 100644 --- a/java/res/values-it/strings.xml +++ b/java/res/values-it/strings.xml @@ -74,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"Indietro"</string> <string name="label_done_key" msgid="2441578748772529288">"Fine"</string> <string name="label_send_key" msgid="2815056534433717444">"Invia"</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">"Pausa"</string> <string name="label_wait_key" msgid="6402152600878093134">"Attesa"</string> <string name="spoken_use_headphones" msgid="896961781287283493">"Collega gli auricolari per ascoltare la pronuncia dei tasti premuti per la password."</string> diff --git a/java/res/values-iw/strings.xml b/java/res/values-iw/strings.xml index 3c58b9cc2..6542b9fb4 100644 --- a/java/res/values-iw/strings.xml +++ b/java/res/values-iw/strings.xml @@ -74,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"הקודם"</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">"אבג"</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">"חבר אוזניות כדי לשמוע הקראה של מפתחות סיסמה."</string> diff --git a/java/res/values-ja/strings.xml b/java/res/values-ja/strings.xml index 182e66e59..2b341e116 100644 --- a/java/res/values-ja/strings.xml +++ b/java/res/values-ja/strings.xml @@ -74,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"前へ"</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">"パスワードのキーが音声出力されるのでヘッドセットを接続してください。"</string> diff --git a/java/res/values-ka/strings.xml b/java/res/values-ka/strings.xml index bf12855cb..ef3014401 100644 --- a/java/res/values-ka/strings.xml +++ b/java/res/values-ka/strings.xml @@ -123,11 +123,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"წინა"</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> - <!-- no translation found for label_to_symbol_key (8516904117128967293) --> - <skip /> - <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) --> - <skip /> <!-- no translation found for label_pause_key (181098308428035340) --> <skip /> <!-- no translation found for label_wait_key (6402152600878093134) --> diff --git a/java/res/values-ko/strings.xml b/java/res/values-ko/strings.xml index 6206d468d..e7b9d5a75 100644 --- a/java/res/values-ko/strings.xml +++ b/java/res/values-ko/strings.xml @@ -74,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"이전"</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">"비밀번호 키를 음성으로 들으려면 헤드셋을 연결하세요."</string> diff --git a/java/res/values-lt/strings.xml b/java/res/values-lt/strings.xml index 4d7de256d..5c66e1f22 100644 --- a/java/res/values-lt/strings.xml +++ b/java/res/values-lt/strings.xml @@ -74,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"Anks."</string> <string name="label_done_key" msgid="2441578748772529288">"Atlikta"</string> <string name="label_send_key" msgid="2815056534433717444">"Siųsti"</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">"Prist."</string> <string name="label_wait_key" msgid="6402152600878093134">"Lauk."</string> <string name="spoken_use_headphones" msgid="896961781287283493">"Prijunkite ausines, kad išgirstumėte sakomus slaptažodžio klavišus."</string> diff --git a/java/res/values-lv/strings.xml b/java/res/values-lv/strings.xml index fa66c2d65..a0cf78e89 100644 --- a/java/res/values-lv/strings.xml +++ b/java/res/values-lv/strings.xml @@ -74,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"Iepr."</string> <string name="label_done_key" msgid="2441578748772529288">"Gatavs"</string> <string name="label_send_key" msgid="2815056534433717444">"Sūtīt"</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">"Pauze"</string> <string name="label_wait_key" msgid="6402152600878093134">"Gaidīt"</string> <string name="spoken_use_headphones" msgid="896961781287283493">"Pievienojiet austiņas, lai dzirdētu paroles rakstzīmes."</string> diff --git a/java/res/values-mk/strings.xml b/java/res/values-mk/strings.xml index 7baba300e..e199e0316 100644 --- a/java/res/values-mk/strings.xml +++ b/java/res/values-mk/strings.xml @@ -123,11 +123,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"Претходно"</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">"АБВ"</string> - <!-- no translation found for label_to_symbol_key (8516904117128967293) --> - <skip /> - <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) --> - <skip /> <!-- no translation found for label_pause_key (181098308428035340) --> <skip /> <!-- no translation found for label_wait_key (6402152600878093134) --> diff --git a/java/res/values-mn/strings.xml b/java/res/values-mn/strings.xml index 7a9f529d9..41bf551ba 100644 --- a/java/res/values-mn/strings.xml +++ b/java/res/values-mn/strings.xml @@ -123,11 +123,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"Өмнөх"</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">"АБВ"</string> - <!-- no translation found for label_to_symbol_key (8516904117128967293) --> - <skip /> - <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) --> - <skip /> <!-- no translation found for label_pause_key (181098308428035340) --> <skip /> <!-- no translation found for label_wait_key (6402152600878093134) --> diff --git a/java/res/values-ms/strings.xml b/java/res/values-ms/strings.xml index 5cfe7456f..c1a2f0d09 100644 --- a/java/res/values-ms/strings.xml +++ b/java/res/values-ms/strings.xml @@ -45,7 +45,7 @@ <string name="use_contacts_dict" msgid="4435317977804180815">"Cadangkan nama Kenalan"</string> <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Menggunakan nama daripada Kenalan untuk cadangan dan pembetulan"</string> <string name="use_double_space_period" msgid="8781529969425082860">"Titik ruang berganda"</string> - <string name="use_double_space_period_summary" msgid="6532892187247952799">"Ketik dua kali pada bar ruang memasukkan titik diikuti dengan ruang"</string> + <string name="use_double_space_period_summary" msgid="6532892187247952799">"Mengetik 2X pada bar ruang memasukkan titik diikuti dengan ruang"</string> <string name="auto_cap" msgid="1719746674854628252">"Huruf besar auto"</string> <string name="auto_cap_summary" msgid="7934452761022946874">"Besarkan perkataan pertama setiap ayat"</string> <string name="configure_dictionaries_title" msgid="4238652338556902049">"Kamus tambahan"</string> @@ -74,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"Sblm"</string> <string name="label_done_key" msgid="2441578748772529288">"Selesai"</string> <string name="label_send_key" msgid="2815056534433717444">"Hantar"</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">"Jeda"</string> <string name="label_wait_key" msgid="6402152600878093134">"Tnggu"</string> <string name="spoken_use_headphones" msgid="896961781287283493">"Pasangkan set kepala untuk mendengar kekunci kata laluan disebut dengan kuat."</string> diff --git a/java/res/values-nb/strings.xml b/java/res/values-nb/strings.xml index d21c4e916..f56ce1127 100644 --- a/java/res/values-nb/strings.xml +++ b/java/res/values-nb/strings.xml @@ -44,8 +44,8 @@ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Standard"</string> <string name="use_contacts_dict" msgid="4435317977804180815">"Foreslå kontaktnavn"</string> <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Bruk navn fra Kontakter til forslag og korrigeringer"</string> - <string name="use_double_space_period" msgid="8781529969425082860">"To mellomrom for punktum"</string> - <string name="use_double_space_period_summary" msgid="6532892187247952799">"Trykk to ganger på mellomromstasten for å sette inn et punktum etterfulgt av et mellomrom"</string> + <string name="use_double_space_period" msgid="8781529969425082860">"Punktum ved doble mellomrom"</string> + <string name="use_double_space_period_summary" msgid="6532892187247952799">"Dobbeltrykk på mellomromstasten for punktum etterfulgt av mellomrom"</string> <string name="auto_cap" msgid="1719746674854628252">"Stor forbokstav"</string> <string name="auto_cap_summary" msgid="7934452761022946874">"Sett stor bokstav i det første ordet i hver setning"</string> <string name="configure_dictionaries_title" msgid="4238652338556902049">"Tilleggsordbøker"</string> @@ -74,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"Forr."</string> <string name="label_done_key" msgid="2441578748772529288">"Utfør"</string> <string name="label_send_key" msgid="2815056534433717444">"Send"</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">"Pause"</string> <string name="label_wait_key" msgid="6402152600878093134">"Vent"</string> <string name="spoken_use_headphones" msgid="896961781287283493">"Koble til hodetelefoner for å høre opplesing av bokstavene i passordet."</string> diff --git a/java/res/values-nl/strings.xml b/java/res/values-nl/strings.xml index daa65a49e..6bd474a19 100644 --- a/java/res/values-nl/strings.xml +++ b/java/res/values-nl/strings.xml @@ -74,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"Vorig"</string> <string name="label_done_key" msgid="2441578748772529288">"Gereed"</string> <string name="label_send_key" msgid="2815056534433717444">"Zenden"</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">"Pauze"</string> <string name="label_wait_key" msgid="6402152600878093134">"Wacht"</string> <string name="spoken_use_headphones" msgid="896961781287283493">"Sluit een headset aan om wachtwoordtoetsen hardop te laten voorlezen."</string> diff --git a/java/res/values-pl/strings.xml b/java/res/values-pl/strings.xml index 5ee44ccbb..27fcf60ba 100644 --- a/java/res/values-pl/strings.xml +++ b/java/res/values-pl/strings.xml @@ -74,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"Wstecz"</string> <string name="label_done_key" msgid="2441578748772529288">"OK"</string> <string name="label_send_key" msgid="2815056534433717444">"Wyślij"</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">"Pauza"</string> <string name="label_wait_key" msgid="6402152600878093134">"Czekaj"</string> <string name="spoken_use_headphones" msgid="896961781287283493">"Podłącz zestaw słuchawkowy, aby usłyszeć znaki hasła wypowiadane na głos."</string> diff --git a/java/res/values-pt-rPT/strings.xml b/java/res/values-pt-rPT/strings.xml index 1d88fbb7c..46bd34d72 100644 --- a/java/res/values-pt-rPT/strings.xml +++ b/java/res/values-pt-rPT/strings.xml @@ -74,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"Ant."</string> <string name="label_done_key" msgid="2441578748772529288">"Feito"</string> <string name="label_send_key" msgid="2815056534433717444">"Enviar"</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">"Pausa"</string> <string name="label_wait_key" msgid="6402152600878093134">"Esp."</string> <string name="spoken_use_headphones" msgid="896961781287283493">"Ligar auscultadores com microfone integrado para ouvir as teclas da palavra-passe."</string> diff --git a/java/res/values-pt/strings.xml b/java/res/values-pt/strings.xml index da0ed5db9..ce61e0c17 100644 --- a/java/res/values-pt/strings.xml +++ b/java/res/values-pt/strings.xml @@ -74,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"Volt."</string> <string name="label_done_key" msgid="2441578748772529288">"Feito"</string> <string name="label_send_key" msgid="2815056534433717444">"Enviar"</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">"Pausa"</string> <string name="label_wait_key" msgid="6402152600878093134">"Esp."</string> <string name="spoken_use_headphones" msgid="896961781287283493">"Conecte um fone de ouvido para ouvir as chaves de senha em voz alta."</string> diff --git a/java/res/values-rm/strings.xml b/java/res/values-rm/strings.xml index 584f33206..5a315f502 100644 --- a/java/res/values-rm/strings.xml +++ b/java/res/values-rm/strings.xml @@ -119,12 +119,6 @@ <skip /> <string name="label_done_key" msgid="2441578748772529288">"Finì"</string> <string name="label_send_key" msgid="2815056534433717444">"Trametter"</string> - <!-- no translation found for label_to_alpha_key (4793983863798817523) --> - <skip /> - <!-- no translation found for label_to_symbol_key (8516904117128967293) --> - <skip /> - <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) --> - <skip /> <!-- no translation found for label_pause_key (181098308428035340) --> <skip /> <!-- no translation found for label_wait_key (6402152600878093134) --> diff --git a/java/res/values-ro/strings.xml b/java/res/values-ro/strings.xml index 9d397ac55..99b82a537 100644 --- a/java/res/values-ro/strings.xml +++ b/java/res/values-ro/strings.xml @@ -74,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"Înapoi"</string> <string name="label_done_key" msgid="2441578748772529288">"Terminat"</string> <string name="label_send_key" msgid="2815056534433717444">"Trimiteţi"</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">"Pauză"</string> <string name="label_wait_key" msgid="6402152600878093134">"Aşt."</string> <string name="spoken_use_headphones" msgid="896961781287283493">"Conectaţi un set căşti-microfon pentru a auzi tastele apăsate când introduceţi parola."</string> diff --git a/java/res/values-ru/strings.xml b/java/res/values-ru/strings.xml index 30daeaaa5..1075d2994 100644 --- a/java/res/values-ru/strings.xml +++ b/java/res/values-ru/strings.xml @@ -74,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"Пред."</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">"АБВ"</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">"Подключите гарнитуру, чтобы услышать пароль."</string> diff --git a/java/res/values-sk/strings.xml b/java/res/values-sk/strings.xml index cfb51ed08..1ee4f3324 100644 --- a/java/res/values-sk/strings.xml +++ b/java/res/values-sk/strings.xml @@ -31,7 +31,7 @@ <string name="popup_on_keypress" msgid="123894815723512944">"Zobraziť znaky pri stlačení klávesu"</string> <string name="general_category" msgid="1859088467017573195">"Všeobecné"</string> <string name="correction_category" msgid="2236750915056607613">"Oprava textu"</string> - <string name="gesture_typing_category" msgid="497263612130532630">"Písanie gest"</string> + <string name="gesture_typing_category" msgid="497263612130532630">"Písanie gestami"</string> <string name="misc_category" msgid="6894192814868233453">"Ďalšie možnosti"</string> <string name="advanced_settings" msgid="362895144495591463">"Rozšírené nastavenia"</string> <string name="advanced_settings_summary" msgid="4487980456152830271">"Možnosti pre odborníkov"</string> @@ -44,7 +44,7 @@ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Predvolená"</string> <string name="use_contacts_dict" msgid="4435317977804180815">"Navrhnúť mená kontaktov"</string> <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Používať mená z Kontaktov na návrhy a opravy"</string> - <string name="use_double_space_period" msgid="8781529969425082860">"Bodka dvojitou medzerou"</string> + <string name="use_double_space_period" msgid="8781529969425082860">"Bodka s medzerou"</string> <string name="use_double_space_period_summary" msgid="6532892187247952799">"Dvojitým klepnutím na medzerník vložíte bodku a medzeru."</string> <string name="auto_cap" msgid="1719746674854628252">"Veľké písmená automaticky"</string> <string name="auto_cap_summary" msgid="7934452761022946874">"Písanie prvého slova v každej vete veľkým písmenom"</string> @@ -63,7 +63,7 @@ <string name="auto_correction_threshold_mode_very_aggeressive" msgid="3386782235540547678">"Veľmi agresívne"</string> <string name="bigram_prediction" msgid="1084449187723948550">"Návrhy ďalšieho slova"</string> <string name="bigram_prediction_summary" msgid="3896362682751109677">"Návrhy podľa predchádzajúceho slova"</string> - <string name="gesture_input" msgid="826951152254563827">"Povoliť písanie gest"</string> + <string name="gesture_input" msgid="826951152254563827">"Povoliť písanie gestami"</string> <string name="gesture_input_summary" msgid="9180350639305731231">"Vkladanie slov prejdením prstom po písmenách"</string> <string name="gesture_preview_trail" msgid="3802333369335722221">"Zobrazovať stopu gesta"</string> <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Dynamická plávajúca ukážka"</string> @@ -74,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"Pred."</string> <string name="label_done_key" msgid="2441578748772529288">"Hotovo"</string> <string name="label_send_key" msgid="2815056534433717444">"Odoslať"</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">"Pozastaviť"</string> <string name="label_wait_key" msgid="6402152600878093134">"Čakajte"</string> <string name="spoken_use_headphones" msgid="896961781287283493">"Ak si chcete pri zadávaní hesla vypočuť nahlas vyslovené klávesy, pripojte náhlavnú súpravu."</string> diff --git a/java/res/values-sl/strings.xml b/java/res/values-sl/strings.xml index b7dcfba1b..6ac740651 100644 --- a/java/res/values-sl/strings.xml +++ b/java/res/values-sl/strings.xml @@ -74,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"Nazaj"</string> <string name="label_done_key" msgid="2441578748772529288">"Dokončano"</string> <string name="label_send_key" msgid="2815056534433717444">"Pošlji"</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">"Premor"</string> <string name="label_wait_key" msgid="6402152600878093134">"Čakaj"</string> <string name="spoken_use_headphones" msgid="896961781287283493">"Priključite slušalke, če želite slišati izgovorjene tipke gesla."</string> diff --git a/java/res/values-sr/strings.xml b/java/res/values-sr/strings.xml index 93b8da306..1456ae96f 100644 --- a/java/res/values-sr/strings.xml +++ b/java/res/values-sr/strings.xml @@ -74,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"Прет."</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">"АБВ"</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">"Укључите слушалице да бисте чули наглас изговорене тастере за лозинку."</string> diff --git a/java/res/values-sv/strings.xml b/java/res/values-sv/strings.xml index 95b66923e..f6426f9a2 100644 --- a/java/res/values-sv/strings.xml +++ b/java/res/values-sv/strings.xml @@ -74,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"Föreg"</string> <string name="label_done_key" msgid="2441578748772529288">"Färdig"</string> <string name="label_send_key" msgid="2815056534433717444">"Skicka"</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">"Pausa"</string> <string name="label_wait_key" msgid="6402152600878093134">"Vänta"</string> <string name="spoken_use_headphones" msgid="896961781287283493">"Anslut hörlurar om du vill att lösenordet ska läsas upp."</string> diff --git a/java/res/values-sw/strings.xml b/java/res/values-sw/strings.xml index 95d6734c8..81b9003e8 100644 --- a/java/res/values-sw/strings.xml +++ b/java/res/values-sw/strings.xml @@ -74,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"Iliyotangulia"</string> <string name="label_done_key" msgid="2441578748772529288">"Kwisha"</string> <string name="label_send_key" msgid="2815056534433717444">"Tuma"</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">"Pumzisha"</string> <string name="label_wait_key" msgid="6402152600878093134">"Subiri"</string> <string name="spoken_use_headphones" msgid="896961781287283493">"Chomeka plagi ya kifaa cha kichwa cha kusikiza ili kusikiliza msimbo wa nenosiri inayozungumwa kwa sauti ya juu."</string> diff --git a/java/res/values-th/strings.xml b/java/res/values-th/strings.xml index 254bb2515..d0890987e 100644 --- a/java/res/values-th/strings.xml +++ b/java/res/values-th/strings.xml @@ -74,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"ก่อนหน้า"</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">"กขค"</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">"เสียบชุดหูฟังเพื่อฟังเสียงเมื่อพิมพ์รหัสผ่าน"</string> diff --git a/java/res/values-tl/strings.xml b/java/res/values-tl/strings.xml index e4257b291..a16032e80 100644 --- a/java/res/values-tl/strings.xml +++ b/java/res/values-tl/strings.xml @@ -74,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"Nkrn"</string> <string name="label_done_key" msgid="2441578748772529288">"Tapos na"</string> <string name="label_send_key" msgid="2815056534433717444">"Ipadala"</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">"Pause"</string> <string name="label_wait_key" msgid="6402152600878093134">"Intay"</string> <string name="spoken_use_headphones" msgid="896961781287283493">"Mag-plug in ng headset upang marinig ang mga password key na binabanggit nang malakas."</string> diff --git a/java/res/values-tr/strings.xml b/java/res/values-tr/strings.xml index f49e6f231..7b3748c84 100644 --- a/java/res/values-tr/strings.xml +++ b/java/res/values-tr/strings.xml @@ -74,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"Önceki"</string> <string name="label_done_key" msgid="2441578748772529288">"Bitti"</string> <string name="label_send_key" msgid="2815056534433717444">"Gönder"</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">"Durkl"</string> <string name="label_wait_key" msgid="6402152600878093134">"Bekle"</string> <string name="spoken_use_headphones" msgid="896961781287283493">"Şifre tuşlarının sesli okunmasını dinlemek için mikrofonlu kulaklık takın."</string> diff --git a/java/res/values-uk/strings.xml b/java/res/values-uk/strings.xml index fa81ba6c3..532f67147 100644 --- a/java/res/values-uk/strings.xml +++ b/java/res/values-uk/strings.xml @@ -74,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"Назад"</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">"АБВ"</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">"Підключіть гарнітуру, щоб прослухати відтворені вголос символи пароля."</string> diff --git a/java/res/values-vi/strings.xml b/java/res/values-vi/strings.xml index ee2153cfe..2b29120c3 100644 --- a/java/res/values-vi/strings.xml +++ b/java/res/values-vi/strings.xml @@ -74,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"Trước"</string> <string name="label_done_key" msgid="2441578748772529288">"Xong"</string> <string name="label_send_key" msgid="2815056534433717444">"Gửi"</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">"Tạm dừng"</string> <string name="label_wait_key" msgid="6402152600878093134">"Đợi"</string> <string name="spoken_use_headphones" msgid="896961781287283493">"Cắm tai nghe để nghe mật khẩu."</string> diff --git a/java/res/values-zh-rCN/strings.xml b/java/res/values-zh-rCN/strings.xml index c4cb39aa0..ed663b753 100644 --- a/java/res/values-zh-rCN/strings.xml +++ b/java/res/values-zh-rCN/strings.xml @@ -45,7 +45,7 @@ <string name="use_contacts_dict" msgid="4435317977804180815">"联系人姓名建议"</string> <string name="use_contacts_dict_summary" msgid="6599983334507879959">"使用联系人中的姓名提供建议和更正"</string> <string name="use_double_space_period" msgid="8781529969425082860">"双击空格插入句号"</string> - <string name="use_double_space_period_summary" msgid="6532892187247952799">"双击空格键可在空格后插入句号"</string> + <string name="use_double_space_period_summary" msgid="6532892187247952799">"双击空格键可插入句号并后跟空格"</string> <string name="auto_cap" msgid="1719746674854628252">"自动大写"</string> <string name="auto_cap_summary" msgid="7934452761022946874">"句首字词大写"</string> <string name="configure_dictionaries_title" msgid="4238652338556902049">"附加词典"</string> @@ -74,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"后退"</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">"需要插入耳机才能听到密码的按键声。"</string> diff --git a/java/res/values-zh-rTW/strings.xml b/java/res/values-zh-rTW/strings.xml index eee46ce8e..28d32cf38 100644 --- a/java/res/values-zh-rTW/strings.xml +++ b/java/res/values-zh-rTW/strings.xml @@ -74,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"上一步"</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">"連接耳機即可聽取系統朗讀密碼按鍵。"</string> diff --git a/java/res/values-zu/strings.xml b/java/res/values-zu/strings.xml index a4db66496..575a687b5 100644 --- a/java/res/values-zu/strings.xml +++ b/java/res/values-zu/strings.xml @@ -74,9 +74,6 @@ <string name="label_previous_key" msgid="1211868118071386787">"Eledlule"</string> <string name="label_done_key" msgid="2441578748772529288">"Kwenziwe"</string> <string name="label_send_key" msgid="2815056534433717444">"Thumela"</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">"Misa okwesikhashana"</string> <string name="label_wait_key" msgid="6402152600878093134">"Linda"</string> <string name="spoken_use_headphones" msgid="896961781287283493">"Plaka ku-headset ukuze uzwe okhiye bephasiwedi ezindlebeni zakho bezwakala kakhulu."</string> diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml index 3eb27e76b..2f1a209fc 100644 --- a/java/res/values/attrs.xml +++ b/java/res/values/attrs.xml @@ -389,6 +389,7 @@ <attr name="passwordInput" format="boolean" /> <attr name="clobberSettingsKey" format="boolean" /> <attr name="shortcutKeyEnabled" format="boolean" /> + <attr name="shortcutKeyOnSymbols" format="boolean" /> <attr name="hasShortcutKey" format="boolean" /> <attr name="languageSwitchKeyEnabled" format="boolean" /> <attr name="isMultiLine" format="boolean" /> diff --git a/java/res/values/strings.xml b/java/res/values/strings.xml index a842dc82c..2affdebed 100644 --- a/java/res/values/strings.xml +++ b/java/res/values/strings.xml @@ -147,13 +147,6 @@ <string name="label_done_key">Done</string> <!-- Label for soft enter key when it performs SEND action. Must be short to fit on key! [CHAR LIMIT=5] --> <string name="label_send_key">Send</string> - <!-- Label for "switch to alphabetic" key. Must be short to fit on key! [CHAR LIMIT=3] --> - <string name="label_to_alpha_key">ABC</string> - <!-- Label for "switch to symbols" key. Must be short to fit on key! [CHAR LIMIT=4] --> - <string name="label_to_symbol_key">\?123</string> - <!-- Label for "switch to symbols with microphone" key. This string shouldn't include the "mic" - part because it'll be appended by the code. Must be short to fit on key! [CHAR LIMIT=3] --> - <string name="label_to_symbol_with_microphone_key">123</string> <!-- Label for "Pause" key of phone number keyboard. Must be short to fit on key! [CHAR LIMIT=5] --> <string name="label_pause_key">Pause</string> <!-- Label for "Wait" key of phone number keyboard. Must be short to fit on key! [CHAR LIMIT=5]--> diff --git a/java/res/xml-sw600dp/key_styles_common.xml b/java/res/xml-sw600dp/key_styles_common.xml index bf2e76a6b..6b06ce77a 100644 --- a/java/res/xml-sw600dp/key_styles_common.xml +++ b/java/res/xml-sw600dp/key_styles_common.xml @@ -154,31 +154,30 @@ </default> </switch> <key-style - latin:styleName="toSymbolKeyStyle" - latin:code="!code/key_switch_alpha_symbol" - latin:keyLabel="!text/label_to_symbol_key" + latin:styleName="baseForLayoutSwitchKeyStyle" latin:keyLabelFlags="preserveCase" latin:keyActionFlags="noKeyPreview" latin:backgroundType="functional" /> <key-style + latin:styleName="toSymbolKeyStyle" + latin:code="!code/key_switch_alpha_symbol" + latin:keyLabel="!text/label_to_symbol_key" + latin:parentStyle="baseForLayoutSwitchKeyStyle" /> + <key-style latin:styleName="toAlphaKeyStyle" latin:code="!code/key_switch_alpha_symbol" latin:keyLabel="!text/label_to_alpha_key" - latin:keyLabelFlags="preserveCase" - latin:keyActionFlags="noKeyPreview" - latin:backgroundType="functional" /> + latin:parentStyle="baseForLayoutSwitchKeyStyle" /> <key-style latin:styleName="toMoreSymbolKeyStyle" latin:code="!code/key_shift" latin:keyLabel="!text/label_to_more_symbol_for_tablet_key" - latin:keyActionFlags="noKeyPreview" - latin:backgroundType="functional" /> + latin:parentStyle="baseForLayoutSwitchKeyStyle" /> <key-style latin:styleName="backFromMoreSymbolKeyStyle" latin:code="!code/key_shift" latin:keyLabel="!text/label_to_symbol_key" - latin:keyActionFlags="noKeyPreview" - latin:backgroundType="functional" /> + latin:parentStyle="baseForLayoutSwitchKeyStyle" /> <key-style latin:styleName="comKeyStyle" latin:keyLabel="!text/keylabel_for_popular_domain" diff --git a/java/res/xml-sw768dp/key_styles_common.xml b/java/res/xml-sw768dp/key_styles_common.xml index 537e76800..4d10f5b60 100644 --- a/java/res/xml-sw768dp/key_styles_common.xml +++ b/java/res/xml-sw768dp/key_styles_common.xml @@ -144,33 +144,30 @@ </default> </switch> <key-style - latin:styleName="toSymbolKeyStyle" - latin:code="!code/key_switch_alpha_symbol" - latin:keyLabel="!text/label_to_symbol_key" + latin:styleName="baseForLayoutSwitchKeyStyle" latin:keyLabelFlags="fontNormal|preserveCase" latin:keyActionFlags="noKeyPreview" latin:backgroundType="functional" /> <key-style + latin:styleName="toSymbolKeyStyle" + latin:code="!code/key_switch_alpha_symbol" + latin:keyLabel="!text/label_to_symbol_key" + latin:parentStyle="baseForLayoutSwitchKeyStyle" /> + <key-style latin:styleName="toAlphaKeyStyle" latin:code="!code/key_switch_alpha_symbol" latin:keyLabel="!text/label_to_alpha_key" - latin:keyLabelFlags="fontNormal|preserveCase" - latin:keyActionFlags="noKeyPreview" - latin:backgroundType="functional" /> + latin:parentStyle="baseForLayoutSwitchKeyStyle" /> <key-style latin:styleName="toMoreSymbolKeyStyle" latin:code="!code/key_shift" latin:keyLabel="!text/label_to_more_symbol_for_tablet_key" - latin:keyLabelFlags="fontNormal" - latin:keyActionFlags="noKeyPreview" - latin:backgroundType="functional" /> + latin:parentStyle="baseForLayoutSwitchKeyStyle" /> <key-style latin:styleName="backFromMoreSymbolKeyStyle" latin:code="!code/key_shift" latin:keyLabel="!text/label_to_symbol_key" - latin:keyLabelFlags="fontNormal" - latin:keyActionFlags="noKeyPreview" - latin:backgroundType="functional" /> + latin:parentStyle="baseForLayoutSwitchKeyStyle" /> <key-style latin:styleName="comKeyStyle" latin:keyLabel="!text/keylabel_for_popular_domain" diff --git a/java/res/xml/key_styles_common.xml b/java/res/xml/key_styles_common.xml index 162119dab..91ebac1da 100644 --- a/java/res/xml/key_styles_common.xml +++ b/java/res/xml/key_styles_common.xml @@ -134,52 +134,50 @@ latin:code="!code/key_tab" latin:keyIcon="!icon/tab_key" latin:keyIconPreview="!icon/tab_key_preview" /> + <key-style + latin:styleName="baseForLayoutSwitchKeyStyle" + latin:keyLabelFlags="preserveCase" + latin:keyActionFlags="noKeyPreview" + latin:backgroundType="functional" /> <switch> <!-- When this qwerty keyboard has no shortcut keys but shortcut key is enabled, then symbol keyboard will have a shortcut key. That means we should use label_to_symbol_key label and shortcut_for_label icon. --> <case - latin:shortcutKeyEnabled="true" - latin:hasShortcutKey="false" + latin:shortcutKeyOnSymbols="true" > <key-style - latin:styleName="toSymbolKeyStyle" - latin:code="!code/key_switch_alpha_symbol" + latin:styleName="baseForToSymbolKeyStyle" latin:keyIcon="!icon/shortcut_for_label" latin:keyLabel="!text/label_to_symbol_with_microphone_key" latin:keyLabelFlags="withIconRight|preserveCase" - latin:keyActionFlags="noKeyPreview" - latin:backgroundType="functional" /> + latin:parentStyle="baseForLayoutSwitchKeyStyle" /> </case> <default> <key-style - latin:styleName="toSymbolKeyStyle" - latin:code="!code/key_switch_alpha_symbol" + latin:styleName="baseForToSymbolKeyStyle" latin:keyLabel="!text/label_to_symbol_key" - latin:keyLabelFlags="preserveCase" - latin:keyActionFlags="noKeyPreview" - latin:backgroundType="functional" /> + latin:parentStyle="baseForLayoutSwitchKeyStyle" /> </default> </switch> <key-style + latin:styleName="toSymbolKeyStyle" + latin:code="!code/key_switch_alpha_symbol" + latin:parentStyle="baseForToSymbolKeyStyle" /> + <key-style latin:styleName="toAlphaKeyStyle" latin:code="!code/key_switch_alpha_symbol" latin:keyLabel="!text/label_to_alpha_key" - latin:keyLabelFlags="preserveCase" - latin:keyActionFlags="noKeyPreview" - latin:backgroundType="functional" /> + latin:parentStyle="baseForLayoutSwitchKeyStyle" /> <key-style latin:styleName="toMoreSymbolKeyStyle" latin:code="!code/key_shift" latin:keyLabel="!text/label_to_more_symbol_key" - latin:keyActionFlags="noKeyPreview" - latin:backgroundType="functional" /> + latin:parentStyle="baseForLayoutSwitchKeyStyle" /> <key-style latin:styleName="backFromMoreSymbolKeyStyle" latin:code="!code/key_shift" - latin:keyLabel="!text/label_to_symbol_key" - latin:keyActionFlags="noKeyPreview" - latin:backgroundType="functional" /> + latin:parentStyle="baseForToSymbolKeyStyle" /> <key-style latin:styleName="punctuationKeyStyle" latin:keyLabel="." diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardId.java b/java/src/com/android/inputmethod/keyboard/KeyboardId.java index 5e8a8f6bb..b41361515 100644 --- a/java/src/com/android/inputmethod/keyboard/KeyboardId.java +++ b/java/src/com/android/inputmethod/keyboard/KeyboardId.java @@ -71,34 +71,39 @@ public final class KeyboardId { private final EditorInfo mEditorInfo; public final boolean mClobberSettingsKey; public final boolean mShortcutKeyEnabled; - public final boolean mHasShortcutKey; + public final boolean mShortcutKeyOnSymbols; public final boolean mLanguageSwitchKeyEnabled; public final String mCustomActionLabel; + public final boolean mHasShortcutKey; private final int mHashCode; - public KeyboardId(int elementId, InputMethodSubtype subtype, int deviceFormFactor, - int orientation, int width, int mode, EditorInfo editorInfo, boolean clobberSettingsKey, - boolean shortcutKeyEnabled, boolean hasShortcutKey, boolean languageSwitchKeyEnabled) { - mSubtype = subtype; - mLocale = SubtypeLocale.getSubtypeLocale(subtype); - mDeviceFormFactor = deviceFormFactor; - mOrientation = orientation; - mWidth = width; - mMode = mode; + public KeyboardId(final int elementId, final KeyboardLayoutSet.Params params) { + mSubtype = params.mSubtype; + mLocale = SubtypeLocale.getSubtypeLocale(mSubtype); + mDeviceFormFactor = params.mDeviceFormFactor; + mOrientation = params.mOrientation; + mWidth = params.mWidth; + mMode = params.mMode; mElementId = elementId; - mEditorInfo = editorInfo; - mClobberSettingsKey = clobberSettingsKey; - mShortcutKeyEnabled = shortcutKeyEnabled; - mHasShortcutKey = hasShortcutKey; - mLanguageSwitchKeyEnabled = languageSwitchKeyEnabled; - mCustomActionLabel = (editorInfo.actionLabel != null) - ? editorInfo.actionLabel.toString() : null; + mEditorInfo = params.mEditorInfo; + mClobberSettingsKey = params.mNoSettingsKey; + mShortcutKeyEnabled = params.mVoiceKeyEnabled; + mShortcutKeyOnSymbols = mShortcutKeyEnabled && !params.mVoiceKeyOnMain; + mLanguageSwitchKeyEnabled = params.mLanguageSwitchKeyEnabled; + mCustomActionLabel = (mEditorInfo.actionLabel != null) + ? mEditorInfo.actionLabel.toString() : null; + final boolean alphabetMayHaveShortcutKey = isAlphabetKeyboard(elementId) + && !mShortcutKeyOnSymbols; + final boolean symbolsMayHaveShortcutKey = (elementId == KeyboardId.ELEMENT_SYMBOLS) + && mShortcutKeyOnSymbols; + mHasShortcutKey = mShortcutKeyEnabled + && (alphabetMayHaveShortcutKey || symbolsMayHaveShortcutKey); mHashCode = computeHashCode(this); } - private static int computeHashCode(KeyboardId id) { + private static int computeHashCode(final KeyboardId id) { return Arrays.hashCode(new Object[] { id.mDeviceFormFactor, id.mOrientation, @@ -108,7 +113,7 @@ public final class KeyboardId { id.passwordInput(), id.mClobberSettingsKey, id.mShortcutKeyEnabled, - id.mHasShortcutKey, + id.mShortcutKeyOnSymbols, id.mLanguageSwitchKeyEnabled, id.isMultiLine(), id.imeAction(), @@ -119,7 +124,7 @@ public final class KeyboardId { }); } - private boolean equals(KeyboardId other) { + private boolean equals(final KeyboardId other) { if (other == this) return true; return other.mDeviceFormFactor == mDeviceFormFactor @@ -130,7 +135,7 @@ public final class KeyboardId { && other.passwordInput() == passwordInput() && other.mClobberSettingsKey == mClobberSettingsKey && other.mShortcutKeyEnabled == mShortcutKeyEnabled - && other.mHasShortcutKey == mHasShortcutKey + && other.mShortcutKeyOnSymbols == mShortcutKeyOnSymbols && other.mLanguageSwitchKeyEnabled == mLanguageSwitchKeyEnabled && other.isMultiLine() == isMultiLine() && other.imeAction() == imeAction() @@ -140,8 +145,12 @@ public final class KeyboardId { && other.mSubtype.equals(mSubtype); } + private static boolean isAlphabetKeyboard(final int elementId) { + return elementId < ELEMENT_SYMBOLS; + } + public boolean isAlphabetKeyboard() { - return mElementId < ELEMENT_SYMBOLS; + return isAlphabetKeyboard(mElementId); } public boolean navigateNext() { @@ -181,7 +190,7 @@ public final class KeyboardId { } @Override - public boolean equals(Object other) { + public boolean equals(final Object other) { return other instanceof KeyboardId && equals((KeyboardId) other); } @@ -192,7 +201,7 @@ public final class KeyboardId { @Override public String toString() { - return String.format("[%s %s:%s %s-%s:%d %s %s %s%s%s%s%s%s%s%s]", + return String.format("[%s %s:%s %s-%s:%d %s %s %s%s%s%s%s%s%s%s%s]", elementIdToName(mElementId), mLocale, mSubtype.getExtraValueOf(KEYBOARD_LAYOUT_SET), @@ -204,13 +213,14 @@ public final class KeyboardId { (mClobberSettingsKey ? " clobberSettingsKey" : ""), (passwordInput() ? " passwordInput" : ""), (mShortcutKeyEnabled ? " shortcutKeyEnabled" : ""), + (mShortcutKeyOnSymbols ? " shortcutKeyOnSymbols" : ""), (mHasShortcutKey ? " hasShortcutKey" : ""), (mLanguageSwitchKeyEnabled ? " languageSwitchKeyEnabled" : ""), (isMultiLine() ? "isMultiLine" : "") ); } - public static boolean equivalentEditorInfoForKeyboard(EditorInfo a, EditorInfo b) { + public static boolean equivalentEditorInfoForKeyboard(final EditorInfo a, final EditorInfo b) { if (a == null && b == null) return true; if (a == null || b == null) return false; return a.inputType == b.inputType @@ -218,7 +228,7 @@ public final class KeyboardId { && TextUtils.equals(a.privateImeOptions, b.privateImeOptions); } - public static String elementIdToName(int elementId) { + public static String elementIdToName(final int elementId) { switch (elementId) { case ELEMENT_ALPHABET: return "alphabet"; case ELEMENT_ALPHABET_MANUAL_SHIFTED: return "alphabetManualShifted"; @@ -234,8 +244,8 @@ public final class KeyboardId { } } - public static String deviceFormFactor(int devoceFormFactor) { - switch (devoceFormFactor) { + public static String deviceFormFactor(final int deviceFormFactor) { + switch (deviceFormFactor) { case FORM_FACTOR_PHONE: return "phone"; case FORM_FACTOR_TABLET7: return "tablet7"; case FORM_FACTOR_TABLET10: return "tablet10"; @@ -243,7 +253,7 @@ public final class KeyboardId { } } - public static String modeName(int mode) { + public static String modeName(final int mode) { switch (mode) { case MODE_TEXT: return "text"; case MODE_URL: return "url"; @@ -258,7 +268,7 @@ public final class KeyboardId { } } - public static String actionName(int actionId) { + public static String actionName(final int actionId) { return (actionId == IME_ACTION_CUSTOM_LABEL) ? "actionCustomLabel" : EditorInfoCompatUtils.imeActionName(actionId); } diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardLayoutSet.java b/java/src/com/android/inputmethod/keyboard/KeyboardLayoutSet.java index 4d5d7e14e..295047530 100644 --- a/java/src/com/android/inputmethod/keyboard/KeyboardLayoutSet.java +++ b/java/src/com/android/inputmethod/keyboard/KeyboardLayoutSet.java @@ -78,6 +78,7 @@ public final class KeyboardLayoutSet { CollectionUtils.newHashMap(); private static final KeysCache sKeysCache = new KeysCache(); + @SuppressWarnings("serial") public static final class KeyboardLayoutSetException extends RuntimeException { public final KeyboardId mKeyboardId; @@ -93,7 +94,7 @@ public final class KeyboardLayoutSet { public ElementParams() {} } - private static final class Params { + public static final class Params { String mKeyboardLayoutSetName; int mMode; EditorInfo mEditorInfo; @@ -109,7 +110,6 @@ public final class KeyboardLayoutSet { // Sparse array of KeyboardLayoutSet element parameters indexed by element's id. final SparseArray<ElementParams> mKeyboardLayoutSetElementIdToParamsMap = CollectionUtils.newSparseArray(); - public Params() {} } public static void clearKeyboardCache() { @@ -149,7 +149,11 @@ public final class KeyboardLayoutSet { elementParams = mParams.mKeyboardLayoutSetElementIdToParamsMap.get( KeyboardId.ELEMENT_ALPHABET); } - final KeyboardId id = getKeyboardId(keyboardLayoutSetElementId); + // Note: The keyboard for each shift state, and mode are represented as an elementName + // attribute in a keyboard_layout_set XML file. Also each keyboard layout XML resource is + // specified as an elementKeyboard attribute in the file. + // The KeyboardId is an internal key for a Keyboard object. + final KeyboardId id = new KeyboardId(keyboardLayoutSetElementId, mParams); try { return getKeyboard(elementParams, id); } catch (RuntimeException e) { @@ -187,22 +191,6 @@ public final class KeyboardLayoutSet { return keyboard; } - // Note: The keyboard for each locale, shift state, and mode are represented as - // KeyboardLayoutSet element id that is a key in keyboard_set.xml. Also that file specifies - // which XML layout should be used for each keyboard. The KeyboardId is an internal key for - // Keyboard object. - private KeyboardId getKeyboardId(final int keyboardLayoutSetElementId) { - final Params params = mParams; - final boolean isSymbols = (keyboardLayoutSetElementId == KeyboardId.ELEMENT_SYMBOLS - || keyboardLayoutSetElementId == KeyboardId.ELEMENT_SYMBOLS_SHIFTED); - final boolean hasShortcutKey = params.mVoiceKeyEnabled - && (isSymbols != params.mVoiceKeyOnMain); - return new KeyboardId(keyboardLayoutSetElementId, params.mSubtype, params.mDeviceFormFactor, - params.mOrientation, params.mWidth, params.mMode, params.mEditorInfo, - params.mNoSettingsKey, params.mVoiceKeyEnabled, hasShortcutKey, - params.mLanguageSwitchKeyEnabled); - } - public static final class Builder { private final Context mContext; private final String mPackageName; diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardView.java b/java/src/com/android/inputmethod/keyboard/KeyboardView.java index db1691709..61d38745e 100644 --- a/java/src/com/android/inputmethod/keyboard/KeyboardView.java +++ b/java/src/com/android/inputmethod/keyboard/KeyboardView.java @@ -1013,7 +1013,7 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy, public void closing() { dismissAllKeyPreviews(); cancelAllMessages(); - + onCancelMoreKeysPanel(); mInvalidateAllKeys = true; requestLayout(); } @@ -1032,11 +1032,10 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy, } @Override - public boolean dismissMoreKeysPanel() { + public void onCancelMoreKeysPanel() { if (isShowingMoreKeysPanel()) { - return mMoreKeysPanel.dismissMoreKeysPanel(); + mMoreKeysPanel.dismissMoreKeysPanel(); } - return false; } @Override diff --git a/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java b/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java index 7d7eedb17..584d2fe46 100644 --- a/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java +++ b/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java @@ -135,7 +135,6 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack private int mAltCodeKeyWhileTypingAnimAlpha = Constants.Color.ALPHA_OPAQUE; // More keys keyboard - private int mMoreKeysPanelPointerTrackerId; private final WeakHashMap<Key, MoreKeysPanel> mMoreKeysPanelCache = new WeakHashMap<Key, MoreKeysPanel>(); private final boolean mConfigShowMoreKeysKeyboardAtTouchedPoint; @@ -662,7 +661,6 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack } mMoreKeysPanelCache.put(parentKey, moreKeysPanel); } - mMoreKeysPanelPointerTrackerId = tracker.mPointerId; final int[] lastCoords = CoordinateUtils.newInstance(); tracker.getLastCoordinates(lastCoords); @@ -732,14 +730,9 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack final long eventTime = me.getEventTime(); final int index = me.getActionIndex(); final int id = me.getPointerId(index); - final int x, y; - if (mMoreKeysPanel != null && id == mMoreKeysPanelPointerTrackerId) { - x = mMoreKeysPanel.translateX((int)me.getX(index)); - y = mMoreKeysPanel.translateY((int)me.getY(index)); - } else { - x = (int)me.getX(index); - y = (int)me.getY(index); - } + final int x = (int)me.getX(index); + final int y = (int)me.getY(index); + // TODO: This might be moved to the tracker.processMotionEvent() call below. if (ENABLE_USABILITY_STUDY_LOG && action != MotionEvent.ACTION_MOVE) { writeUsabilityStudyLog(me, action, eventTime, index, id, x, y); @@ -800,19 +793,9 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack final int pointerId = me.getPointerId(i); final PointerTracker tracker = PointerTracker.getPointerTracker( pointerId, this); - final int px, py; - final MotionEvent motionEvent; - if (mMoreKeysPanel != null - && tracker.mPointerId == mMoreKeysPanelPointerTrackerId) { - px = mMoreKeysPanel.translateX((int)me.getX(i)); - py = mMoreKeysPanel.translateY((int)me.getY(i)); - motionEvent = null; - } else { - px = (int)me.getX(i); - py = (int)me.getY(i); - motionEvent = me; - } - tracker.onMoveEvent(px, py, eventTime, motionEvent); + final int px = (int)me.getX(i); + final int py = (int)me.getY(i); + tracker.onMoveEvent(px, py, eventTime, me); if (ENABLE_USABILITY_STUDY_LOG) { writeUsabilityStudyLog(me, action, eventTime, i, pointerId, px, py); } @@ -861,13 +844,18 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack @Override public void closing() { super.closing(); - dismissMoreKeysPanel(); + onCancelMoreKeysPanel(); mMoreKeysPanelCache.clear(); } @Override + public void onCancelMoreKeysPanel() { + super.onCancelMoreKeysPanel(); + PointerTracker.dismissAllMoreKeysPanels(); + } + + @Override public boolean onDismissMoreKeysPanel() { - mMoreKeysPanelPointerTrackerId = -1; dimEntireKeyboard(false /* dimmed */); return super.onDismissMoreKeysPanel(); } diff --git a/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboardView.java b/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboardView.java index 16606a1c5..8a5b7dad5 100644 --- a/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboardView.java +++ b/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboardView.java @@ -19,76 +19,28 @@ package com.android.inputmethod.keyboard; import android.content.Context; import android.content.res.Resources; import android.util.AttributeSet; +import android.view.MotionEvent; import android.view.View; -import com.android.inputmethod.keyboard.PointerTracker.DrawingProxy; -import com.android.inputmethod.keyboard.PointerTracker.TimerProxy; import com.android.inputmethod.latin.Constants; import com.android.inputmethod.latin.CoordinateUtils; -import com.android.inputmethod.latin.InputPointers; import com.android.inputmethod.latin.R; /** * A view that renders a virtual {@link MoreKeysKeyboard}. It handles rendering of keys and * detecting key presses and touch movements. */ -public final class MoreKeysKeyboardView extends KeyboardView implements MoreKeysPanel { +public class MoreKeysKeyboardView extends KeyboardView implements MoreKeysPanel { private final int[] mCoordinates = CoordinateUtils.newInstance(); private final KeyDetector mKeyDetector; - private Controller mController; - private KeyboardActionListener mListener; + protected KeyboardActionListener mListener; private int mOriginX; private int mOriginY; + private Key mCurrentKey; - private static final TimerProxy EMPTY_TIMER_PROXY = new TimerProxy.Adapter(); - - private final KeyboardActionListener mMoreKeysKeyboardListener = - new KeyboardActionListener.Adapter() { - @Override - public void onCodeInput(final int primaryCode, final int x, final int y) { - // Because a more keys keyboard doesn't need proximity characters correction, we don't - // send touch event coordinates. - mListener.onCodeInput( - primaryCode, Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE); - } - - @Override - public void onTextInput(final String text) { - mListener.onTextInput(text); - } - - @Override - public void onStartBatchInput() { - mListener.onStartBatchInput(); - } - - @Override - public void onUpdateBatchInput(final InputPointers batchPointers) { - mListener.onUpdateBatchInput(batchPointers); - } - - @Override - public void onEndBatchInput(final InputPointers batchPointers) { - mListener.onEndBatchInput(batchPointers); - } - - @Override - public void onCancelInput() { - mListener.onCancelInput(); - } - - @Override - public void onPressKey(final int primaryCode) { - mListener.onPressKey(primaryCode); - } - - @Override - public void onReleaseKey(final int primaryCode, final boolean withSliding) { - mListener.onReleaseKey(primaryCode, withSliding); - } - }; + private int mActivePointerId; public MoreKeysKeyboardView(final Context context, final AttributeSet attrs) { this(context, attrs, R.attr.moreKeysKeyboardViewStyle); @@ -124,26 +76,6 @@ public final class MoreKeysKeyboardView extends KeyboardView implements MoreKeys } @Override - public KeyDetector getKeyDetector() { - return mKeyDetector; - } - - @Override - public KeyboardActionListener getKeyboardActionListener() { - return mMoreKeysKeyboardListener; - } - - @Override - public DrawingProxy getDrawingProxy() { - return this; - } - - @Override - public TimerProxy getTimerProxy() { - return EMPTY_TIMER_PROXY; - } - - @Override public void setKeyPreviewPopupEnabled(final boolean previewEnabled, final int delay) { // More keys keyboard needs no pop-up key preview displayed, so we pass always false with a // delay of 0. The delay does not matter actually since the popup is not shown anyway. @@ -156,16 +88,14 @@ public final class MoreKeysKeyboardView extends KeyboardView implements MoreKeys mController = controller; mListener = listener; final View container = getContainerView(); - final MoreKeysKeyboard pane = (MoreKeysKeyboard)getKeyboard(); - final int defaultCoordX = pane.getDefaultCoordX(); // The coordinates of panel's left-top corner in parentView's coordinate system. - final int x = pointX - defaultCoordX - container.getPaddingLeft(); + final int x = pointX - getDefaultCoordX() - container.getPaddingLeft(); final int y = pointY - container.getMeasuredHeight() + container.getPaddingBottom(); parentView.getLocationInWindow(mCoordinates); // Ensure the horizontal position of the panel does not extend past the screen edges. final int maxX = parentView.getMeasuredWidth() - container.getMeasuredWidth(); - final int panelX = Math.max(0, Math.min(maxX, x + CoordinateUtils.x(mCoordinates))); + final int panelX = Math.max(0, Math.min(maxX, x)) + CoordinateUtils.x(mCoordinates); final int panelY = y + CoordinateUtils.y(mCoordinates); container.setX(panelX); container.setY(panelY); @@ -175,6 +105,81 @@ public final class MoreKeysKeyboardView extends KeyboardView implements MoreKeys controller.onShowMoreKeysPanel(this); } + /** + * Returns the default x coordinate for showing this panel. + */ + protected int getDefaultCoordX() { + return ((MoreKeysKeyboard)getKeyboard()).getDefaultCoordX(); + } + + @Override + public void onDownEvent(final int x, final int y, final int pointerId, final long eventTime) { + mActivePointerId = pointerId; + onMoveKeyInternal(x, y, pointerId); + } + + @Override + public void onMoveEvent(int x, int y, final int pointerId, long eventTime) { + if (mActivePointerId != pointerId) { + return; + } + final boolean hasOldKey = (mCurrentKey != null); + onMoveKeyInternal(x, y, pointerId); + if (hasOldKey && mCurrentKey == null) { + // If the pointer has moved too far away from any target then cancel the panel. + mController.onCancelMoreKeysPanel(); + } + } + + @Override + public void onUpEvent(final int x, final int y, final int pointerId, final long eventTime) { + if (mCurrentKey != null && mActivePointerId == pointerId) { + updateReleaseKeyGraphics(mCurrentKey); + onCodeInput(mCurrentKey.mCode, x, y); + mCurrentKey = null; + } + } + + /** + * Performs the specific action for this panel when the user presses a key on the panel. + */ + protected void onCodeInput(final int code, final int x, final int y) { + if (code == Constants.CODE_OUTPUT_TEXT) { + mListener.onTextInput(mCurrentKey.getOutputText()); + } else if (code != Constants.CODE_UNSPECIFIED) { + mListener.onCodeInput(code, x, y); + } + } + + private void onMoveKeyInternal(int x, int y, int pointerId) { + if (mActivePointerId != pointerId) { + // Ignore old pointers when newer pointer is active. + return; + } + final Key oldKey = mCurrentKey; + final Key newKey = mKeyDetector.detectHitKey(x, y); + if (newKey != oldKey) { + mCurrentKey = newKey; + invalidateKey(mCurrentKey); + if (oldKey != null) { + updateReleaseKeyGraphics(oldKey); + } + if (newKey != null) { + updatePressKeyGraphics(newKey); + } + } + } + + private void updateReleaseKeyGraphics(final Key key) { + key.onReleased(); + invalidateKey(key); + } + + private void updatePressKeyGraphics(final Key key) { + key.onPressed(); + invalidateKey(key); + } + @Override public boolean dismissMoreKeysPanel() { if (mController == null) return false; @@ -192,6 +197,35 @@ public final class MoreKeysKeyboardView extends KeyboardView implements MoreKeys } @Override + public boolean onTouchEvent(final MotionEvent me) { + final int action = me.getActionMasked(); + final long eventTime = me.getEventTime(); + final int index = me.getActionIndex(); + final int x = (int)me.getX(index); + final int y = (int)me.getY(index); + final int pointerId = me.getPointerId(index); + processMotionEvent(action, x, y, pointerId, eventTime); + return true; + } + + public void processMotionEvent(final int action, final int x, final int y, + final int pointerId, final long eventTime) { + switch (action) { + case MotionEvent.ACTION_DOWN: + case MotionEvent.ACTION_POINTER_DOWN: + onDownEvent(x, y, pointerId, eventTime); + break; + case MotionEvent.ACTION_UP: + case MotionEvent.ACTION_POINTER_UP: + onUpEvent(x, y, pointerId, eventTime); + break; + case MotionEvent.ACTION_MOVE: + onMoveEvent(x, y, pointerId, eventTime); + break; + } + } + + @Override public View getContainerView() { return (View)getParent(); } diff --git a/java/src/com/android/inputmethod/keyboard/MoreKeysPanel.java b/java/src/com/android/inputmethod/keyboard/MoreKeysPanel.java index 8bcddccf3..9c677e5c8 100644 --- a/java/src/com/android/inputmethod/keyboard/MoreKeysPanel.java +++ b/java/src/com/android/inputmethod/keyboard/MoreKeysPanel.java @@ -18,7 +18,7 @@ package com.android.inputmethod.keyboard; import android.view.View; -public interface MoreKeysPanel extends PointerTracker.KeyEventHandler { +public interface MoreKeysPanel { public interface Controller { /** * Add the {@link MoreKeysPanel} to the target view. @@ -27,9 +27,14 @@ public interface MoreKeysPanel extends PointerTracker.KeyEventHandler { public void onShowMoreKeysPanel(final MoreKeysPanel panel); /** - * Remove the current {@link MoreKeysPanel} to the target view. + * Remove the current {@link MoreKeysPanel} from the target view. */ public boolean onDismissMoreKeysPanel(); + + /** + * Instructs the parent to cancel the panel (e.g., when entering a different input mode). + */ + public void onCancelMoreKeysPanel(); } /** @@ -55,6 +60,36 @@ public interface MoreKeysPanel extends PointerTracker.KeyEventHandler { public boolean dismissMoreKeysPanel(); /** + * Process a move event on the more keys panel. + * + * @param x translated x coordinate of the touch point + * @param y translated y coordinate of the touch point + * @param pointerId pointer id touch point + * @param eventTime timestamp of touch point + */ + public void onMoveEvent(final int x, final int y, final int pointerId, final long eventTime); + + /** + * Process a down event on the more keys panel. + * + * @param x translated x coordinate of the touch point + * @param y translated y coordinate of the touch point + * @param pointerId pointer id touch point + * @param eventTime timestamp of touch point + */ + public void onDownEvent(final int x, final int y, final int pointerId, final long eventTime); + + /** + * Process an up event on the more keys panel. + * + * @param x translated x coordinate of the touch point + * @param y translated y coordinate of the touch point + * @param pointerId pointer id touch point + * @param eventTime timestamp of touch point + */ + public void onUpEvent(final int x, final int y, final int pointerId, final long eventTime); + + /** * Translate X-coordinate of touch event to the local X-coordinate of this * {@link MoreKeysPanel}. * diff --git a/java/src/com/android/inputmethod/keyboard/PointerTracker.java b/java/src/com/android/inputmethod/keyboard/PointerTracker.java index a44f3ede0..0f55607a0 100644 --- a/java/src/com/android/inputmethod/keyboard/PointerTracker.java +++ b/java/src/com/android/inputmethod/keyboard/PointerTracker.java @@ -84,7 +84,6 @@ public final class PointerTracker implements PointerTrackerQueue.Element { public void showSlidingKeyInputPreview(PointerTracker tracker); public void dismissSlidingKeyInputPreview(); public void showGesturePreviewTrail(PointerTracker tracker, boolean isOldestTracker); - public boolean dismissMoreKeysPanel(); } public interface TimerProxy { @@ -319,8 +318,8 @@ public final class PointerTracker implements PointerTrackerQueue.Element { // true if this pointer is no longer tracking touch event. private boolean mIsTrackingCanceled; - // true if this pointer has been long-pressed and is showing a more keys panel. - private boolean mIsShowingMoreKeysPanel; + // the more keys panel currently being shown. equals null if no panel is active. + private MoreKeysPanel mMoreKeysPanel; // true if this pointer is in a sliding key input. boolean mIsInSlidingKeyInput; @@ -413,6 +412,17 @@ public final class PointerTracker implements PointerTrackerQueue.Element { } } + public static void dismissAllMoreKeysPanels() { + final int trackersSize = sTrackers.size(); + for (int i = 0; i < trackersSize; ++i) { + final PointerTracker tracker = sTrackers.get(i); + if (tracker.isShowingMoreKeysPanel()) { + tracker.mMoreKeysPanel.dismissMoreKeysPanel(); + tracker.mMoreKeysPanel = null; + } + } + } + private PointerTracker(final int id, final KeyEventHandler handler) { if (handler == null) { throw new NullPointerException(); @@ -716,6 +726,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element { sLastRecognitionPointSize = 0; sLastRecognitionTime = 0; mListener.onStartBatchInput(); + dismissAllMoreKeysPanels(); } mTimerProxy.cancelLongPressTimer(); mDrawingProxy.showGesturePreviewTrail(this, isOldestTrackerInQueue(this)); @@ -812,7 +823,6 @@ public final class PointerTracker implements PointerTrackerQueue.Element { if (DEBUG_EVENT) { printTouchEvent("onDownEvent:", x, y, eventTime); } - mDrawingProxy = handler.getDrawingProxy(); mTimerProxy = handler.getTimerProxy(); setKeyboardActionListener(handler.getKeyboardActionListener()); @@ -848,7 +858,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element { } // A gesture should start only from a non-modifier key. mIsDetectingGesture = (mKeyboard != null) && mKeyboard.mId.isAlphabetKeyboard() - && !mIsShowingMoreKeysPanel && key != null && !key.isModifier(); + && key != null && !key.isModifier(); if (mIsDetectingGesture) { if (getActivePointerTrackerCount() == 1) { sGestureFirstDownTime = eventTime; @@ -858,6 +868,10 @@ public final class PointerTracker implements PointerTrackerQueue.Element { } } + private boolean isShowingMoreKeysPanel() { + return (mMoreKeysPanel != null); + } + private void onDownEventInternal(final int x, final int y, final long eventTime) { Key key = onDownKey(x, y, eventTime); // Sliding key is allowed when 1) enabled by configuration, 2) this pointer starts sliding @@ -905,6 +919,11 @@ public final class PointerTracker implements PointerTrackerQueue.Element { cancelBatchInput(); return; } + // If the MoreKeysPanel is showing then do not attempt to enter gesture mode. However, + // the gestured touch points are still being recorded in case the panel is dismissed. + if (isShowingMoreKeysPanel()) { + return; + } mayStartBatchInput(key); if (sInGesture) { mayUpdateBatchInput(eventTime, key); @@ -920,6 +939,12 @@ public final class PointerTracker implements PointerTrackerQueue.Element { return; } + if (isShowingMoreKeysPanel()) { + final int translatedX = mMoreKeysPanel.translateX(x); + final int translatedY = mMoreKeysPanel.translateY(y); + mMoreKeysPanel.onMoveEvent(translatedX, translatedY, mPointerId, eventTime); + } + if (sShouldHandleGesture && me != null) { // Add historical points to gesture path. final int pointerIndex = me.findPointerIndex(mPointerId); @@ -933,6 +958,10 @@ public final class PointerTracker implements PointerTrackerQueue.Element { } } + if (isShowingMoreKeysPanel()) { + // Do not handle sliding keys (or show key pop-ups) when the MoreKeysPanel is visible. + return; + } onMoveEventInternal(x, y, eventTime); } @@ -964,7 +993,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element { if (ProductionFlag.IS_EXPERIMENTAL) { ResearchLogger.pointerTracker_onMoveEvent(x, y, lastX, lastY); } - onUpEventInternal(eventTime); + onUpEventInternal(x, y, eventTime); onDownEventInternal(x, y, eventTime); } @@ -983,7 +1012,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element { lastX, lastY, Constants.printableCode(oldKey.mCode), x, y, Constants.printableCode(key.mCode))); } - onUpEventInternal(eventTime); + onUpEventInternal(x, y, eventTime); onDownEventInternal(x, y, eventTime); } @@ -1099,7 +1128,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element { sPointerTrackerQueue.releaseAllPointersOlderThan(this, eventTime); } } - onUpEventInternal(eventTime); + onUpEventInternal(x, y, eventTime); sPointerTrackerQueue.remove(this); } @@ -1111,11 +1140,14 @@ public final class PointerTracker implements PointerTrackerQueue.Element { if (DEBUG_EVENT) { printTouchEvent("onPhntEvent:", mLastX, mLastY, eventTime); } - onUpEventInternal(eventTime); + if (isShowingMoreKeysPanel()) { + return; + } + onUpEventInternal(mLastX, mLastY, eventTime); cancelTracking(); } - private void onUpEventInternal(final long eventTime) { + private void onUpEventInternal(final int x, final int y, final long eventTime) { mTimerProxy.cancelKeyTimers(); resetSlidingKeyInput(); mIsDetectingGesture = false; @@ -1123,9 +1155,16 @@ public final class PointerTracker implements PointerTrackerQueue.Element { mCurrentKey = null; // Release the last pressed key. setReleasedKeyGraphics(currentKey); - if (mIsShowingMoreKeysPanel) { - mDrawingProxy.dismissMoreKeysPanel(); - mIsShowingMoreKeysPanel = false; + + if (isShowingMoreKeysPanel()) { + if (!mIsTrackingCanceled) { + final int translatedX = mMoreKeysPanel.translateX(x); + final int translatedY = mMoreKeysPanel.translateY(y); + mMoreKeysPanel.onUpEvent(translatedX, translatedY, mPointerId, eventTime); + } + mMoreKeysPanel.dismissMoreKeysPanel(); + mMoreKeysPanel = null; + return; } if (sInGesture) { @@ -1144,10 +1183,12 @@ public final class PointerTracker implements PointerTrackerQueue.Element { } } - public void onShowMoreKeysPanel(final int x, final int y, final KeyEventHandler handler) { - onLongPressed(); - mIsShowingMoreKeysPanel = true; - onDownEvent(x, y, SystemClock.uptimeMillis(), handler); + public void onShowMoreKeysPanel(final int translatedX, final int translatedY, + final MoreKeysPanel panel) { + setReleasedKeyGraphics(mCurrentKey); + final long eventTime = SystemClock.uptimeMillis(); + mMoreKeysPanel = panel; + mMoreKeysPanel.onDownEvent(translatedX, translatedY, mPointerId, eventTime); } @Override @@ -1179,9 +1220,9 @@ public final class PointerTracker implements PointerTrackerQueue.Element { mTimerProxy.cancelKeyTimers(); setReleasedKeyGraphics(mCurrentKey); resetSlidingKeyInput(); - if (mIsShowingMoreKeysPanel) { - mDrawingProxy.dismissMoreKeysPanel(); - mIsShowingMoreKeysPanel = false; + if (isShowingMoreKeysPanel()) { + mMoreKeysPanel.dismissMoreKeysPanel(); + mMoreKeysPanel = null; } } diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java index 36342688e..da418f41a 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java +++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java @@ -622,6 +622,8 @@ public class KeyboardBuilder<KP extends KeyboardParams> { R.styleable.Keyboard_Case_clobberSettingsKey, id.mClobberSettingsKey); final boolean shortcutKeyEnabledMatched = matchBoolean(a, R.styleable.Keyboard_Case_shortcutKeyEnabled, id.mShortcutKeyEnabled); + final boolean shortcutKeyOnSymbolsMatched = matchBoolean(a, + R.styleable.Keyboard_Case_shortcutKeyOnSymbols, id.mShortcutKeyOnSymbols); final boolean hasShortcutKeyMatched = matchBoolean(a, R.styleable.Keyboard_Case_hasShortcutKey, id.mHasShortcutKey); final boolean languageSwitchKeyEnabledMatched = matchBoolean(a, @@ -640,12 +642,12 @@ public class KeyboardBuilder<KP extends KeyboardParams> { final boolean selected = keyboardLayoutSetElementMatched && modeMatched && navigateNextMatched && navigatePreviousMatched && passwordInputMatched && clobberSettingsKeyMatched && shortcutKeyEnabledMatched - && hasShortcutKeyMatched && languageSwitchKeyEnabledMatched - && isMultiLineMatched && imeActionMatched && localeCodeMatched - && languageCodeMatched && countryCodeMatched; + && shortcutKeyOnSymbolsMatched && hasShortcutKeyMatched + && languageSwitchKeyEnabledMatched && isMultiLineMatched && imeActionMatched + && localeCodeMatched && languageCodeMatched && countryCodeMatched; if (DEBUG) { - startTag("<%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s>%s", TAG_CASE, + startTag("<%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s>%s", TAG_CASE, textAttr(a.getString( R.styleable.Keyboard_Case_keyboardLayoutSetElement), "keyboardLayoutSetElement"), @@ -662,6 +664,8 @@ public class KeyboardBuilder<KP extends KeyboardParams> { "passwordInput"), booleanAttr(a, R.styleable.Keyboard_Case_shortcutKeyEnabled, "shortcutKeyEnabled"), + booleanAttr(a, R.styleable.Keyboard_Case_shortcutKeyOnSymbols, + "shortcutKeyOnSymbols"), booleanAttr(a, R.styleable.Keyboard_Case_hasShortcutKey, "hasShortcutKey"), booleanAttr(a, R.styleable.Keyboard_Case_languageSwitchKeyEnabled, diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java index 9d0564315..6fefb809b 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java +++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java @@ -97,9 +97,6 @@ public final class KeyboardTextsSet { "label_done_key", "label_previous_key", // Other labels. - "label_to_alpha_key", - "label_to_symbol_key", - "label_to_symbol_with_microphone_key", "label_pause_key", "label_wait_key", }; @@ -147,92 +144,95 @@ public final class KeyboardTextsSet { /* 39 */ "keylabel_for_south_slavic_row3_8", /* 40 */ "more_keys_for_cyrillic_ie", /* 41 */ "more_keys_for_cyrillic_i", - /* 42 */ "more_keys_for_single_quote", - /* 43 */ "more_keys_for_double_quote", - /* 44 */ "more_keys_for_tablet_double_quote", - /* 45 */ "more_keys_for_currency_dollar", - /* 46 */ "keylabel_for_currency_generic", - /* 47 */ "more_keys_for_currency_generic", - /* 48 */ "more_keys_for_punctuation", - /* 49 */ "more_keys_for_star", - /* 50 */ "more_keys_for_bullet", - /* 51 */ "more_keys_for_plus", - /* 52 */ "more_keys_for_left_parenthesis", - /* 53 */ "more_keys_for_right_parenthesis", - /* 54 */ "more_keys_for_less_than", - /* 55 */ "more_keys_for_greater_than", - /* 56 */ "more_keys_for_arabic_diacritics", - /* 57 */ "keyhintlabel_for_arabic_diacritics", - /* 58 */ "keylabel_for_symbols_1", - /* 59 */ "keylabel_for_symbols_2", - /* 60 */ "keylabel_for_symbols_3", - /* 61 */ "keylabel_for_symbols_4", - /* 62 */ "keylabel_for_symbols_5", - /* 63 */ "keylabel_for_symbols_6", - /* 64 */ "keylabel_for_symbols_7", - /* 65 */ "keylabel_for_symbols_8", - /* 66 */ "keylabel_for_symbols_9", - /* 67 */ "keylabel_for_symbols_0", - /* 68 */ "additional_more_keys_for_symbols_1", - /* 69 */ "additional_more_keys_for_symbols_2", - /* 70 */ "additional_more_keys_for_symbols_3", - /* 71 */ "additional_more_keys_for_symbols_4", - /* 72 */ "additional_more_keys_for_symbols_5", - /* 73 */ "additional_more_keys_for_symbols_6", - /* 74 */ "additional_more_keys_for_symbols_7", - /* 75 */ "additional_more_keys_for_symbols_8", - /* 76 */ "additional_more_keys_for_symbols_9", - /* 77 */ "additional_more_keys_for_symbols_0", - /* 78 */ "more_keys_for_symbols_1", - /* 79 */ "more_keys_for_symbols_2", - /* 80 */ "more_keys_for_symbols_3", - /* 81 */ "more_keys_for_symbols_4", - /* 82 */ "more_keys_for_symbols_5", - /* 83 */ "more_keys_for_symbols_6", - /* 84 */ "more_keys_for_symbols_7", - /* 85 */ "more_keys_for_symbols_8", - /* 86 */ "more_keys_for_symbols_9", - /* 87 */ "more_keys_for_symbols_0", - /* 88 */ "keylabel_for_comma", - /* 89 */ "more_keys_for_comma", - /* 90 */ "keylabel_for_symbols_question", - /* 91 */ "keylabel_for_symbols_semicolon", - /* 92 */ "keylabel_for_symbols_percent", - /* 93 */ "more_keys_for_symbols_exclamation", - /* 94 */ "more_keys_for_symbols_question", - /* 95 */ "more_keys_for_symbols_semicolon", - /* 96 */ "more_keys_for_symbols_percent", - /* 97 */ "keylabel_for_tablet_comma", - /* 98 */ "keyhintlabel_for_tablet_comma", - /* 99 */ "more_keys_for_tablet_comma", - /* 100 */ "keyhintlabel_for_tablet_period", - /* 101 */ "more_keys_for_tablet_period", - /* 102 */ "keylabel_for_apostrophe", - /* 103 */ "keyhintlabel_for_apostrophe", - /* 104 */ "more_keys_for_apostrophe", - /* 105 */ "more_keys_for_q", - /* 106 */ "more_keys_for_x", - /* 107 */ "keylabel_for_q", - /* 108 */ "keylabel_for_w", - /* 109 */ "keylabel_for_y", - /* 110 */ "keylabel_for_x", - /* 111 */ "keylabel_for_spanish_row2_10", - /* 112 */ "more_keys_for_am_pm", - /* 113 */ "settings_as_more_key", - /* 114 */ "shortcut_as_more_key", - /* 115 */ "action_next_as_more_key", - /* 116 */ "action_previous_as_more_key", - /* 117 */ "label_to_more_symbol_key", - /* 118 */ "label_to_more_symbol_for_tablet_key", - /* 119 */ "label_tab_key", - /* 120 */ "label_to_phone_numeric_key", - /* 121 */ "label_to_phone_symbols_key", - /* 122 */ "label_time_am", - /* 123 */ "label_time_pm", - /* 124 */ "label_to_symbol_key_pcqwerty", - /* 125 */ "keylabel_for_popular_domain", - /* 126 */ "more_keys_for_popular_domain", - /* 127 */ "more_keys_for_smiley", + /* 42 */ "label_to_alpha_key", + /* 43 */ "more_keys_for_single_quote", + /* 44 */ "more_keys_for_double_quote", + /* 45 */ "more_keys_for_tablet_double_quote", + /* 46 */ "more_keys_for_currency_dollar", + /* 47 */ "keylabel_for_currency_generic", + /* 48 */ "more_keys_for_currency_generic", + /* 49 */ "more_keys_for_punctuation", + /* 50 */ "more_keys_for_star", + /* 51 */ "more_keys_for_bullet", + /* 52 */ "more_keys_for_plus", + /* 53 */ "more_keys_for_left_parenthesis", + /* 54 */ "more_keys_for_right_parenthesis", + /* 55 */ "more_keys_for_less_than", + /* 56 */ "more_keys_for_greater_than", + /* 57 */ "more_keys_for_arabic_diacritics", + /* 58 */ "keyhintlabel_for_arabic_diacritics", + /* 59 */ "keylabel_for_symbols_1", + /* 60 */ "keylabel_for_symbols_2", + /* 61 */ "keylabel_for_symbols_3", + /* 62 */ "keylabel_for_symbols_4", + /* 63 */ "keylabel_for_symbols_5", + /* 64 */ "keylabel_for_symbols_6", + /* 65 */ "keylabel_for_symbols_7", + /* 66 */ "keylabel_for_symbols_8", + /* 67 */ "keylabel_for_symbols_9", + /* 68 */ "keylabel_for_symbols_0", + /* 69 */ "label_to_symbol_key", + /* 70 */ "label_to_symbol_with_microphone_key", + /* 71 */ "additional_more_keys_for_symbols_1", + /* 72 */ "additional_more_keys_for_symbols_2", + /* 73 */ "additional_more_keys_for_symbols_3", + /* 74 */ "additional_more_keys_for_symbols_4", + /* 75 */ "additional_more_keys_for_symbols_5", + /* 76 */ "additional_more_keys_for_symbols_6", + /* 77 */ "additional_more_keys_for_symbols_7", + /* 78 */ "additional_more_keys_for_symbols_8", + /* 79 */ "additional_more_keys_for_symbols_9", + /* 80 */ "additional_more_keys_for_symbols_0", + /* 81 */ "more_keys_for_symbols_1", + /* 82 */ "more_keys_for_symbols_2", + /* 83 */ "more_keys_for_symbols_3", + /* 84 */ "more_keys_for_symbols_4", + /* 85 */ "more_keys_for_symbols_5", + /* 86 */ "more_keys_for_symbols_6", + /* 87 */ "more_keys_for_symbols_7", + /* 88 */ "more_keys_for_symbols_8", + /* 89 */ "more_keys_for_symbols_9", + /* 90 */ "more_keys_for_symbols_0", + /* 91 */ "keylabel_for_comma", + /* 92 */ "more_keys_for_comma", + /* 93 */ "keylabel_for_symbols_question", + /* 94 */ "keylabel_for_symbols_semicolon", + /* 95 */ "keylabel_for_symbols_percent", + /* 96 */ "more_keys_for_symbols_exclamation", + /* 97 */ "more_keys_for_symbols_question", + /* 98 */ "more_keys_for_symbols_semicolon", + /* 99 */ "more_keys_for_symbols_percent", + /* 100 */ "keylabel_for_tablet_comma", + /* 101 */ "keyhintlabel_for_tablet_comma", + /* 102 */ "more_keys_for_tablet_comma", + /* 103 */ "keyhintlabel_for_tablet_period", + /* 104 */ "more_keys_for_tablet_period", + /* 105 */ "keylabel_for_apostrophe", + /* 106 */ "keyhintlabel_for_apostrophe", + /* 107 */ "more_keys_for_apostrophe", + /* 108 */ "more_keys_for_q", + /* 109 */ "more_keys_for_x", + /* 110 */ "keylabel_for_q", + /* 111 */ "keylabel_for_w", + /* 112 */ "keylabel_for_y", + /* 113 */ "keylabel_for_x", + /* 114 */ "keylabel_for_spanish_row2_10", + /* 115 */ "more_keys_for_am_pm", + /* 116 */ "settings_as_more_key", + /* 117 */ "shortcut_as_more_key", + /* 118 */ "action_next_as_more_key", + /* 119 */ "action_previous_as_more_key", + /* 120 */ "label_to_more_symbol_key", + /* 121 */ "label_to_more_symbol_for_tablet_key", + /* 122 */ "label_tab_key", + /* 123 */ "label_to_phone_numeric_key", + /* 124 */ "label_to_phone_symbols_key", + /* 125 */ "label_time_am", + /* 126 */ "label_time_pm", + /* 127 */ "label_to_symbol_key_pcqwerty", + /* 128 */ "keylabel_for_popular_domain", + /* 129 */ "more_keys_for_popular_domain", + /* 130 */ "more_keys_for_smiley", }; private static final String EMPTY = ""; @@ -245,38 +245,40 @@ public final class KeyboardTextsSet { EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, /* ~41 */ - /* 42 */ "!fixedColumnOrder!4,\u2018,\u2019,\u201A,\u201B", + // Label for "switch to alphabetic" key. + /* 42 */ "ABC", + /* 43 */ "!fixedColumnOrder!4,\u2018,\u2019,\u201A,\u201B", // TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK. // <string name="more_keys_for_double_quote">!fixedColumnOrder!6,“,”,„,‟,«,»</string> - /* 43 */ "!fixedColumnOrder!4,\u201C,\u201D,\u00AB,\u00BB", + /* 44 */ "!fixedColumnOrder!4,\u201C,\u201D,\u00AB,\u00BB", // TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK. // <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!6,“,”,„,‟,«,»,‘,’,‚,‛</string> - /* 44 */ "!fixedColumnOrder!4,\u201C,\u201D,\u00AB,\u00BB,\u2018,\u2019,\u201A,\u201B", + /* 45 */ "!fixedColumnOrder!4,\u201C,\u201D,\u00AB,\u00BB,\u2018,\u2019,\u201A,\u201B", // U+00A2: "¢" CENT SIGN // U+00A3: "£" POUND SIGN // U+20AC: "€" EURO SIGN // U+00A5: "¥" YEN SIGN // U+20B1: "₱" PESO SIGN - /* 45 */ "\u00A2,\u00A3,\u20AC,\u00A5,\u20B1", - /* 46 */ "$", - /* 47 */ "$,\u00A2,\u20AC,\u00A3,\u00A5,\u20B1", - /* 48 */ "!fixedColumnOrder!8,\",\',#,-,:,!,\\,,?,@,&,\\%,+,;,/,(,)", + /* 46 */ "\u00A2,\u00A3,\u20AC,\u00A5,\u20B1", + /* 47 */ "$", + /* 48 */ "$,\u00A2,\u20AC,\u00A3,\u00A5,\u20B1", + /* 49 */ "!fixedColumnOrder!8,\",\',#,-,:,!,\\,,?,@,&,\\%,+,;,/,(,)", // U+2020: "†" DAGGER // U+2021: "‡" DOUBLE DAGGER // U+2605: "★" BLACK STAR - /* 49 */ "\u2020,\u2021,\u2605", + /* 50 */ "\u2020,\u2021,\u2605", // U+266A: "♪" EIGHTH NOTE // U+2665: "♥" BLACK HEART SUIT // U+2660: "♠" BLACK SPADE SUIT // U+2666: "♦" BLACK DIAMOND SUIT // U+2663: "♣" BLACK CLUB SUIT - /* 50 */ "\u266A,\u2665,\u2660,\u2666,\u2663", + /* 51 */ "\u266A,\u2665,\u2660,\u2666,\u2663", // U+00B1: "±" PLUS-MINUS SIGN - /* 51 */ "\u00B1", + /* 52 */ "\u00B1", // The all letters need to be mirrored are found at // http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt - /* 52 */ "!fixedColumnOrder!3,<,{,[", - /* 53 */ "!fixedColumnOrder!3,>,},]", + /* 53 */ "!fixedColumnOrder!3,<,{,[", + /* 54 */ "!fixedColumnOrder!3,>,},]", // U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK // U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK // U+2264: "≤" LESS-THAN OR EQUAL TO @@ -292,103 +294,108 @@ public final class KeyboardTextsSet { // U+201D: "”" RIGHT DOUBLE QUOTATION MARK // U+201E: "„" DOUBLE LOW-9 QUOTATION MARK // U+201F: "‟" DOUBLE HIGH-REVERSED-9 QUOTATION MARK - /* 54 */ "!fixedColumnOrder!3,\u2039,\u2264,\u00AB", - /* 55 */ "!fixedColumnOrder!3,\u203A,\u2265,\u00BB", - /* 56 */ EMPTY, + /* 55 */ "!fixedColumnOrder!3,\u2039,\u2264,\u00AB", + /* 56 */ "!fixedColumnOrder!3,\u203A,\u2265,\u00BB", /* 57 */ EMPTY, - /* 58 */ "1", - /* 59 */ "2", - /* 60 */ "3", - /* 61 */ "4", - /* 62 */ "5", - /* 63 */ "6", - /* 64 */ "7", - /* 65 */ "8", - /* 66 */ "9", - /* 67 */ "0", - /* 68~ */ + /* 58 */ EMPTY, + /* 59 */ "1", + /* 60 */ "2", + /* 61 */ "3", + /* 62 */ "4", + /* 63 */ "5", + /* 64 */ "6", + /* 65 */ "7", + /* 66 */ "8", + /* 67 */ "9", + /* 68 */ "0", + // Label for "switch to symbols" key. + /* 69 */ "?123", + // Label for "switch to symbols with microphone" key. This string shouldn't include the "mic" + // part because it'll be appended by the code. + /* 70 */ "123", + /* 71~ */ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, - /* ~77 */ + /* ~80 */ // U+00B9: "¹" SUPERSCRIPT ONE // U+00BD: "½" VULGAR FRACTION ONE HALF // U+2153: "⅓" VULGAR FRACTION ONE THIRD // U+00BC: "¼" VULGAR FRACTION ONE QUARTER // U+215B: "⅛" VULGAR FRACTION ONE EIGHTH - /* 78 */ "\u00B9,\u00BD,\u2153,\u00BC,\u215B", + /* 81 */ "\u00B9,\u00BD,\u2153,\u00BC,\u215B", // U+00B2: "²" SUPERSCRIPT TWO // U+2154: "⅔" VULGAR FRACTION TWO THIRDS - /* 79 */ "\u00B2,\u2154", + /* 82 */ "\u00B2,\u2154", // U+00B3: "³" SUPERSCRIPT THREE // U+00BE: "¾" VULGAR FRACTION THREE QUARTERS // U+215C: "⅜" VULGAR FRACTION THREE EIGHTHS - /* 80 */ "\u00B3,\u00BE,\u215C", + /* 83 */ "\u00B3,\u00BE,\u215C", // U+2074: "⁴" SUPERSCRIPT FOUR - /* 81 */ "\u2074", + /* 84 */ "\u2074", // U+215D: "⅝" VULGAR FRACTION FIVE EIGHTHS - /* 82 */ "\u215D", - /* 83 */ EMPTY, - // U+215E: "⅞" VULGAR FRACTION SEVEN EIGHTHS - /* 84 */ "\u215E", - /* 85 */ EMPTY, + /* 85 */ "\u215D", /* 86 */ EMPTY, + // U+215E: "⅞" VULGAR FRACTION SEVEN EIGHTHS + /* 87 */ "\u215E", + /* 88 */ EMPTY, + /* 89 */ EMPTY, // U+207F: "ⁿ" SUPERSCRIPT LATIN SMALL LETTER N // U+2205: "∅" EMPTY SET - /* 87 */ "\u207F,\u2205", - /* 88 */ ",", - /* 89 */ EMPTY, - /* 90 */ "?", - /* 91 */ ";", - /* 92 */ "%", + /* 90 */ "\u207F,\u2205", + /* 91 */ ",", + /* 92 */ EMPTY, + /* 93 */ "?", + /* 94 */ ";", + /* 95 */ "%", // U+00A1: "¡" INVERTED EXCLAMATION MARK - /* 93 */ "\u00A1", + /* 96 */ "\u00A1", // U+00BF: "¿" INVERTED QUESTION MARK - /* 94 */ "\u00BF", - /* 95 */ EMPTY, + /* 97 */ "\u00BF", + /* 98 */ EMPTY, // U+2030: "‰" PER MILLE SIGN - /* 96 */ "\u2030", - /* 97 */ ",", - /* 98 */ "!", - /* 99 */ "!", - /* 100 */ "?", - /* 101 */ "?", - /* 102 */ "\'", - /* 103 */ "\"", - /* 104 */ "\"", - /* 105 */ EMPTY, - /* 106 */ EMPTY, - /* 107 */ "q", - /* 108 */ "w", - /* 109 */ "y", - /* 110 */ "x", + /* 99 */ "\u2030", + /* 100 */ ",", + /* 101 */ "!", + /* 102 */ "!", + /* 103 */ "?", + /* 104 */ "?", + /* 105 */ "\'", + /* 106 */ "\"", + /* 107 */ "\"", + /* 108 */ EMPTY, + /* 109 */ EMPTY, + /* 110 */ "q", + /* 111 */ "w", + /* 112 */ "y", + /* 113 */ "x", // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE - /* 111 */ "\u00F1", - /* 112 */ "!fixedColumnOrder!2,!hasLabels!,!text/label_time_am,!text/label_time_pm", - /* 113 */ "!icon/settings_key|!code/key_settings", - /* 114 */ "!icon/shortcut_key|!code/key_shortcut", - /* 115 */ "!hasLabels!,!text/label_next_key|!code/key_action_next", - /* 116 */ "!hasLabels!,!text/label_previous_key|!code/key_action_previous", + /* 114 */ "\u00F1", + /* 115 */ "!fixedColumnOrder!2,!hasLabels!,!text/label_time_am,!text/label_time_pm", + /* 116 */ "!icon/settings_key|!code/key_settings", + /* 117 */ "!icon/shortcut_key|!code/key_shortcut", + /* 118 */ "!hasLabels!,!text/label_next_key|!code/key_action_next", + /* 119 */ "!hasLabels!,!text/label_previous_key|!code/key_action_previous", // Label for "switch to more symbol" modifier key. Must be short to fit on key! - /* 117 */ "= \\ <", + /* 120 */ "= \\ <", // Label for "switch to more symbol" modifier key on tablets. Must be short to fit on key! - /* 118 */ "~ \\ {", + /* 121 */ "~ \\ {", // Label for "Tab" key. Must be short to fit on key! - /* 119 */ "Tab", + /* 122 */ "Tab", // Label for "switch to phone numeric" key. Must be short to fit on key! - /* 120 */ "123", + /* 123 */ "123", // Label for "switch to phone symbols" key. Must be short to fit on key! // U+FF0A: "*" FULLWIDTH ASTERISK // U+FF03: "#" FULLWIDTH NUMBER SIGN - /* 121 */ "\uFF0A\uFF03", + /* 124 */ "\uFF0A\uFF03", // Key label for "ante meridiem" - /* 122 */ "AM", + /* 125 */ "AM", // Key label for "post meridiem" - /* 123 */ "PM", + /* 126 */ "PM", // Label for "switch to symbols" key on PC QWERTY layout - /* 124 */ "Sym", - /* 125 */ ".com", + /* 127 */ "Sym", + /* 128 */ ".com", // popular web domains for the locale - most popular, displayed on the keyboard - /* 126 */ "!hasLabels!,.net,.org,.gov,.edu", - /* 127 */ "!fixedColumnOrder!5,!hasLabels!,=-O|=-O ,:-P|:-P ,;-)|;-) ,:-(|:-( ,:-)|:-) ,:-!|:-! ,:-$|:-$ ,B-)|B-) ,:O|:O ,:-*|:-* ,:-D|:-D ,:\'(|:\'( ,:-\\\\|:-\\\\ ,O:-)|O:-) ,:-[|:-[ ", + /* 129 */ "!hasLabels!,.net,.org,.gov,.edu", + /* 130 */ "!fixedColumnOrder!5,!hasLabels!,=-O|=-O ,:-P|:-P ,;-)|;-) ,:-(|:-( ,:-)|:-) ,:-!|:-! ,:-$|:-$ ,B-)|B-) ,:O|:O ,:-*|:-* ,:-D|:-D ,:\'(|:\'( ,:-\\\\|:-\\\\ ,O:-)|O:-) ,:-[|:-[ ", }; /* Language af: Afrikaans */ @@ -449,39 +456,46 @@ public final class KeyboardTextsSet { /* 0~ */ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, - /* ~42 */ + null, null, null, null, null, null, null, null, null, null, null, null, + /* ~41 */ + // Label for "switch to alphabetic" key. + // U+0623: "ا" ARABIC LETTER ALEF + // U+200C: ZERO WIDTH NON-JOINER + // U+0628: "ب" ARABIC LETTER BEH + // U+062C: "پ" ARABIC LETTER PEH + /* 42 */ "\u0623\u200C\u0628\u200C\u062C", + /* 43 */ null, // TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK // <string name="more_keys_for_double_quote">“,”,„,‟,«|»,»|«</string> - /* 43 */ "!fixedColumnOrder!4,\u201C,\u201D,\u00AB|\u00BB,\u00BB|\u00AB", + /* 44 */ "!fixedColumnOrder!4,\u201C,\u201D,\u00AB|\u00BB,\u00BB|\u00AB", // TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK // <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!6,“,”,„,‟,«|»,»|«;,‘,’,‚,‛</string> - /* 44 */ "!fixedColumnOrder!4,\u201C,\u201D,\u00AB|\u00BB,\u00BB|\u00AB,\u2018,\u2019,\u201A,\u201B", + /* 45 */ "!fixedColumnOrder!4,\u201C,\u201D,\u00AB|\u00BB,\u00BB|\u00AB,\u2018,\u2019,\u201A,\u201B", // U+00A2: "¢" CENT SIGN // U+00A3: "£" POUND SIGN // U+20AC: "€" EURO SIGN // U+00A5: "¥" YEN SIGN // U+20B1: "₱" PESO SIGN // U+FDFC: "﷼" RIAL SIGN - /* 45 */ "\u00A2,\u00A3,\u20AC,\u00A5,\u20B1,\uFDFC", - /* 46 */ null, + /* 46 */ "\u00A2,\u00A3,\u20AC,\u00A5,\u20B1,\uFDFC", /* 47 */ null, + /* 48 */ null, // U+061F: "؟" ARABIC QUESTION MARK // U+060C: "،" ARABIC COMMA // U+061B: "؛" ARABIC SEMICOLON - /* 48 */ "!fixedColumnOrder!8,\",\',#,-,:,!,\u060C,\u061F,@,&,\\%,+,\u061B,/,(,)", + /* 49 */ "!fixedColumnOrder!8,\",\',#,-,:,!,\u060C,\u061F,@,&,\\%,+,\u061B,/,(,)", // U+2605: "★" BLACK STAR // U+066D: "٭" ARABIC FIVE POINTED STAR - /* 49 */ "\u2605,\u066D", + /* 50 */ "\u2605,\u066D", // U+266A: "♪" EIGHTH NOTE - /* 50 */ "\u266A", - /* 51 */ null, + /* 51 */ "\u266A", + /* 52 */ null, // The all letters need to be mirrored are found at // http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt // U+FD3E: "﴾" ORNATE LEFT PARENTHESIS // U+FD3F: "﴿" ORNATE RIGHT PARENTHESIS - /* 52 */ "!fixedColumnOrder!4,\uFD3E|\uFD3F,<|>,{|},[|]", - /* 53 */ "!fixedColumnOrder!4,\uFD3F|\uFD3E,>|<,}|{,]|[", + /* 53 */ "!fixedColumnOrder!4,\uFD3E|\uFD3F,<|>,{|},[|]", + /* 54 */ "!fixedColumnOrder!4,\uFD3F|\uFD3E,>|<,}|{,]|[", // U+2264: "≤" LESS-THAN OR EQUAL TO // U+2265: "≥" GREATER-THAN EQUAL TO // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK @@ -497,8 +511,8 @@ public final class KeyboardTextsSet { // U+201D: "”" RIGHT DOUBLE QUOTATION MARK // U+201E: "„" DOUBLE LOW-9 QUOTATION MARK // U+201F: "‟" DOUBLE HIGH-REVERSED-9 QUOTATION MARK - /* 54 */ "!fixedColumnOrder!3,\u2039|\u203A,\u2264|\u2265,\u00AB|\u00BB", - /* 55 */ "!fixedColumnOrder!3,\u203A|\u2039,\u2265|\u2264,\u00BB|\u00AB", + /* 55 */ "!fixedColumnOrder!3,\u2039|\u203A,\u2264|\u2265,\u00AB|\u00BB", + /* 56 */ "!fixedColumnOrder!3,\u203A|\u2039,\u2265|\u2264,\u00BB|\u00AB", // U+0655: "ٕ" ARABIC HAMZA BELOW // U+0654: "ٔ" ARABIC HAMZA ABOVE // U+0652: "ْ" ARABIC SUKUN @@ -514,64 +528,70 @@ public final class KeyboardTextsSet { // U+064E: "َ" ARABIC FATHA // U+0640: "ـ" ARABIC TATWEEL // In order to make Tatweel easily distinguishable from other punctuations, we use consecutive Tatweels only for its displayed label. - /* 56 */ "!fixedColumnOrder!7,\u0655,\u0654,\u0652,\u064D,\u064C,\u064B,\u0651,\u0656,\u0670,\u0653,\u0650,\u064F,\u064E,\u0640\u0640\u0640|\u0640", - /* 57 */ "\u0651", + /* 57 */ "!fixedColumnOrder!7,\u0655,\u0654,\u0652,\u064D,\u064C,\u064B,\u0651,\u0656,\u0670,\u0653,\u0650,\u064F,\u064E,\u0640\u0640\u0640|\u0640", + /* 58 */ "\u0651", // U+0661: "١" ARABIC-INDIC DIGIT ONE - /* 58 */ "\u0661", + /* 59 */ "\u0661", // U+0662: "٢" ARABIC-INDIC DIGIT TWO - /* 59 */ "\u0662", + /* 60 */ "\u0662", // U+0663: "٣" ARABIC-INDIC DIGIT THREE - /* 60 */ "\u0663", + /* 61 */ "\u0663", // U+0664: "٤" ARABIC-INDIC DIGIT FOUR - /* 61 */ "\u0664", + /* 62 */ "\u0664", // U+0665: "٥" ARABIC-INDIC DIGIT FIVE - /* 62 */ "\u0665", + /* 63 */ "\u0665", // U+0666: "٦" ARABIC-INDIC DIGIT SIX - /* 63 */ "\u0666", + /* 64 */ "\u0666", // U+0667: "٧" ARABIC-INDIC DIGIT SEVEN - /* 64 */ "\u0667", + /* 65 */ "\u0667", // U+0668: "٨" ARABIC-INDIC DIGIT EIGHT - /* 65 */ "\u0668", + /* 66 */ "\u0668", // U+0669: "٩" ARABIC-INDIC DIGIT NINE - /* 66 */ "\u0669", + /* 67 */ "\u0669", // U+0660: "٠" ARABIC-INDIC DIGIT ZERO - /* 67 */ "\u0660", - /* 68 */ "1", - /* 69 */ "2", - /* 70 */ "3", - /* 71 */ "4", - /* 72 */ "5", - /* 73 */ "6", - /* 74 */ "7", - /* 75 */ "8", - /* 76 */ "9", + /* 68 */ "\u0660", + // Label for "switch to symbols" key. + // U+061F: "؟" ARABIC QUESTION MARK + /* 69 */ "\u0663\u0662\u0661\u061F", + // Label for "switch to symbols with microphone" key. This string shouldn't include the "mic" + // part because it'll be appended by the code. + /* 70 */ "\u0663\u0662\u0661", + /* 71 */ "1", + /* 72 */ "2", + /* 73 */ "3", + /* 74 */ "4", + /* 75 */ "5", + /* 76 */ "6", + /* 77 */ "7", + /* 78 */ "8", + /* 79 */ "9", // U+066B: "٫" ARABIC DECIMAL SEPARATOR // U+066C: "٬" ARABIC THOUSANDS SEPARATOR - /* 77 */ "0,\u066B,\u066C", - /* 78~ */ + /* 80 */ "0,\u066B,\u066C", + /* 81~ */ null, null, null, null, null, null, null, null, null, null, - /* ~87 */ + /* ~90 */ // U+060C: "،" ARABIC COMMA - /* 88 */ "\u060C", - /* 89 */ "\\,", - /* 90 */ "\u061F", - /* 91 */ "\u061B", + /* 91 */ "\u060C", + /* 92 */ "\\,", + /* 93 */ "\u061F", + /* 94 */ "\u061B", // U+066A: "٪" ARABIC PERCENT SIGN - /* 92 */ "\u066A", - /* 93 */ null, - /* 94 */ "?", - /* 95 */ ";", + /* 95 */ "\u066A", + /* 96 */ null, + /* 97 */ "?", + /* 98 */ ";", // U+2030: "‰" PER MILLE SIGN - /* 96 */ "\\%,\u2030", - /* 97~ */ + /* 99 */ "\\%,\u2030", + /* 100~ */ null, null, null, null, null, - /* ~101 */ + /* ~104 */ // U+060C: "،" ARABIC COMMA // U+061B: "؛" ARABIC SEMICOLON // U+061F: "؟" ARABIC QUESTION MARK - /* 102 */ "\u060C", - /* 103 */ "\u061F", - /* 104 */ "\u061F,\u061B,!,:,-,/,\',\"", + /* 105 */ "\u060C", + /* 106 */ "\u061F", + /* 107 */ "\u061F,\u061B,!,:,-,/,\',\"", }; /* Language be: Belarusian */ @@ -600,6 +620,26 @@ public final class KeyboardTextsSet { /* ~39 */ // U+0451: "ё" CYRILLIC SMALL LETTER IO /* 40 */ "\u0451", + /* 41 */ null, + // Label for "switch to alphabetic" key. + // U+0410: "А" CYRILLIC CAPITAL LETTER A + // U+0411: "Б" CYRILLIC CAPITAL LETTER BE + // U+0412: "В" CYRILLIC CAPITAL LETTER VE + /* 42 */ "\u0410\u0411\u0412", + }; + + /* Language bg: Bulgarian */ + private static final String[] LANGUAGE_bg = { + /* 0~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, + /* ~41 */ + // Label for "switch to alphabetic" key. + // U+0410: "А" CYRILLIC CAPITAL LETTER A + // U+0411: "Б" CYRILLIC CAPITAL LETTER BE + // U+0412: "В" CYRILLIC CAPITAL LETTER VE + /* 42 */ "\u0410\u0411\u0412", }; /* Language ca: Catalan */ @@ -835,6 +875,20 @@ public final class KeyboardTextsSet { /* 6 */ "\u00F1,\u0144", }; + /* Language el: Greek */ + private static final String[] LANGUAGE_el = { + /* 0~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, + /* ~41 */ + // Label for "switch to alphabetic" key. + // U+0391: "Α" GREEK CAPITAL LETTER ALPHA + // U+0392: "Β" GREEK CAPITAL LETTER BETA + // U+0393: "Γ" GREEK CAPITAL LETTER GAMMA + /* 42 */ "\u0391\u0392\u0393", + }; + /* Language en: English */ private static final String[] LANGUAGE_en = { // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE @@ -1003,20 +1057,20 @@ public final class KeyboardTextsSet { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, - /* ~104 */ - /* 105 */ "q", - /* 106 */ "x", + null, null, null, null, null, null, null, null, null, null, null, null, null, + /* ~107 */ + /* 108 */ "q", + /* 109 */ "x", // U+015D: "ŝ" LATIN SMALL LETTER S WITH CIRCUMFLEX - /* 107 */ "\u015D", + /* 110 */ "\u015D", // U+011D: "ĝ" LATIN SMALL LETTER G WITH CIRCUMFLEX - /* 108 */ "\u011D", + /* 111 */ "\u011D", // U+016D: "ŭ" LATIN SMALL LETTER U WITH BREVE - /* 109 */ "\u016D", + /* 112 */ "\u016D", // U+0109: "ĉ" LATIN SMALL LETTER C WITH CIRCUMFLEX - /* 110 */ "\u0109", + /* 113 */ "\u0109", // U+0135: "ĵ" LATIN SMALL LETTER J WITH CIRCUMFLEX - /* 111 */ "\u0135", + /* 114 */ "\u0135", }; /* Language es: Spanish */ @@ -1074,25 +1128,25 @@ public final class KeyboardTextsSet { /* 8~ */ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, - /* ~47 */ + null, null, null, null, null, null, null, null, null, null, null, + /* ~48 */ // U+00A1: "¡" INVERTED EXCLAMATION MARK // U+00BF: "¿" INVERTED QUESTION MARK - /* 48 */ "!fixedColumnOrder!9,\u00A1,\",\',#,-,:,!,\\,,?,\u00BF,@,&,\\%,+,;,/,(,)", - /* 49~ */ + /* 49 */ "!fixedColumnOrder!9,\u00A1,\",\',#,-,:,!,\\,,?,\u00BF,@,&,\\%,+,;,/,(,)", + /* 50~ */ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, - /* ~98 */ + null, null, null, null, null, null, null, + /* ~101 */ // U+00A1: "¡" INVERTED EXCLAMATION MARK - /* 99 */ "!,\u00A1", - /* 100 */ null, + /* 102 */ "!,\u00A1", + /* 103 */ null, // U+00BF: "¿" INVERTED QUESTION MARK - /* 101 */ "?,\u00BF", - /* 102 */ "\"", - /* 103 */ "\'", - /* 104 */ "\'", + /* 104 */ "?,\u00BF", + /* 105 */ "\"", + /* 106 */ "\'", + /* 107 */ "\'", }; /* Language et: Estonian */ @@ -1200,15 +1254,22 @@ public final class KeyboardTextsSet { /* 0~ */ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, - /* ~42 */ + null, null, null, null, null, null, null, null, null, null, null, null, + /* ~41 */ + // Label for "switch to alphabetic" key. + // U+0627: "ا" ARABIC LETTER ALEF + // U+200C: ZERO WIDTH NON-JOINER + // U+0628: "ب" ARABIC LETTER BEH + // U+067E: "پ" ARABIC LETTER PEH + /* 42 */ "\u0627\u200C\u0628\u200C\u067E", + /* 43 */ null, // TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK // <string name="more_keys_for_double_quote">“,”,„,‟,«|»,»|«</string> - /* 43 */ "!fixedColumnOrder!4,\u201C,\u201D,\",\'", + /* 44 */ "!fixedColumnOrder!4,\u201C,\u201D,\",\'", // TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK // <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!6,“,”,„,‟,«|»,»|«;,‘,’,‚,‛</string> - /* 44 */ "!fixedColumnOrder!4,\u201C,\u201D,\u00AB|\u00BB,\u00BB|\u00AB,\u2018,\u2019,\u201A,\u201B", - /* 45 */ null, + /* 45 */ "!fixedColumnOrder!4,\u201C,\u201D,\u00AB|\u00BB,\u00BB|\u00AB,\u2018,\u2019,\u201A,\u201B", + /* 46 */ null, // U+FDFC: "﷼" RIAL SIGN // U+060B: "؋" AFGHANI SIGN // U+00A2: "¢" CENT SIGN @@ -1216,24 +1277,24 @@ public final class KeyboardTextsSet { // U+20AC: "€" EURO SIGN // U+00A5: "¥" YEN SIGN // U+20B1: "₱" PESO SIGN - /* 46 */ "\uFDFC", - /* 47 */ "$,\u00A2,\u20AC,\u00A3,\u00A5,\u20B1,\u060B", + /* 47 */ "\uFDFC", + /* 48 */ "$,\u00A2,\u20AC,\u00A3,\u00A5,\u20B1,\u060B", // U+061F: "؟" ARABIC QUESTION MARK // U+060C: "،" ARABIC COMMA // U+061B: "؛" ARABIC SEMICOLON - /* 48 */ "!fixedColumnOrder!8,\",\',#,-,:,!,\u060C,\u061F,@,&,\\%,+,\u061B,/,(,)", + /* 49 */ "!fixedColumnOrder!8,\",\',#,-,:,!,\u060C,\u061F,@,&,\\%,+,\u061B,/,(,)", // U+2605: "★" BLACK STAR // U+066D: "٭" ARABIC FIVE POINTED STAR - /* 49 */ "\u2605,\u066D", + /* 50 */ "\u2605,\u066D", // U+266A: "♪" EIGHTH NOTE - /* 50 */ "\u266A", - /* 51 */ null, + /* 51 */ "\u266A", + /* 52 */ null, // The all letters need to be mirrored are found at // http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt // U+FD3E: "﴾" ORNATE LEFT PARENTHESIS // U+FD3F: "﴿" ORNATE RIGHT PARENTHESIS - /* 52 */ "!fixedColumnOrder!4,\uFD3E|\uFD3F,<|>,{|},[|]", - /* 53 */ "!fixedColumnOrder!4,\uFD3F|\uFD3E,>|<,}|{,]|[", + /* 53 */ "!fixedColumnOrder!4,\uFD3E|\uFD3F,<|>,{|},[|]", + /* 54 */ "!fixedColumnOrder!4,\uFD3F|\uFD3E,>|<,}|{,]|[", // U+2264: "≤" LESS-THAN OR EQUAL TO // U+2265: "≥" GREATER-THAN EQUAL TO // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK @@ -1249,8 +1310,8 @@ public final class KeyboardTextsSet { // U+201D: "”" RIGHT DOUBLE QUOTATION MARK // U+201E: "„" DOUBLE LOW-9 QUOTATION MARK // U+201F: "‟" DOUBLE HIGH-REVERSED-9 QUOTATION MARK - /* 54 */ "!fixedColumnOrder!3,\u2039|\u203A,\u2264|\u2265,<|>", - /* 55 */ "!fixedColumnOrder!3,\u203A|\u2039,\u2265|\u2264,>|<", + /* 55 */ "!fixedColumnOrder!3,\u2039|\u203A,\u2264|\u2265,<|>", + /* 56 */ "!fixedColumnOrder!3,\u203A|\u2039,\u2265|\u2264,>|<", // U+0655: "ٕ" ARABIC HAMZA BELOW // U+0652: "ْ" ARABIC SUKUN // U+0651: "ّ" ARABIC SHADDA @@ -1266,68 +1327,74 @@ public final class KeyboardTextsSet { // U+064E: "َ" ARABIC FATHA // U+0640: "ـ" ARABIC TATWEEL // In order to make Tatweel easily distinguishable from other punctuations, we use consecutive Tatweels only for its displayed label. - /* 56 */ "!fixedColumnOrder!7,\u0655,\u0652,\u0651,\u064C,\u064D,\u064B,\u0654,\u0656,\u0670,\u0653,\u064F,\u0650,\u064E,\u0640\u0640\u0640|\u0640", - /* 57 */ "\u064B", + /* 57 */ "!fixedColumnOrder!7,\u0655,\u0652,\u0651,\u064C,\u064D,\u064B,\u0654,\u0656,\u0670,\u0653,\u064F,\u0650,\u064E,\u0640\u0640\u0640|\u0640", + /* 58 */ "\u064B", // U+06F1: "۱" EXTENDED ARABIC-INDIC DIGIT ONE - /* 58 */ "\u06F1", + /* 59 */ "\u06F1", // U+06F2: "۲" EXTENDED ARABIC-INDIC DIGIT TWO - /* 59 */ "\u06F2", + /* 60 */ "\u06F2", // U+06F3: "۳" EXTENDED ARABIC-INDIC DIGIT THREE - /* 60 */ "\u06F3", + /* 61 */ "\u06F3", // U+06F4: "۴" EXTENDED ARABIC-INDIC DIGIT FOUR - /* 61 */ "\u06F4", + /* 62 */ "\u06F4", // U+06F5: "۵" EXTENDED ARABIC-INDIC DIGIT FIVE - /* 62 */ "\u06F5", + /* 63 */ "\u06F5", // U+06F6: "۶" EXTENDED ARABIC-INDIC DIGIT SIX - /* 63 */ "\u06F6", + /* 64 */ "\u06F6", // U+06F7: "۷" EXTENDED ARABIC-INDIC DIGIT SEVEN - /* 64 */ "\u06F7", + /* 65 */ "\u06F7", // U+06F8: "۸" EXTENDED ARABIC-INDIC DIGIT EIGHT - /* 65 */ "\u06F8", + /* 66 */ "\u06F8", // U+06F9: "۹" EXTENDED ARABIC-INDIC DIGIT NINE - /* 66 */ "\u06F9", + /* 67 */ "\u06F9", // U+06F0: "۰" EXTENDED ARABIC-INDIC DIGIT ZERO - /* 67 */ "\u06F0", - /* 68 */ "1", - /* 69 */ "2", - /* 70 */ "3", - /* 71 */ "4", - /* 72 */ "5", - /* 73 */ "6", - /* 74 */ "7", - /* 75 */ "8", - /* 76 */ "9", + /* 68 */ "\u06F0", + // Label for "switch to symbols" key. + // U+061F: "؟" ARABIC QUESTION MARK + /* 69 */ "\u06F3\u06F2\u06F1\u061F", + // Label for "switch to symbols with microphone" key. This string shouldn't include the "mic" + // part because it'll be appended by the code. + /* 70 */ "\u06F3\u06F2\u06F1", + /* 71 */ "1", + /* 72 */ "2", + /* 73 */ "3", + /* 74 */ "4", + /* 75 */ "5", + /* 76 */ "6", + /* 77 */ "7", + /* 78 */ "8", + /* 79 */ "9", // U+066B: "٫" ARABIC DECIMAL SEPARATOR // U+066C: "٬" ARABIC THOUSANDS SEPARATOR - /* 77 */ "0,\u066B,\u066C", - /* 78~ */ + /* 80 */ "0,\u066B,\u066C", + /* 81~ */ null, null, null, null, null, null, null, null, null, null, - /* ~87 */ + /* ~90 */ // U+060C: "،" ARABIC COMMA - /* 88 */ "\u060C", - /* 89 */ "\\,", - /* 90 */ "\u061F", - /* 91 */ "\u061B", + /* 91 */ "\u060C", + /* 92 */ "\\,", + /* 93 */ "\u061F", + /* 94 */ "\u061B", // U+066A: "٪" ARABIC PERCENT SIGN - /* 92 */ "\u066A", - /* 93 */ null, - /* 94 */ "?", - /* 95 */ ";", + /* 95 */ "\u066A", + /* 96 */ null, + /* 97 */ "?", + /* 98 */ ";", // U+2030: "‰" PER MILLE SIGN - /* 96 */ "\\%,\u2030", + /* 99 */ "\\%,\u2030", // U+060C: "،" ARABIC COMMA // U+061B: "؛" ARABIC SEMICOLON // U+061F: "؟" ARABIC QUESTION MARK // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK - /* 97 */ "\u060C", - /* 98 */ "!", - /* 99 */ "!,\\,", - /* 100 */ "\u061F", - /* 101 */ "\u061F,?", - /* 102 */ "\u060C", + /* 100 */ "\u060C", + /* 101 */ "!", + /* 102 */ "!,\\,", /* 103 */ "\u061F", - /* 104 */ "!fixedColumnOrder!4,:,!,\u061F,\u061B,-,/,\u00AB|\u00BB,\u00BB|\u00AB", + /* 104 */ "\u061F,?", + /* 105 */ "\u060C", + /* 106 */ "\u061F", + /* 107 */ "!fixedColumnOrder!4,:,!,\u061F,\u061B,-,/,\u00AB|\u00BB,\u00BB|\u00AB", }; /* Language fi: Finnish */ @@ -1435,44 +1502,56 @@ public final class KeyboardTextsSet { /* 0~ */ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, - /* ~45 */ + null, null, null, null, null, null, null, null, null, null, null, null, + /* ~41 */ + // Label for "switch to alphabetic" key. + // U+0915: "क" DEVANAGARI LETTER KA + // U+0916: "ख" DEVANAGARI LETTER KHA + // U+0917: "ग" DEVANAGARI LETTER GA + /* 42 */ "\u0915\u0916\u0917", + /* 43~ */ + null, null, null, null, + /* ~46 */ // U+20B9: "₹" INDIAN RUPEE SIGN - /* 46 */ "\u20B9", - /* 47~ */ + /* 47 */ "\u20B9", + /* 48~ */ null, null, null, null, null, null, null, null, null, null, null, - /* ~57 */ + /* ~58 */ // U+0967: "१" DEVANAGARI DIGIT ONE - /* 58 */ "\u0967", + /* 59 */ "\u0967", // U+0968: "२" DEVANAGARI DIGIT TWO - /* 59 */ "\u0968", + /* 60 */ "\u0968", // U+0969: "३" DEVANAGARI DIGIT THREE - /* 60 */ "\u0969", + /* 61 */ "\u0969", // U+096A: "४" DEVANAGARI DIGIT FOUR - /* 61 */ "\u096A", + /* 62 */ "\u096A", // U+096B: "५" DEVANAGARI DIGIT FIVE - /* 62 */ "\u096B", + /* 63 */ "\u096B", // U+096C: "६" DEVANAGARI DIGIT SIX - /* 63 */ "\u096C", + /* 64 */ "\u096C", // U+096D: "७" DEVANAGARI DIGIT SEVEN - /* 64 */ "\u096D", + /* 65 */ "\u096D", // U+096E: "८" DEVANAGARI DIGIT EIGHT - /* 65 */ "\u096E", + /* 66 */ "\u096E", // U+096F: "९" DEVANAGARI DIGIT NINE - /* 66 */ "\u096F", + /* 67 */ "\u096F", // U+0966: "०" DEVANAGARI DIGIT ZERO - /* 67 */ "\u0966", - /* 68 */ "1", - /* 69 */ "2", - /* 70 */ "3", - /* 71 */ "4", - /* 72 */ "5", - /* 73 */ "6", - /* 74 */ "7", - /* 75 */ "8", - /* 76 */ "9", - /* 77 */ "0", + /* 68 */ "\u0966", + // Label for "switch to symbols" key. + /* 69 */ "?\u0967\u0968\u0969", + // Label for "switch to symbols with microphone" key. This string shouldn't include the "mic" + // part because it'll be appended by the code. + /* 70 */ "\u0967\u0968\u0969", + /* 71 */ "1", + /* 72 */ "2", + /* 73 */ "3", + /* 74 */ "4", + /* 75 */ "5", + /* 76 */ "6", + /* 77 */ "7", + /* 78 */ "8", + /* 79 */ "9", + /* 80 */ "0", }; /* Language hr: Croatian */ @@ -1660,29 +1739,35 @@ public final class KeyboardTextsSet { /* 0~ */ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, - /* ~42 */ + null, null, null, null, null, null, null, null, null, null, null, null, + /* ~41 */ + // Label for "switch to alphabetic" key. + // U+05D0: "א" HEBREW LETTER ALEF + // U+05D1: "ב" HEBREW LETTER BET + // U+05D2: "ג" HEBREW LETTER GIMEL + /* 42 */ "\u05D0\u05D1\u05D2", + /* 43 */ null, // TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK // <string name="more_keys_for_double_quote">“,”,„,‟,«|»,»|«</string> - /* 43 */ "!fixedColumnOrder!4,\u201C,\u201D,\u00AB|\u00BB,\u00BB|\u00AB", + /* 44 */ "!fixedColumnOrder!4,\u201C,\u201D,\u00AB|\u00BB,\u00BB|\u00AB", // TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK // <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!6,“,”,„,‟,«|»,»|«;,‘,’,‚,‛</string> - /* 44 */ "!fixedColumnOrder!4,\u201C,\u201D,\u00AB|\u00BB,\u00BB|\u00AB,\u2018,\u2019,\u201A,\u201B", - /* 45 */ null, + /* 45 */ "!fixedColumnOrder!4,\u201C,\u201D,\u00AB|\u00BB,\u00BB|\u00AB,\u2018,\u2019,\u201A,\u201B", + /* 46 */ null, // U+20AA: "₪" NEW SHEQEL SIGN - /* 46 */ "\u20AA", - /* 47 */ null, + /* 47 */ "\u20AA", /* 48 */ null, + /* 49 */ null, // U+2605: "★" BLACK STAR - /* 49 */ "\u2605", - /* 50 */ null, + /* 50 */ "\u2605", + /* 51 */ null, // U+00B1: "±" PLUS-MINUS SIGN // U+FB29: "﬩" HEBREW LETTER ALTERNATIVE PLUS SIGN - /* 51 */ "\u00B1,\uFB29", + /* 52 */ "\u00B1,\uFB29", // The all letters need to be mirrored are found at // http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt - /* 52 */ "!fixedColumnOrder!3,<|>,{|},[|]", - /* 53 */ "!fixedColumnOrder!3,>|<,}|{,]|[", + /* 53 */ "!fixedColumnOrder!3,<|>,{|},[|]", + /* 54 */ "!fixedColumnOrder!3,>|<,}|{,]|[", // U+2264: "≤" LESS-THAN OR EQUAL TO // U+2265: "≥" GREATER-THAN EQUAL TO // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK @@ -1698,8 +1783,22 @@ public final class KeyboardTextsSet { // U+201D: "”" RIGHT DOUBLE QUOTATION MARK // U+201E: "„" DOUBLE LOW-9 QUOTATION MARK // U+201F: "‟" DOUBLE HIGH-REVERSED-9 QUOTATION MARK - /* 54 */ "!fixedColumnOrder!3,\u2039|\u203A,\u2264|\u2265,\u00AB|\u00BB", - /* 55 */ "!fixedColumnOrder!3,\u203A|\u2039,\u2265|\u2264,\u00BB|\u00AB", + /* 55 */ "!fixedColumnOrder!3,\u2039|\u203A,\u2264|\u2265,\u00AB|\u00BB", + /* 56 */ "!fixedColumnOrder!3,\u203A|\u2039,\u2265|\u2264,\u00BB|\u00AB", + }; + + /* Language ka: Georgian */ + private static final String[] LANGUAGE_ka = { + /* 0~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, + /* ~41 */ + // Label for "switch to alphabetic" key. + // U+10D0: "ა" GEORGIAN LETTER AN + // U+10D1: "ბ" GEORGIAN LETTER BAN + // U+10D2: "გ" GEORGIAN LETTER GAN + /* 42 */ "\u10D0\u10D1\u10D2", }; /* Language ky: Kirghiz */ @@ -1733,6 +1832,12 @@ public final class KeyboardTextsSet { /* ~39 */ // U+0451: "ё" CYRILLIC SMALL LETTER IO /* 40 */ "\u0451", + /* 41 */ null, + // Label for "switch to alphabetic" key. + // U+0410: "А" CYRILLIC CAPITAL LETTER A + // U+0411: "Б" CYRILLIC CAPITAL LETTER BE + // U+0412: "В" CYRILLIC CAPITAL LETTER VE + /* 42 */ "\u0410\u0411\u0412", }; /* Language lt: Lithuanian */ @@ -1933,7 +2038,12 @@ public final class KeyboardTextsSet { /* 40 */ "\u0450", // U+045D: "ѝ" CYRILLIC SMALL LETTER I WITH GRAVE /* 41 */ "\u045D", - /* 42 */ null, + // Label for "switch to alphabetic" key. + // U+0410: "А" CYRILLIC CAPITAL LETTER A + // U+0411: "Б" CYRILLIC CAPITAL LETTER BE + // U+0412: "В" CYRILLIC CAPITAL LETTER VE + /* 42 */ "\u0410\u0411\u0412", + /* 43 */ null, // U+2018: "‘" LEFT SINGLE QUOTATION MARK // U+2019: "’" RIGHT SINGLE QUOTATION MARK // U+201A: "‚" SINGLE LOW-9 QUOTATION MARK @@ -1944,10 +2054,10 @@ public final class KeyboardTextsSet { // U+201F: "‟" DOUBLE HIGH-REVERSED-9 QUOTATION MARK // TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK. // <string name="more_keys_for_double_quote">!fixedColumnOrder!6,„,“,”,‟,«,»</string> - /* 43 */ "!fixedColumnOrder!5,\u201E,\u201C,\u201D,\u00AB,\u00BB", + /* 44 */ "!fixedColumnOrder!5,\u201E,\u201C,\u201D,\u00AB,\u00BB", // TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK. // <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!6,“,”,„,‟,«,»,‘,’,‚,‛</string> - /* 44 */ "!fixedColumnOrder!5,\u201E,\u201C,\u201D,\u00AB,\u00BB,\u2018,\u2019,\u201A,\u201B", + /* 45 */ "!fixedColumnOrder!5,\u201E,\u201C,\u201D,\u00AB,\u00BB,\u2018,\u2019,\u201A,\u201B", }; /* Language mn: Mongolian */ @@ -1955,11 +2065,18 @@ public final class KeyboardTextsSet { /* 0~ */ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, - /* ~45 */ + null, null, null, null, null, null, null, null, null, null, null, null, + /* ~41 */ + // Label for "switch to alphabetic" key. + // U+0410: "А" CYRILLIC CAPITAL LETTER A + // U+0411: "Б" CYRILLIC CAPITAL LETTER BE + // U+0412: "В" CYRILLIC CAPITAL LETTER VE + /* 42 */ "\u0410\u0411\u0412", + /* 43~ */ + null, null, null, null, + /* ~46 */ // U+20AE: "₮" TUGRIK SIGN - /* 46 */ "\u20AE", + /* 47 */ "\u20AE", }; /* Language nb: Norwegian Bokmål */ @@ -2239,6 +2356,12 @@ public final class KeyboardTextsSet { /* ~39 */ // U+0451: "ё" CYRILLIC SMALL LETTER IO /* 40 */ "\u0451", + /* 41 */ null, + // Label for "switch to alphabetic" key. + // U+0410: "А" CYRILLIC CAPITAL LETTER A + // U+0411: "Б" CYRILLIC CAPITAL LETTER BE + // U+0412: "В" CYRILLIC CAPITAL LETTER VE + /* 42 */ "\u0410\u0411\u0412", }; /* Language sk: Slovak */ @@ -2388,8 +2511,13 @@ public final class KeyboardTextsSet { /* 40 */ "\u0450", // U+045D: "ѝ" CYRILLIC SMALL LETTER I WITH GRAVE /* 41 */ "\u045D", - /* 42 */ null, // END: More keys definitions for Serbian (Cyrillic) + // Label for "switch to alphabetic" key. + // U+0410: "А" CYRILLIC CAPITAL LETTER A + // U+0411: "Б" CYRILLIC CAPITAL LETTER BE + // U+0412: "В" CYRILLIC CAPITAL LETTER VE + /* 42 */ "\u0410\u0411\u0412", + /* 43 */ null, // U+2018: "‘" LEFT SINGLE QUOTATION MARK // U+2019: "’" RIGHT SINGLE QUOTATION MARK // U+201A: "‚" SINGLE LOW-9 QUOTATION MARK @@ -2400,10 +2528,10 @@ public final class KeyboardTextsSet { // U+201F: "‟" DOUBLE HIGH-REVERSED-9 QUOTATION MARK // TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK. // <string name="more_keys_for_double_quote">!fixedColumnOrder!6,„,“,”,‟,«,»</string> - /* 43 */ "!fixedColumnOrder!5,\u201E,\u201C,\u201D,\u00AB,\u00BB", + /* 44 */ "!fixedColumnOrder!5,\u201E,\u201C,\u201D,\u00AB,\u00BB", // TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK. // <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!6,“,”,„,‟,«,»,‘,’,‚,‛</string> - /* 44 */ "!fixedColumnOrder!5,\u201E,\u201C,\u201D,\u00AB,\u00BB,\u2018,\u2019,\u201A,\u201B", + /* 45 */ "!fixedColumnOrder!5,\u201E,\u201C,\u201D,\u00AB,\u00BB,\u2018,\u2019,\u201A,\u201B", }; /* Language sv: Swedish */ @@ -2504,11 +2632,18 @@ public final class KeyboardTextsSet { /* 0~ */ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, - /* ~45 */ + null, null, null, null, null, null, null, null, null, null, null, null, + /* ~41 */ + // Label for "switch to alphabetic" key. + // U+0E01: "ก" THAI CHARACTER KO KAI + // U+0E02: "ข" THAI CHARACTER KHO KHAI + // U+0E04: "ค" THAI CHARACTER KHO KHWAI + /* 42 */ "\u0E01\u0E02\u0E04", + /* 43~ */ + null, null, null, null, + /* ~46 */ // U+0E3F: "฿" THAI CURRENCY SYMBOL BAHT - /* 46 */ "\u0E3F", + /* 47 */ "\u0E3F", }; /* Language tl: Tagalog */ @@ -2636,10 +2771,18 @@ public final class KeyboardTextsSet { // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN /* 35 */ "\u044A", /* 36~ */ - null, null, null, null, null, null, null, null, null, null, - /* ~45 */ + null, null, null, null, null, null, + /* ~41 */ + // Label for "switch to alphabetic" key. + // U+0410: "А" CYRILLIC CAPITAL LETTER A + // U+0411: "Б" CYRILLIC CAPITAL LETTER BE + // U+0412: "В" CYRILLIC CAPITAL LETTER VE + /* 42 */ "\u0410\u0411\u0412", + /* 43~ */ + null, null, null, null, + /* ~46 */ // U+20B4: "₴" HRYVNIA SIGN - /* 46 */ "\u20B4", + /* 47 */ "\u20B4", }; /* Language vi: Vietnamese */ @@ -2724,10 +2867,10 @@ public final class KeyboardTextsSet { /* 10~ */ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, - /* ~45 */ + null, null, null, null, null, null, null, + /* ~46 */ // U+20AB: "₫" DONG SIGN - /* 46 */ "\u20AB", + /* 47 */ "\u20AB", }; /* Language zu: Zulu */ @@ -2905,10 +3048,12 @@ public final class KeyboardTextsSet { "af", LANGUAGE_af, /* Afrikaans */ "ar", LANGUAGE_ar, /* Arabic */ "be", LANGUAGE_be, /* Belarusian */ + "bg", LANGUAGE_bg, /* Bulgarian */ "ca", LANGUAGE_ca, /* Catalan */ "cs", LANGUAGE_cs, /* Czech */ "da", LANGUAGE_da, /* Danish */ "de", LANGUAGE_de, /* German */ + "el", LANGUAGE_el, /* Greek */ "en", LANGUAGE_en, /* English */ "eo", LANGUAGE_eo, /* Esperanto */ "es", LANGUAGE_es, /* Spanish */ @@ -2922,6 +3067,7 @@ public final class KeyboardTextsSet { "is", LANGUAGE_is, /* Icelandic */ "it", LANGUAGE_it, /* Italian */ "iw", LANGUAGE_iw, /* Hebrew */ + "ka", LANGUAGE_ka, /* Georgian */ "ky", LANGUAGE_ky, /* Kirghiz */ "lt", LANGUAGE_lt, /* Lithuanian */ "lv", LANGUAGE_lv, /* Latvian */ diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java index dcbbfca09..9d52f3a70 100644 --- a/java/src/com/android/inputmethod/latin/LatinIME.java +++ b/java/src/com/android/inputmethod/latin/LatinIME.java @@ -824,6 +824,7 @@ public final class LatinIME extends InputMethodService implements KeyboardAction } // Remove pending messages related to update suggestions mHandler.cancelUpdateSuggestionStrip(); + resetComposingState(true /* alsoResetLastComposedWord */); } @Override diff --git a/java/src/com/android/inputmethod/latin/makedict/BinaryDictInputOutput.java b/java/src/com/android/inputmethod/latin/makedict/BinaryDictInputOutput.java index fb1eb2701..f1a7e97e8 100644 --- a/java/src/com/android/inputmethod/latin/makedict/BinaryDictInputOutput.java +++ b/java/src/com/android/inputmethod/latin/makedict/BinaryDictInputOutput.java @@ -1412,8 +1412,6 @@ public final class BinaryDictInputOutput { private static WeightedString getWordAtAddressWithParentAddress( final FusionDictionaryBufferInterface buffer, final int headerSize, final int address, final FormatOptions options) { - final StringBuilder builder = new StringBuilder(); - int currentAddress = address; int index = FormatSpec.MAX_WORD_LENGTH - 1; int frequency = Integer.MIN_VALUE; diff --git a/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java b/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java index 2f146f86c..89d6c9010 100644 --- a/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java +++ b/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java @@ -294,6 +294,8 @@ public final class AndroidSpellCheckerService extends SpellCheckerService final String[] gatheredSuggestions; final boolean hasRecommendedSuggestions; if (0 == mLength) { + // TODO: the comment below describes what is intended, but in the practice + // mBestSuggestion is only ever set to null so it doesn't work. Fix this. // Either we found no suggestions, or we found some BUT the max length was 0. // If we found some mBestSuggestion will not be null. If it is null, then // we found none, regardless of the max length. diff --git a/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java b/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java index f0017c095..26a304ef8 100644 --- a/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java +++ b/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java @@ -17,66 +17,17 @@ package com.android.inputmethod.latin.suggestions; import android.content.Context; -import android.content.res.Resources; import android.util.AttributeSet; -import android.view.MotionEvent; -import android.view.View; -import com.android.inputmethod.keyboard.KeyDetector; import com.android.inputmethod.keyboard.Keyboard; -import com.android.inputmethod.keyboard.KeyboardActionListener; -import com.android.inputmethod.keyboard.KeyboardView; -import com.android.inputmethod.keyboard.MoreKeysDetector; -import com.android.inputmethod.keyboard.MoreKeysPanel; -import com.android.inputmethod.keyboard.PointerTracker; -import com.android.inputmethod.keyboard.PointerTracker.DrawingProxy; -import com.android.inputmethod.keyboard.PointerTracker.KeyEventHandler; -import com.android.inputmethod.keyboard.PointerTracker.TimerProxy; -import com.android.inputmethod.latin.CoordinateUtils; +import com.android.inputmethod.keyboard.MoreKeysKeyboardView; import com.android.inputmethod.latin.R; /** * A view that renders a virtual {@link MoreSuggestions}. It handles rendering of keys and detecting * key presses and touch movements. */ -public final class MoreSuggestionsView extends KeyboardView implements MoreKeysPanel { - private final int[] mCoordinates = CoordinateUtils.newInstance(); - - final KeyDetector mModalPanelKeyDetector; - private final KeyDetector mSlidingPanelKeyDetector; - - private Controller mController; - KeyboardActionListener mListener; - private int mOriginX; - private int mOriginY; - - static final TimerProxy EMPTY_TIMER_PROXY = new TimerProxy.Adapter(); - - final KeyboardActionListener mSuggestionsPaneListener = - new KeyboardActionListener.Adapter() { - @Override - public void onPressKey(final int primaryCode) { - mListener.onPressKey(primaryCode); - } - - @Override - public void onReleaseKey(final int primaryCode, final boolean withSliding) { - mListener.onReleaseKey(primaryCode, withSliding); - } - - @Override - public void onCodeInput(final int primaryCode, final int x, final int y) { - final int index = primaryCode - MoreSuggestions.SUGGESTION_CODE_BASE; - if (index >= 0 && index < SuggestionStripView.MAX_SUGGESTIONS) { - mListener.onCustomRequest(index); - } - } - - @Override - public void onCancelInput() { - mListener.onCancelInput(); - } - }; +public final class MoreSuggestionsView extends MoreKeysKeyboardView { public MoreSuggestionsView(final Context context, final AttributeSet attrs) { this(context, attrs, R.attr.moreSuggestionsViewStyle); @@ -85,12 +36,12 @@ public final class MoreSuggestionsView extends KeyboardView implements MoreKeysP public MoreSuggestionsView(final Context context, final AttributeSet attrs, final int defStyle) { super(context, attrs, defStyle); + } - final Resources res = context.getResources(); - mModalPanelKeyDetector = new KeyDetector(/* keyHysteresisDistance */ 0); - mSlidingPanelKeyDetector = new MoreKeysDetector( - res.getDimension(R.dimen.more_suggestions_slide_allowance)); - setKeyPreviewPopupEnabled(false, 0); + @Override + protected int getDefaultCoordX() { + final MoreSuggestions pane = (MoreSuggestions)getKeyboard(); + return pane.mOccupiedWidth / 2; } @Override @@ -110,119 +61,11 @@ public final class MoreSuggestionsView extends KeyboardView implements MoreKeysP } @Override - public void setKeyboard(final Keyboard keyboard) { - super.setKeyboard(keyboard); - mModalPanelKeyDetector.setKeyboard(keyboard, -getPaddingLeft(), -getPaddingTop()); - mSlidingPanelKeyDetector.setKeyboard(keyboard, -getPaddingLeft(), - -getPaddingTop() + mVerticalCorrection); - } - - @Override - public KeyDetector getKeyDetector() { - return mSlidingPanelKeyDetector; - } - - @Override - public KeyboardActionListener getKeyboardActionListener() { - return mSuggestionsPaneListener; - } - - @Override - public DrawingProxy getDrawingProxy() { - return this; - } - - @Override - public TimerProxy getTimerProxy() { - return EMPTY_TIMER_PROXY; - } - - @Override - public void setKeyPreviewPopupEnabled(final boolean previewEnabled, final int delay) { - // Suggestions pane needs no pop-up key preview displayed, so we pass always false with a - // delay of 0. The delay does not matter actually since the popup is not shown anyway. - super.setKeyPreviewPopupEnabled(false, 0); - } - - @Override - public void showMoreKeysPanel(final View parentView, final Controller controller, - final int pointX, final int pointY, final KeyboardActionListener listener) { - mController = controller; - mListener = listener; - final View container = getContainerView(); - final MoreSuggestions pane = (MoreSuggestions)getKeyboard(); - final int defaultCoordX = pane.mOccupiedWidth / 2; - // The coordinates of panel's left-top corner in parentView's coordinate system. - final int x = pointX - defaultCoordX - container.getPaddingLeft(); - final int y = pointY - container.getMeasuredHeight() + container.getPaddingBottom(); - - parentView.getLocationInWindow(mCoordinates); - // Ensure the horizontal position of the panel does not extend past the screen edges. - final int maxX = parentView.getMeasuredWidth() - container.getMeasuredWidth(); - final int panelX = Math.max(0, Math.min(maxX, x + CoordinateUtils.x(mCoordinates))); - final int panelY = y + CoordinateUtils.y(mCoordinates); - container.setX(panelX); - container.setY(panelY); - - mOriginX = x + container.getPaddingLeft(); - mOriginY = y + container.getPaddingTop(); - controller.onShowMoreKeysPanel(this); - } - - @Override - public boolean dismissMoreKeysPanel() { - if (mController == null) return false; - return mController.onDismissMoreKeysPanel(); - } - - @Override - public int translateX(final int x) { - return x - mOriginX; - } - - @Override - public int translateY(final int y) { - return y - mOriginY; - } - - private final KeyEventHandler mModalPanelKeyEventHandler = new KeyEventHandler() { - @Override - public KeyDetector getKeyDetector() { - return mModalPanelKeyDetector; - } - - @Override - public KeyboardActionListener getKeyboardActionListener() { - return mSuggestionsPaneListener; - } - - @Override - public DrawingProxy getDrawingProxy() { - return MoreSuggestionsView.this; + public void onCodeInput(final int primaryCode, final int x, final int y) { + final int index = primaryCode - MoreSuggestions.SUGGESTION_CODE_BASE; + if (index >= 0 && index < SuggestionStripView.MAX_SUGGESTIONS) { + mListener.onCustomRequest(index); } - - @Override - public TimerProxy getTimerProxy() { - return EMPTY_TIMER_PROXY; - } - }; - - @Override - public boolean onTouchEvent(final MotionEvent me) { - final int action = me.getAction(); - final long eventTime = me.getEventTime(); - final int index = me.getActionIndex(); - final int id = me.getPointerId(index); - final PointerTracker tracker = PointerTracker.getPointerTracker(id, this); - final int x = (int)me.getX(index); - final int y = (int)me.getY(index); - tracker.processMotionEvent(action, x, y, eventTime, mModalPanelKeyEventHandler); - return true; - } - - @Override - public View getContainerView() { - return (View)getParent(); } @Override diff --git a/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripView.java b/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripView.java index e27fc2a7a..d7b514e8a 100644 --- a/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripView.java +++ b/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripView.java @@ -54,7 +54,6 @@ import com.android.inputmethod.keyboard.KeyboardActionListener; import com.android.inputmethod.keyboard.KeyboardSwitcher; import com.android.inputmethod.keyboard.KeyboardView; import com.android.inputmethod.keyboard.MoreKeysPanel; -import com.android.inputmethod.keyboard.PointerTracker; import com.android.inputmethod.keyboard.ViewLayoutUtils; import com.android.inputmethod.latin.AutoCorrection; import com.android.inputmethod.latin.CollectionUtils; @@ -685,6 +684,11 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick public void onShowMoreKeysPanel(MoreKeysPanel panel) { mKeyboardView.onShowMoreKeysPanel(panel); } + + @Override + public void onCancelMoreKeysPanel() { + dismissMoreSuggestions(); + } }; boolean dismissMoreSuggestions() { @@ -771,7 +775,6 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick final long eventTime = me.getEventTime(); final int index = me.getActionIndex(); final int id = me.getPointerId(index); - final PointerTracker tracker = PointerTracker.getPointerTracker(id, moreKeysPanel); final int x = (int)me.getX(index); final int y = (int)me.getY(index); final int translatedX = moreKeysPanel.translateX(x); @@ -783,7 +786,6 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick // Decided to be in the sliding input mode only when the touch point has been moved // upward. mMoreSuggestionsMode = MORE_SUGGESTIONS_IN_SLIDING_MODE; - tracker.onShowMoreKeysPanel(translatedX, translatedY, moreKeysPanel); } else if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_POINTER_UP) { // Decided to be in the modal input mode mMoreSuggestionsMode = MORE_SUGGESTIONS_IN_MODAL_MODE; @@ -792,7 +794,7 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick } // MORE_SUGGESTIONS_IN_SLIDING_MODE - tracker.processMotionEvent(action, translatedX, translatedY, eventTime, moreKeysPanel); + mMoreSuggestionsView.processMotionEvent(action, translatedX, translatedY, id, eventTime); return true; } |