diff options
Diffstat (limited to 'java')
182 files changed, 3548 insertions, 1761 deletions
diff --git a/java/res/values-af/strings.xml b/java/res/values-af/strings.xml index ce9d784bf..3325f0b65 100644 --- a/java/res/values-af/strings.xml +++ b/java/res/values-af/strings.xml @@ -118,7 +118,15 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Sleutelbordtema"</string> <string name="subtype_en_GB" msgid="88170601942311355">"Engels (VK)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"Engels (VS)"</string> + <string name="subtype_no_language" msgid="141420857808801746">"Geen taal nie"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Geen taal (QWERTY)"</string> + <string name="custom_input_styles_title" msgid="8429952441821251512">"Gepasmaakte invoerstyle"</string> + <string name="add_style" msgid="6163126614514489951">"Voeg styl by"</string> + <string name="add" msgid="8299699805688017798">"Voeg by"</string> + <string name="remove" msgid="4486081658752944606">"Verwyder"</string> + <string name="save" msgid="7646738597196767214">"Stoor"</string> + <string name="subtype_locale" msgid="8576443440738143764">"Taal"</string> + <string name="keyboard_layout_set" msgid="4309233698194565609">"Uitleg"</string> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Bruikbaarheidstudie-modus"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Sleuteldruk se vibrasie-tydsduurinstellings"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Sleuteldruk se klankvolume-instellings"</string> diff --git a/java/res/values-am/strings.xml b/java/res/values-am/strings.xml index 2d898aac6..391784a45 100644 --- a/java/res/values-am/strings.xml +++ b/java/res/values-am/strings.xml @@ -118,8 +118,16 @@ <string name="keyboard_layout" msgid="8451164783510487501">"የቁልፍ ሰሌዳ ገጽታ"</string> <string name="subtype_en_GB" msgid="88170601942311355">"እንግሊዘኛ (የታላቋ ብሪታንያ)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"እንግሊዘኛ (ዩ.ኤስ)"</string> + <string name="subtype_no_language" msgid="141420857808801746">"ምንም ቋንቋ"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"ቋንቋ አልባ (QWERTY)"</string> + <string name="custom_input_styles_title" msgid="8429952441821251512">"የተበጁ የግቤት ስታይሎች"</string> + <string name="add_style" msgid="6163126614514489951">"ስታይል አክል"</string> + <string name="add" msgid="8299699805688017798">"አክል"</string> + <string name="remove" msgid="4486081658752944606">"አስወግድ"</string> + <string name="save" msgid="7646738597196767214">"አስቀምጥ"</string> + <string name="subtype_locale" msgid="8576443440738143764">"ቋንቋ"</string> + <string name="keyboard_layout_set" msgid="4309233698194565609">"አቀማመጥ"</string> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"የተገልጋይነት ጥናት ሁነታ"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"ቁልፍ ተጫን በቅንጅቶች ወቅት ንዝረት"</string> - <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"ቁልፍ ተጫን የድምጽ መጠን ቅንጅቶች"</string> + <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"ቁልፍ ተጫን የድምጽ መጠን ቅንብሮች"</string> </resources> diff --git a/java/res/values-ar/strings.xml b/java/res/values-ar/strings.xml index 5e76d01ed..ced4ea284 100644 --- a/java/res/values-ar/strings.xml +++ b/java/res/values-ar/strings.xml @@ -118,7 +118,23 @@ <string name="keyboard_layout" msgid="8451164783510487501">"مظهر لوحة المفاتيح"</string> <string name="subtype_en_GB" msgid="88170601942311355">"الإنجليزية (المملكة المتحدة)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"الإنجليزية (الولايات المتحدة)"</string> + <!-- no translation found for subtype_no_language (141420857808801746) --> + <skip /> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"بدون لغة (QWERTY)"</string> + <!-- no translation found for custom_input_styles_title (8429952441821251512) --> + <skip /> + <!-- no translation found for add_style (6163126614514489951) --> + <skip /> + <!-- no translation found for add (8299699805688017798) --> + <skip /> + <!-- no translation found for remove (4486081658752944606) --> + <skip /> + <!-- no translation found for save (7646738597196767214) --> + <skip /> + <!-- no translation found for subtype_locale (8576443440738143764) --> + <skip /> + <!-- no translation found for keyboard_layout_set (4309233698194565609) --> + <skip /> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"وضع سهولة الاستخدام"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"إعدادات مدة اهتزاز الضغط على المفاتيح"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"إعدادات مستوى صوت الضغط على المفاتيح"</string> diff --git a/java/res/values-be/strings.xml b/java/res/values-be/strings.xml index 7a2ce94f3..c218edacf 100644 --- a/java/res/values-be/strings.xml +++ b/java/res/values-be/strings.xml @@ -118,7 +118,23 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Тэма клавіятуры"</string> <string name="subtype_en_GB" msgid="88170601942311355">"Англійская (ЗК)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"Англійская (ЗША)"</string> + <!-- no translation found for subtype_no_language (141420857808801746) --> + <skip /> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Мова не выбрана (QWERTY)"</string> + <!-- no translation found for custom_input_styles_title (8429952441821251512) --> + <skip /> + <!-- no translation found for add_style (6163126614514489951) --> + <skip /> + <!-- no translation found for add (8299699805688017798) --> + <skip /> + <!-- no translation found for remove (4486081658752944606) --> + <skip /> + <!-- no translation found for save (7646738597196767214) --> + <skip /> + <!-- no translation found for subtype_locale (8576443440738143764) --> + <skip /> + <!-- no translation found for keyboard_layout_set (4309233698194565609) --> + <skip /> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Рэжым даследвання выкарыстальнасці"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Налады працягласцi вiбрацыi пры нацiску"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Налады гучнасцi пры нацiску"</string> diff --git a/java/res/values-bg/strings.xml b/java/res/values-bg/strings.xml index 9783a8cf0..e2ea926cc 100644 --- a/java/res/values-bg/strings.xml +++ b/java/res/values-bg/strings.xml @@ -118,7 +118,23 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Тема на клавиатурата"</string> <string name="subtype_en_GB" msgid="88170601942311355">"английски (Великобритания)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"английски (САЩ)"</string> + <!-- no translation found for subtype_no_language (141420857808801746) --> + <skip /> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Без език („QWERTY“)"</string> + <!-- no translation found for custom_input_styles_title (8429952441821251512) --> + <skip /> + <!-- no translation found for add_style (6163126614514489951) --> + <skip /> + <!-- no translation found for add (8299699805688017798) --> + <skip /> + <!-- no translation found for remove (4486081658752944606) --> + <skip /> + <!-- no translation found for save (7646738597196767214) --> + <skip /> + <!-- no translation found for subtype_locale (8576443440738143764) --> + <skip /> + <!-- no translation found for keyboard_layout_set (4309233698194565609) --> + <skip /> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Режим за изучаване на използваемостта"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Настройки за продължителност на вибрирането при натискане на клавиш"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Настройки за силата на звука при натискане на клавиш"</string> diff --git a/java/res/values-ca/strings.xml b/java/res/values-ca/strings.xml index 68715fca7..91f715b88 100644 --- a/java/res/values-ca/strings.xml +++ b/java/res/values-ca/strings.xml @@ -118,7 +118,23 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Tema del teclat"</string> <string name="subtype_en_GB" msgid="88170601942311355">"Anglès (Regne Unit)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"Anglès (EUA)"</string> + <!-- no translation found for subtype_no_language (141420857808801746) --> + <skip /> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Cap idioma (QWERTY)"</string> + <!-- no translation found for custom_input_styles_title (8429952441821251512) --> + <skip /> + <!-- no translation found for add_style (6163126614514489951) --> + <skip /> + <!-- no translation found for add (8299699805688017798) --> + <skip /> + <!-- no translation found for remove (4486081658752944606) --> + <skip /> + <!-- no translation found for save (7646738597196767214) --> + <skip /> + <!-- no translation found for subtype_locale (8576443440738143764) --> + <skip /> + <!-- no translation found for keyboard_layout_set (4309233698194565609) --> + <skip /> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Mode d\'estudi d\'usabilitat"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Configuració de la durada de les vibracions per pulsació de tecla"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Configuració del volum de so de pulsació de tecla"</string> diff --git a/java/res/values-cs/strings.xml b/java/res/values-cs/strings.xml index 17073d249..ab00c4e6b 100644 --- a/java/res/values-cs/strings.xml +++ b/java/res/values-cs/strings.xml @@ -118,7 +118,23 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Motiv klávesnice"</string> <string name="subtype_en_GB" msgid="88170601942311355">"angličtina (Spojené království)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"angličtina (USA)"</string> + <!-- no translation found for subtype_no_language (141420857808801746) --> + <skip /> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Žádný jazyk (QWERTY)"</string> + <!-- no translation found for custom_input_styles_title (8429952441821251512) --> + <skip /> + <!-- no translation found for add_style (6163126614514489951) --> + <skip /> + <!-- no translation found for add (8299699805688017798) --> + <skip /> + <!-- no translation found for remove (4486081658752944606) --> + <skip /> + <!-- no translation found for save (7646738597196767214) --> + <skip /> + <!-- no translation found for subtype_locale (8576443440738143764) --> + <skip /> + <!-- no translation found for keyboard_layout_set (4309233698194565609) --> + <skip /> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Režim studie použitelnosti"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Nastavení trvání vibrace při stisku klávesy"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Nastavení hlasitosti zvuku při stisknutí klávesy"</string> diff --git a/java/res/values-da/strings.xml b/java/res/values-da/strings.xml index cd5266017..953ce5564 100644 --- a/java/res/values-da/strings.xml +++ b/java/res/values-da/strings.xml @@ -118,7 +118,23 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Tastaturtema"</string> <string name="subtype_en_GB" msgid="88170601942311355">"Engelsk (Storbritannien)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"Engelsk (USA)"</string> + <!-- no translation found for subtype_no_language (141420857808801746) --> + <skip /> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Ingen sprog (QWERTY)"</string> + <!-- no translation found for custom_input_styles_title (8429952441821251512) --> + <skip /> + <!-- no translation found for add_style (6163126614514489951) --> + <skip /> + <!-- no translation found for add (8299699805688017798) --> + <skip /> + <!-- no translation found for remove (4486081658752944606) --> + <skip /> + <!-- no translation found for save (7646738597196767214) --> + <skip /> + <!-- no translation found for subtype_locale (8576443440738143764) --> + <skip /> + <!-- no translation found for keyboard_layout_set (4309233698194565609) --> + <skip /> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Tilstand for brugsstudie"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Indstillinger for varighed af vibration ved tastetryk"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Indstillinger for lydstyrke ved tastetryk"</string> diff --git a/java/res/values-de/strings.xml b/java/res/values-de/strings.xml index 399069e96..522af6e2e 100644 --- a/java/res/values-de/strings.xml +++ b/java/res/values-de/strings.xml @@ -118,7 +118,23 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Tastaturdesign"</string> <string name="subtype_en_GB" msgid="88170601942311355">"Englisch (Großbritannien)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"Englisch (USA)"</string> + <!-- no translation found for subtype_no_language (141420857808801746) --> + <skip /> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Keine Sprache (QWERTY)"</string> + <!-- no translation found for custom_input_styles_title (8429952441821251512) --> + <skip /> + <!-- no translation found for add_style (6163126614514489951) --> + <skip /> + <!-- no translation found for add (8299699805688017798) --> + <skip /> + <!-- no translation found for remove (4486081658752944606) --> + <skip /> + <!-- no translation found for save (7646738597196767214) --> + <skip /> + <!-- no translation found for subtype_locale (8576443440738143764) --> + <skip /> + <!-- no translation found for keyboard_layout_set (4309233698194565609) --> + <skip /> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Modus der Studie zur Benutzerfreundlichkeit"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Einstellungen für Vibrationsdauer bei Tastendruck"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Einstellungen für Tonlautstärke bei Tastendruck"</string> diff --git a/java/res/values-el/strings.xml b/java/res/values-el/strings.xml index 7552a2865..49c37c42d 100644 --- a/java/res/values-el/strings.xml +++ b/java/res/values-el/strings.xml @@ -118,7 +118,15 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Θέμα πληκτρολογίου"</string> <string name="subtype_en_GB" msgid="88170601942311355">"Αγγλικά (Η.Β.)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"Αγγλικά (Η.Π.Α)"</string> + <string name="subtype_no_language" msgid="141420857808801746">"Καμία γλώσσα"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Καμία γλώσσα (QWERTY)"</string> + <string name="custom_input_styles_title" msgid="8429952441821251512">"Προσαρμοσ. στυλ εισαγ."</string> + <string name="add_style" msgid="6163126614514489951">"Προσθήκη στυλ"</string> + <string name="add" msgid="8299699805688017798">"Προσθήκη"</string> + <string name="remove" msgid="4486081658752944606">"Κατάργηση"</string> + <string name="save" msgid="7646738597196767214">"Αποθήκευση"</string> + <string name="subtype_locale" msgid="8576443440738143764">"Γλώσσα"</string> + <string name="keyboard_layout_set" msgid="4309233698194565609">"Διάταξη"</string> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Λειτουργία μελέτης χρηστικότητας"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Ρυθμίσεις διάρκειας δόνησης κατά το πάτημα πλήκτρων"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Ρυθμίσεις έντασης ήχου κατά το πάτημα πλήκτρων"</string> diff --git a/java/res/values-en-rGB/strings.xml b/java/res/values-en-rGB/strings.xml index ef86365f1..b27089e8a 100644 --- a/java/res/values-en-rGB/strings.xml +++ b/java/res/values-en-rGB/strings.xml @@ -118,7 +118,23 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Keyboard theme"</string> <string name="subtype_en_GB" msgid="88170601942311355">"English (UK)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"English (US)"</string> + <!-- no translation found for subtype_no_language (141420857808801746) --> + <skip /> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"No language (QWERTY)"</string> + <!-- no translation found for custom_input_styles_title (8429952441821251512) --> + <skip /> + <!-- no translation found for add_style (6163126614514489951) --> + <skip /> + <!-- no translation found for add (8299699805688017798) --> + <skip /> + <!-- no translation found for remove (4486081658752944606) --> + <skip /> + <!-- no translation found for save (7646738597196767214) --> + <skip /> + <!-- no translation found for subtype_locale (8576443440738143764) --> + <skip /> + <!-- no translation found for keyboard_layout_set (4309233698194565609) --> + <skip /> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Usability study mode"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Key-press vibration duration settings"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Key-press sound volume settings"</string> diff --git a/java/res/values-es-rUS/strings.xml b/java/res/values-es-rUS/strings.xml index c1f9223c6..20fbf3546 100644 --- a/java/res/values-es-rUS/strings.xml +++ b/java/res/values-es-rUS/strings.xml @@ -118,7 +118,15 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Tema del teclado"</string> <string name="subtype_en_GB" msgid="88170601942311355">"Inglés (Reino Unido)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"Inglés (EE.UU.)"</string> + <string name="subtype_no_language" msgid="141420857808801746">"Ningún idioma"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Ningún idioma (QWERTY)"</string> + <string name="custom_input_styles_title" msgid="8429952441821251512">"Estilos entrada pers."</string> + <string name="add_style" msgid="6163126614514489951">"Agr. estilo"</string> + <string name="add" msgid="8299699805688017798">"Agregar"</string> + <string name="remove" msgid="4486081658752944606">"Eliminar"</string> + <string name="save" msgid="7646738597196767214">"Guardar"</string> + <string name="subtype_locale" msgid="8576443440738143764">"Idioma"</string> + <string name="keyboard_layout_set" msgid="4309233698194565609">"Diseño"</string> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Modo de estudio de usabilidad"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Configuración de la duración de vibraciones al presionar las teclas"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Configuración del volumen de sonio al presionar las teclas"</string> diff --git a/java/res/values-es/strings.xml b/java/res/values-es/strings.xml index 222cd532a..2e32a4140 100644 --- a/java/res/values-es/strings.xml +++ b/java/res/values-es/strings.xml @@ -118,7 +118,15 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Tema de teclado"</string> <string name="subtype_en_GB" msgid="88170601942311355">"inglés (Reino Unido)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"inglés (EE.UU.)"</string> + <string name="subtype_no_language" msgid="141420857808801746">"Ningún idioma"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Ningún idioma (QWERTY)"</string> + <string name="custom_input_styles_title" msgid="8429952441821251512">"Estilos entrada personalizados"</string> + <string name="add_style" msgid="6163126614514489951">"Añadir estilo"</string> + <string name="add" msgid="8299699805688017798">"Añadir"</string> + <string name="remove" msgid="4486081658752944606">"Eliminar"</string> + <string name="save" msgid="7646738597196767214">"Guardar"</string> + <string name="subtype_locale" msgid="8576443440738143764">"Idioma"</string> + <string name="keyboard_layout_set" msgid="4309233698194565609">"Diseño"</string> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Modo de estudio de usabilidad"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Ajustes de duración de vibración al pulsar tecla"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Volumen de sonido al pulsar tecla"</string> diff --git a/java/res/values-et/strings.xml b/java/res/values-et/strings.xml index cb21b4c9c..449e76cfd 100644 --- a/java/res/values-et/strings.xml +++ b/java/res/values-et/strings.xml @@ -118,7 +118,23 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Klaviatuuri teema"</string> <string name="subtype_en_GB" msgid="88170601942311355">"Inglise (UK)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"Inglise (USA)"</string> + <!-- no translation found for subtype_no_language (141420857808801746) --> + <skip /> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Keel puudub (QWERTY)"</string> + <!-- no translation found for custom_input_styles_title (8429952441821251512) --> + <skip /> + <!-- no translation found for add_style (6163126614514489951) --> + <skip /> + <!-- no translation found for add (8299699805688017798) --> + <skip /> + <!-- no translation found for remove (4486081658752944606) --> + <skip /> + <!-- no translation found for save (7646738597196767214) --> + <skip /> + <!-- no translation found for subtype_locale (8576443440738143764) --> + <skip /> + <!-- no translation found for keyboard_layout_set (4309233698194565609) --> + <skip /> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Kasutatavuse uurimisrežiim"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Klahvivajutuse vibratsiooni kestuse seaded"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Klahvivajutuse helitugevuse seaded"</string> diff --git a/java/res/values-fa/strings.xml b/java/res/values-fa/strings.xml index 9f9dde328..554e1bf5b 100644 --- a/java/res/values-fa/strings.xml +++ b/java/res/values-fa/strings.xml @@ -122,7 +122,23 @@ <string name="keyboard_layout" msgid="8451164783510487501">"طرح زمینه صفحه کلید"</string> <string name="subtype_en_GB" msgid="88170601942311355">"انگیسی (UK)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"انگیسی (US)"</string> + <!-- no translation found for subtype_no_language (141420857808801746) --> + <skip /> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"هیچ کدام از زبانها (QWERTY)"</string> + <!-- no translation found for custom_input_styles_title (8429952441821251512) --> + <skip /> + <!-- no translation found for add_style (6163126614514489951) --> + <skip /> + <!-- no translation found for add (8299699805688017798) --> + <skip /> + <!-- no translation found for remove (4486081658752944606) --> + <skip /> + <!-- no translation found for save (7646738597196767214) --> + <skip /> + <!-- no translation found for subtype_locale (8576443440738143764) --> + <skip /> + <!-- no translation found for keyboard_layout_set (4309233698194565609) --> + <skip /> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"حالت بررسی قابلیت استفاده"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"تنظیمات مدت زمان لرزش فشار کلید"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"تنظیمات میزان صدای فشار کلید"</string> diff --git a/java/res/values-fi/strings.xml b/java/res/values-fi/strings.xml index f37247a4f..e11353102 100644 --- a/java/res/values-fi/strings.xml +++ b/java/res/values-fi/strings.xml @@ -118,7 +118,23 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Näppäimistöteema"</string> <string name="subtype_en_GB" msgid="88170601942311355">"englanti (Iso-Britannia)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"englanti (Yhdysvallat)"</string> + <!-- no translation found for subtype_no_language (141420857808801746) --> + <skip /> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Ei kieltä (QWERTY)"</string> + <!-- no translation found for custom_input_styles_title (8429952441821251512) --> + <skip /> + <!-- no translation found for add_style (6163126614514489951) --> + <skip /> + <!-- no translation found for add (8299699805688017798) --> + <skip /> + <!-- no translation found for remove (4486081658752944606) --> + <skip /> + <!-- no translation found for save (7646738597196767214) --> + <skip /> + <!-- no translation found for subtype_locale (8576443440738143764) --> + <skip /> + <!-- no translation found for keyboard_layout_set (4309233698194565609) --> + <skip /> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Käytettävyystutkimustila"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Näppäimenpainalluksen värinän kestoasetukset"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Näppäimenpainalluksen äänenvoimakkuusasetukset"</string> diff --git a/java/res/values-fr/strings.xml b/java/res/values-fr/strings.xml index 96aadfb25..fc26597f3 100644 --- a/java/res/values-fr/strings.xml +++ b/java/res/values-fr/strings.xml @@ -118,7 +118,23 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Thème du clavier"</string> <string name="subtype_en_GB" msgid="88170601942311355">"Anglais (Royaume-Uni)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"Anglais (États-Unis)"</string> + <!-- no translation found for subtype_no_language (141420857808801746) --> + <skip /> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Pas de langue (QWERTY)"</string> + <!-- no translation found for custom_input_styles_title (8429952441821251512) --> + <skip /> + <!-- no translation found for add_style (6163126614514489951) --> + <skip /> + <!-- no translation found for add (8299699805688017798) --> + <skip /> + <!-- no translation found for remove (4486081658752944606) --> + <skip /> + <!-- no translation found for save (7646738597196767214) --> + <skip /> + <!-- no translation found for subtype_locale (8576443440738143764) --> + <skip /> + <!-- no translation found for keyboard_layout_set (4309233698194565609) --> + <skip /> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Mode d\'étude de l\'utilisabilité"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Durée de vibration à chaque pression"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Volume sonore à chaque pression"</string> diff --git a/java/res/values-hi/strings.xml b/java/res/values-hi/strings.xml index a502a8f9a..528982039 100644 --- a/java/res/values-hi/strings.xml +++ b/java/res/values-hi/strings.xml @@ -118,7 +118,23 @@ <string name="keyboard_layout" msgid="8451164783510487501">"कीबोर्ड थीम"</string> <string name="subtype_en_GB" msgid="88170601942311355">"अंग्रेज़ी (यूके)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"अंग्रेज़ी (यूएस)"</string> + <!-- no translation found for subtype_no_language (141420857808801746) --> + <skip /> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"कोई भाषा नहीं (QWERTY)"</string> + <!-- no translation found for custom_input_styles_title (8429952441821251512) --> + <skip /> + <!-- no translation found for add_style (6163126614514489951) --> + <skip /> + <!-- no translation found for add (8299699805688017798) --> + <skip /> + <!-- no translation found for remove (4486081658752944606) --> + <skip /> + <!-- no translation found for save (7646738597196767214) --> + <skip /> + <!-- no translation found for subtype_locale (8576443440738143764) --> + <skip /> + <!-- no translation found for keyboard_layout_set (4309233698194565609) --> + <skip /> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"उपयोगिता अध्ययन मोड"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"कुंजी-स्पर्श कंपन अवधि सेटिंग"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"कुंजी-स्पर्श ध्वनि वॉल्यूम सेटिंग"</string> diff --git a/java/res/values-hr/strings.xml b/java/res/values-hr/strings.xml index 093b22ea0..c0fbd812c 100644 --- a/java/res/values-hr/strings.xml +++ b/java/res/values-hr/strings.xml @@ -118,7 +118,23 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Tema tipkovnice"</string> <string name="subtype_en_GB" msgid="88170601942311355">"Engleski (UK)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"Engleski (SAD)"</string> + <!-- no translation found for subtype_no_language (141420857808801746) --> + <skip /> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Nema jezika (QWERTY)"</string> + <!-- no translation found for custom_input_styles_title (8429952441821251512) --> + <skip /> + <!-- no translation found for add_style (6163126614514489951) --> + <skip /> + <!-- no translation found for add (8299699805688017798) --> + <skip /> + <!-- no translation found for remove (4486081658752944606) --> + <skip /> + <!-- no translation found for save (7646738597196767214) --> + <skip /> + <!-- no translation found for subtype_locale (8576443440738143764) --> + <skip /> + <!-- no translation found for keyboard_layout_set (4309233698194565609) --> + <skip /> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Način studije upotrebljivosti"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Postavke trajanja vibracije kod pritiska tipke"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Postavke glasnoće zvuka kod pritiska tipke"</string> diff --git a/java/res/values-hu/strings.xml b/java/res/values-hu/strings.xml index a414821a6..c001eb528 100644 --- a/java/res/values-hu/strings.xml +++ b/java/res/values-hu/strings.xml @@ -118,7 +118,23 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Billentyűzettéma"</string> <string name="subtype_en_GB" msgid="88170601942311355">"angol (brit)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"angol (amerikai)"</string> + <!-- no translation found for subtype_no_language (141420857808801746) --> + <skip /> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Nincs nyelv (QWERTY)"</string> + <!-- no translation found for custom_input_styles_title (8429952441821251512) --> + <skip /> + <!-- no translation found for add_style (6163126614514489951) --> + <skip /> + <!-- no translation found for add (8299699805688017798) --> + <skip /> + <!-- no translation found for remove (4486081658752944606) --> + <skip /> + <!-- no translation found for save (7646738597196767214) --> + <skip /> + <!-- no translation found for subtype_locale (8576443440738143764) --> + <skip /> + <!-- no translation found for keyboard_layout_set (4309233698194565609) --> + <skip /> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Használhatósági teszt"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Gombnyomás rezgési időtartamának beállításai"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Gombnyomás hangerejének beállításai"</string> diff --git a/java/res/values-in/strings.xml b/java/res/values-in/strings.xml index 9b27268d8..b5d97adea 100644 --- a/java/res/values-in/strings.xml +++ b/java/res/values-in/strings.xml @@ -118,7 +118,23 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Tema keyboard"</string> <string name="subtype_en_GB" msgid="88170601942311355">"Inggris (Inggris)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"Inggris (AS)"</string> + <!-- no translation found for subtype_no_language (141420857808801746) --> + <skip /> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Tanpa bahasa (QWERTY)"</string> + <!-- no translation found for custom_input_styles_title (8429952441821251512) --> + <skip /> + <!-- no translation found for add_style (6163126614514489951) --> + <skip /> + <!-- no translation found for add (8299699805688017798) --> + <skip /> + <!-- no translation found for remove (4486081658752944606) --> + <skip /> + <!-- no translation found for save (7646738597196767214) --> + <skip /> + <!-- no translation found for subtype_locale (8576443440738143764) --> + <skip /> + <!-- no translation found for keyboard_layout_set (4309233698194565609) --> + <skip /> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Modus studi daya guna"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Setelan durasi getaran saat tombol ditekan"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Setelan volume suara saat tombol ditekan"</string> diff --git a/java/res/values-it/strings.xml b/java/res/values-it/strings.xml index a8923be0a..66428883b 100644 --- a/java/res/values-it/strings.xml +++ b/java/res/values-it/strings.xml @@ -118,7 +118,23 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Tema della tastiera"</string> <string name="subtype_en_GB" msgid="88170601942311355">"Inglese (UK)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"Inglese (USA)"</string> + <!-- no translation found for subtype_no_language (141420857808801746) --> + <skip /> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Nessuna lingua (QWERTY)"</string> + <!-- no translation found for custom_input_styles_title (8429952441821251512) --> + <skip /> + <!-- no translation found for add_style (6163126614514489951) --> + <skip /> + <!-- no translation found for add (8299699805688017798) --> + <skip /> + <!-- no translation found for remove (4486081658752944606) --> + <skip /> + <!-- no translation found for save (7646738597196767214) --> + <skip /> + <!-- no translation found for subtype_locale (8576443440738143764) --> + <skip /> + <!-- no translation found for keyboard_layout_set (4309233698194565609) --> + <skip /> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Modalità Studio sull\'usabilità"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Impostazioni durata vibrazione alla pressione di un tasto"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Impostazioni volume audio alla pressione di un tasto"</string> diff --git a/java/res/values-iw/strings.xml b/java/res/values-iw/strings.xml index 569f71d40..f08c03f28 100644 --- a/java/res/values-iw/strings.xml +++ b/java/res/values-iw/strings.xml @@ -118,7 +118,23 @@ <string name="keyboard_layout" msgid="8451164783510487501">"עיצוב מקלדת"</string> <string name="subtype_en_GB" msgid="88170601942311355">"אנגלית (בריטניה)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"אנגלית (ארה\"ב)"</string> + <!-- no translation found for subtype_no_language (141420857808801746) --> + <skip /> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"אין שפה (QWERTY)"</string> + <!-- no translation found for custom_input_styles_title (8429952441821251512) --> + <skip /> + <!-- no translation found for add_style (6163126614514489951) --> + <skip /> + <!-- no translation found for add (8299699805688017798) --> + <skip /> + <!-- no translation found for remove (4486081658752944606) --> + <skip /> + <!-- no translation found for save (7646738597196767214) --> + <skip /> + <!-- no translation found for subtype_locale (8576443440738143764) --> + <skip /> + <!-- no translation found for keyboard_layout_set (4309233698194565609) --> + <skip /> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"מצב מחקר שימושיות"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"הגדרות משך רטט בלחיצה על מקש"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"הגדרות עוצמת קול בלחיצה על מקש"</string> diff --git a/java/res/values-ja/strings.xml b/java/res/values-ja/strings.xml index 8c20b46ad..34f235884 100644 --- a/java/res/values-ja/strings.xml +++ b/java/res/values-ja/strings.xml @@ -118,7 +118,23 @@ <string name="keyboard_layout" msgid="8451164783510487501">"キーボードのテーマ"</string> <string name="subtype_en_GB" msgid="88170601942311355">"英語(英国)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"英語(米国)"</string> + <!-- no translation found for subtype_no_language (141420857808801746) --> + <skip /> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"言語設定なし(QWERTY)"</string> + <!-- no translation found for custom_input_styles_title (8429952441821251512) --> + <skip /> + <!-- no translation found for add_style (6163126614514489951) --> + <skip /> + <!-- no translation found for add (8299699805688017798) --> + <skip /> + <!-- no translation found for remove (4486081658752944606) --> + <skip /> + <!-- no translation found for save (7646738597196767214) --> + <skip /> + <!-- no translation found for subtype_locale (8576443440738143764) --> + <skip /> + <!-- no translation found for keyboard_layout_set (4309233698194565609) --> + <skip /> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"使いやすさの研究モード"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"キー操作バイブの振動時間の設定"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"キー操作音の音量設定"</string> diff --git a/java/res/values-ko/strings.xml b/java/res/values-ko/strings.xml index f9524cc68..15744c9be 100644 --- a/java/res/values-ko/strings.xml +++ b/java/res/values-ko/strings.xml @@ -118,7 +118,23 @@ <string name="keyboard_layout" msgid="8451164783510487501">"키보드 테마"</string> <string name="subtype_en_GB" msgid="88170601942311355">"영어(영국)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"영어(미국)"</string> + <!-- no translation found for subtype_no_language (141420857808801746) --> + <skip /> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"언어가 없음(QWERTY)"</string> + <!-- no translation found for custom_input_styles_title (8429952441821251512) --> + <skip /> + <!-- no translation found for add_style (6163126614514489951) --> + <skip /> + <!-- no translation found for add (8299699805688017798) --> + <skip /> + <!-- no translation found for remove (4486081658752944606) --> + <skip /> + <!-- no translation found for save (7646738597196767214) --> + <skip /> + <!-- no translation found for subtype_locale (8576443440738143764) --> + <skip /> + <!-- no translation found for keyboard_layout_set (4309233698194565609) --> + <skip /> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"가용성 연구 모드"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"키를 누를 때 진동 시간 설정"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"키를 누를 때 효과음 설정"</string> diff --git a/java/res/values-lt/strings.xml b/java/res/values-lt/strings.xml index b08d059f0..43a3f6c64 100644 --- a/java/res/values-lt/strings.xml +++ b/java/res/values-lt/strings.xml @@ -118,7 +118,23 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Klaviatūros tema"</string> <string name="subtype_en_GB" msgid="88170601942311355">"Anglų k. (JK)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"Anglų k. (JAV)"</string> + <!-- no translation found for subtype_no_language (141420857808801746) --> + <skip /> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Nėra kalbos (QWERTY)"</string> + <!-- no translation found for custom_input_styles_title (8429952441821251512) --> + <skip /> + <!-- no translation found for add_style (6163126614514489951) --> + <skip /> + <!-- no translation found for add (8299699805688017798) --> + <skip /> + <!-- no translation found for remove (4486081658752944606) --> + <skip /> + <!-- no translation found for save (7646738597196767214) --> + <skip /> + <!-- no translation found for subtype_locale (8576443440738143764) --> + <skip /> + <!-- no translation found for keyboard_layout_set (4309233698194565609) --> + <skip /> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Tinkamumo tyrimo režimas"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Vibracijos paspaudus mygtuką trukmės nustatymai"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Garso paspaudus mygtuką garsumo nustatymai"</string> diff --git a/java/res/values-lv/strings.xml b/java/res/values-lv/strings.xml index c8023404f..7f5ee14cb 100644 --- a/java/res/values-lv/strings.xml +++ b/java/res/values-lv/strings.xml @@ -118,7 +118,23 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Tastatūras motīvs"</string> <string name="subtype_en_GB" msgid="88170601942311355">"Angļu valoda (Lielbritānija)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"Angļu valoda (ASV)"</string> + <!-- no translation found for subtype_no_language (141420857808801746) --> + <skip /> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Nav valodas (QWERTY)"</string> + <!-- no translation found for custom_input_styles_title (8429952441821251512) --> + <skip /> + <!-- no translation found for add_style (6163126614514489951) --> + <skip /> + <!-- no translation found for add (8299699805688017798) --> + <skip /> + <!-- no translation found for remove (4486081658752944606) --> + <skip /> + <!-- no translation found for save (7646738597196767214) --> + <skip /> + <!-- no translation found for subtype_locale (8576443440738143764) --> + <skip /> + <!-- no translation found for keyboard_layout_set (4309233698194565609) --> + <skip /> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Lietojamības izpētes režīms"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Taustiņu nospiešanas vibrācijas ilguma iestatījumi"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Taustiņu nospiešanas skaņas skaļuma iestatījumi"</string> diff --git a/java/res/values-ms/strings.xml b/java/res/values-ms/strings.xml index 95f9706f9..d131ba8f4 100644 --- a/java/res/values-ms/strings.xml +++ b/java/res/values-ms/strings.xml @@ -118,7 +118,23 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Tema papan kekunci"</string> <string name="subtype_en_GB" msgid="88170601942311355">"Bahasa Inggeris (UK)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"Bahasa Inggeris (AS)"</string> + <!-- no translation found for subtype_no_language (141420857808801746) --> + <skip /> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Tiada bahasa (QWERTY)"</string> + <!-- no translation found for custom_input_styles_title (8429952441821251512) --> + <skip /> + <!-- no translation found for add_style (6163126614514489951) --> + <skip /> + <!-- no translation found for add (8299699805688017798) --> + <skip /> + <!-- no translation found for remove (4486081658752944606) --> + <skip /> + <!-- no translation found for save (7646738597196767214) --> + <skip /> + <!-- no translation found for subtype_locale (8576443440738143764) --> + <skip /> + <!-- no translation found for keyboard_layout_set (4309233698194565609) --> + <skip /> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Mod kajian kebolehgunaan"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Tetapan tempoh getaran tekan kekunci"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Tetapan kelantangan bunyi tekanan kekunci"</string> diff --git a/java/res/values-nb/strings.xml b/java/res/values-nb/strings.xml index 28e4e9798..96a9f7c96 100644 --- a/java/res/values-nb/strings.xml +++ b/java/res/values-nb/strings.xml @@ -118,7 +118,23 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Tastaturtema"</string> <string name="subtype_en_GB" msgid="88170601942311355">"Engelsk (Storbritannia)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"Engelsk (USA)"</string> + <!-- no translation found for subtype_no_language (141420857808801746) --> + <skip /> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Ingen språk (QWERTY)"</string> + <!-- no translation found for custom_input_styles_title (8429952441821251512) --> + <skip /> + <!-- no translation found for add_style (6163126614514489951) --> + <skip /> + <!-- no translation found for add (8299699805688017798) --> + <skip /> + <!-- no translation found for remove (4486081658752944606) --> + <skip /> + <!-- no translation found for save (7646738597196767214) --> + <skip /> + <!-- no translation found for subtype_locale (8576443440738143764) --> + <skip /> + <!-- no translation found for keyboard_layout_set (4309233698194565609) --> + <skip /> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Nyttighetsmodus"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Innstillinger for vibrasjonsvarighet ved tastetrykk"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Innstillinger for lydstyrke ved tastetrykk"</string> diff --git a/java/res/values-nl/strings.xml b/java/res/values-nl/strings.xml index 7ba51bc7e..476562c37 100644 --- a/java/res/values-nl/strings.xml +++ b/java/res/values-nl/strings.xml @@ -118,7 +118,23 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Toetsenbordthema"</string> <string name="subtype_en_GB" msgid="88170601942311355">"Engels (GB)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"Engels (VS)"</string> + <!-- no translation found for subtype_no_language (141420857808801746) --> + <skip /> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Geen taal (QWERTY)"</string> + <!-- no translation found for custom_input_styles_title (8429952441821251512) --> + <skip /> + <!-- no translation found for add_style (6163126614514489951) --> + <skip /> + <!-- no translation found for add (8299699805688017798) --> + <skip /> + <!-- no translation found for remove (4486081658752944606) --> + <skip /> + <!-- no translation found for save (7646738597196767214) --> + <skip /> + <!-- no translation found for subtype_locale (8576443440738143764) --> + <skip /> + <!-- no translation found for keyboard_layout_set (4309233698194565609) --> + <skip /> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Modus voor gebruiksvriendelijkheidsonderzoek"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Instellingen voor trillingsduur bij druk op een toets"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Instellingen voor geluidsvolume bij druk op een toets"</string> diff --git a/java/res/values-pl/strings.xml b/java/res/values-pl/strings.xml index 49f751813..8983dea71 100644 --- a/java/res/values-pl/strings.xml +++ b/java/res/values-pl/strings.xml @@ -118,7 +118,15 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Motyw klawiatury"</string> <string name="subtype_en_GB" msgid="88170601942311355">"Angielska (Wielka Brytania)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"Angielska (Stany Zjednoczone)"</string> + <string name="subtype_no_language" msgid="141420857808801746">"Brak języka"</string> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Brak języka (QWERTY)"</string> + <string name="custom_input_styles_title" msgid="8429952441821251512">"Style niestandardowe"</string> + <string name="add_style" msgid="6163126614514489951">"Dodaj styl"</string> + <string name="add" msgid="8299699805688017798">"Dodaj"</string> + <string name="remove" msgid="4486081658752944606">"Usuń"</string> + <string name="save" msgid="7646738597196767214">"Zapisz"</string> + <string name="subtype_locale" msgid="8576443440738143764">"Język"</string> + <string name="keyboard_layout_set" msgid="4309233698194565609">"Układ"</string> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Tryb badania przydatności"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Czas trwania wibracji przy naciśnięciu"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Głośność dźwięku przy naciśnięciu"</string> diff --git a/java/res/values-pt-rPT/strings.xml b/java/res/values-pt-rPT/strings.xml index 037ceb915..6ebf932c6 100644 --- a/java/res/values-pt-rPT/strings.xml +++ b/java/res/values-pt-rPT/strings.xml @@ -118,7 +118,23 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Tema do teclado"</string> <string name="subtype_en_GB" msgid="88170601942311355">"Inglês (RU)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"Inglês (EUA)"</string> + <!-- no translation found for subtype_no_language (141420857808801746) --> + <skip /> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Nenhum idioma (QWERTY)"</string> + <!-- no translation found for custom_input_styles_title (8429952441821251512) --> + <skip /> + <!-- no translation found for add_style (6163126614514489951) --> + <skip /> + <!-- no translation found for add (8299699805688017798) --> + <skip /> + <!-- no translation found for remove (4486081658752944606) --> + <skip /> + <!-- no translation found for save (7646738597196767214) --> + <skip /> + <!-- no translation found for subtype_locale (8576443440738143764) --> + <skip /> + <!-- no translation found for keyboard_layout_set (4309233698194565609) --> + <skip /> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Modo de estudo da capacidade de utilização"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Definições de duração da vibração ao premir as teclas"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Definições de volume de som ao premir as teclas"</string> diff --git a/java/res/values-pt/strings.xml b/java/res/values-pt/strings.xml index 196988845..3c31ab219 100644 --- a/java/res/values-pt/strings.xml +++ b/java/res/values-pt/strings.xml @@ -118,7 +118,23 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Tema do teclado"</string> <string name="subtype_en_GB" msgid="88170601942311355">"Inglês (Reino Unido)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"Inglês (EUA)"</string> + <!-- no translation found for subtype_no_language (141420857808801746) --> + <skip /> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Nenhum idioma (QWERTY)"</string> + <!-- no translation found for custom_input_styles_title (8429952441821251512) --> + <skip /> + <!-- no translation found for add_style (6163126614514489951) --> + <skip /> + <!-- no translation found for add (8299699805688017798) --> + <skip /> + <!-- no translation found for remove (4486081658752944606) --> + <skip /> + <!-- no translation found for save (7646738597196767214) --> + <skip /> + <!-- no translation found for subtype_locale (8576443440738143764) --> + <skip /> + <!-- no translation found for keyboard_layout_set (4309233698194565609) --> + <skip /> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Modo de estudo de utilização"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Configurações de duração da vibração ao tocar a tecla"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Configurações do volume ao tocar a tecla"</string> diff --git a/java/res/values-rm/strings.xml b/java/res/values-rm/strings.xml index 02de4c4f5..e589e8bff 100644 --- a/java/res/values-rm/strings.xml +++ b/java/res/values-rm/strings.xml @@ -201,8 +201,24 @@ <skip /> <!-- no translation found for subtype_en_US (6160452336634534239) --> <skip /> + <!-- no translation found for subtype_no_language (141420857808801746) --> + <skip /> <!-- no translation found for subtype_no_language_qwerty (2956121451616633133) --> <skip /> + <!-- no translation found for custom_input_styles_title (8429952441821251512) --> + <skip /> + <!-- no translation found for add_style (6163126614514489951) --> + <skip /> + <!-- no translation found for add (8299699805688017798) --> + <skip /> + <!-- no translation found for remove (4486081658752944606) --> + <skip /> + <!-- no translation found for save (7646738597196767214) --> + <skip /> + <!-- no translation found for subtype_locale (8576443440738143764) --> + <skip /> + <!-- no translation found for keyboard_layout_set (4309233698194565609) --> + <skip /> <!-- no translation found for prefs_usability_study_mode (1261130555134595254) --> <skip /> <!-- no translation found for prefs_keypress_vibration_duration_settings (1829950405285211668) --> diff --git a/java/res/values-ro/strings.xml b/java/res/values-ro/strings.xml index 80a65585d..8dead1713 100644 --- a/java/res/values-ro/strings.xml +++ b/java/res/values-ro/strings.xml @@ -118,7 +118,23 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Temă pentru tastatură"</string> <string name="subtype_en_GB" msgid="88170601942311355">"Engleză (Marea Britanie)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"Engleză (S.U.A.)"</string> + <!-- no translation found for subtype_no_language (141420857808801746) --> + <skip /> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Nicio limbă (QWERTY)"</string> + <!-- no translation found for custom_input_styles_title (8429952441821251512) --> + <skip /> + <!-- no translation found for add_style (6163126614514489951) --> + <skip /> + <!-- no translation found for add (8299699805688017798) --> + <skip /> + <!-- no translation found for remove (4486081658752944606) --> + <skip /> + <!-- no translation found for save (7646738597196767214) --> + <skip /> + <!-- no translation found for subtype_locale (8576443440738143764) --> + <skip /> + <!-- no translation found for keyboard_layout_set (4309233698194565609) --> + <skip /> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Modul Studiu privind utilizarea"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Setări pentru durata vibrării la apăsarea tastei"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Setări pentru volumul sunetului la apăsarea tastei"</string> diff --git a/java/res/values-ru/strings.xml b/java/res/values-ru/strings.xml index 6345ed891..00bdabba0 100644 --- a/java/res/values-ru/strings.xml +++ b/java/res/values-ru/strings.xml @@ -118,7 +118,23 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Тема клавиатуры"</string> <string name="subtype_en_GB" msgid="88170601942311355">"английский (Великобритания)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"английский (США)"</string> + <!-- no translation found for subtype_no_language (141420857808801746) --> + <skip /> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Язык не указан (QWERTY)"</string> + <!-- no translation found for custom_input_styles_title (8429952441821251512) --> + <skip /> + <!-- no translation found for add_style (6163126614514489951) --> + <skip /> + <!-- no translation found for add (8299699805688017798) --> + <skip /> + <!-- no translation found for remove (4486081658752944606) --> + <skip /> + <!-- no translation found for save (7646738597196767214) --> + <skip /> + <!-- no translation found for subtype_locale (8576443440738143764) --> + <skip /> + <!-- no translation found for keyboard_layout_set (4309233698194565609) --> + <skip /> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Режим проверки удобства использования"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Настройки вибросигнала при нажатии клавиш"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Настройки громкости звука при нажатии клавиш"</string> diff --git a/java/res/values-sk/strings.xml b/java/res/values-sk/strings.xml index 57bc3a0f4..eba3efa7d 100644 --- a/java/res/values-sk/strings.xml +++ b/java/res/values-sk/strings.xml @@ -118,7 +118,23 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Motív klávesnice"</string> <string name="subtype_en_GB" msgid="88170601942311355">"Anglická klávesnica (UK)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"Anglická klávesnica (US)"</string> + <!-- no translation found for subtype_no_language (141420857808801746) --> + <skip /> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Žiadny jazyk (QWERTY)"</string> + <!-- no translation found for custom_input_styles_title (8429952441821251512) --> + <skip /> + <!-- no translation found for add_style (6163126614514489951) --> + <skip /> + <!-- no translation found for add (8299699805688017798) --> + <skip /> + <!-- no translation found for remove (4486081658752944606) --> + <skip /> + <!-- no translation found for save (7646738597196767214) --> + <skip /> + <!-- no translation found for subtype_locale (8576443440738143764) --> + <skip /> + <!-- no translation found for keyboard_layout_set (4309233698194565609) --> + <skip /> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Režim štúdie použiteľnosti"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Nastavenia trvania vibrovania pri stlačení klávesu"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Nastavenia hlasitosti zvuku pri stlačení klávesu"</string> diff --git a/java/res/values-sl/strings.xml b/java/res/values-sl/strings.xml index 890877fb3..6d2dc0713 100644 --- a/java/res/values-sl/strings.xml +++ b/java/res/values-sl/strings.xml @@ -118,7 +118,23 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Tema tipkovnice"</string> <string name="subtype_en_GB" msgid="88170601942311355">"angleščina (Združeno kraljestvo)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"angleščina (ZDA)"</string> + <!-- no translation found for subtype_no_language (141420857808801746) --> + <skip /> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Ni jezika (QWERTY)"</string> + <!-- no translation found for custom_input_styles_title (8429952441821251512) --> + <skip /> + <!-- no translation found for add_style (6163126614514489951) --> + <skip /> + <!-- no translation found for add (8299699805688017798) --> + <skip /> + <!-- no translation found for remove (4486081658752944606) --> + <skip /> + <!-- no translation found for save (7646738597196767214) --> + <skip /> + <!-- no translation found for subtype_locale (8576443440738143764) --> + <skip /> + <!-- no translation found for keyboard_layout_set (4309233698194565609) --> + <skip /> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Način za preučevanje uporabnosti"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Nastavitve za trajanje vibriranja ob pritisku tipke"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Nastavitve za glasnost zvoka ob pritisku tipke"</string> diff --git a/java/res/values-sr/strings.xml b/java/res/values-sr/strings.xml index f21abd272..6fa75aeb7 100644 --- a/java/res/values-sr/strings.xml +++ b/java/res/values-sr/strings.xml @@ -118,7 +118,23 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Тема тастатуре"</string> <string name="subtype_en_GB" msgid="88170601942311355">"енглески (УК)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"енглески (САД)"</string> + <!-- no translation found for subtype_no_language (141420857808801746) --> + <skip /> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Нема језика (QWERTY)"</string> + <!-- no translation found for custom_input_styles_title (8429952441821251512) --> + <skip /> + <!-- no translation found for add_style (6163126614514489951) --> + <skip /> + <!-- no translation found for add (8299699805688017798) --> + <skip /> + <!-- no translation found for remove (4486081658752944606) --> + <skip /> + <!-- no translation found for save (7646738597196767214) --> + <skip /> + <!-- no translation found for subtype_locale (8576443440738143764) --> + <skip /> + <!-- no translation found for keyboard_layout_set (4309233698194565609) --> + <skip /> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Режим за студију могућности коришћења"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Подешавања трајања вибрације при притиску на тастере"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Подешавања јачине звука при притиску на тастере"</string> diff --git a/java/res/values-sv/strings.xml b/java/res/values-sv/strings.xml index 918fa42c1..302ded480 100644 --- a/java/res/values-sv/strings.xml +++ b/java/res/values-sv/strings.xml @@ -118,7 +118,23 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Tangentbordstema"</string> <string name="subtype_en_GB" msgid="88170601942311355">"Engelskt (brittiskt)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"Engelskt (amerikanskt)"</string> + <!-- no translation found for subtype_no_language (141420857808801746) --> + <skip /> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Inget språk (QWERTY)"</string> + <!-- no translation found for custom_input_styles_title (8429952441821251512) --> + <skip /> + <!-- no translation found for add_style (6163126614514489951) --> + <skip /> + <!-- no translation found for add (8299699805688017798) --> + <skip /> + <!-- no translation found for remove (4486081658752944606) --> + <skip /> + <!-- no translation found for save (7646738597196767214) --> + <skip /> + <!-- no translation found for subtype_locale (8576443440738143764) --> + <skip /> + <!-- no translation found for keyboard_layout_set (4309233698194565609) --> + <skip /> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Läge för studie av användbarhet"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Inställningar för vibrationslängd vid knapptryck"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Volyminställningar för knappljud"</string> diff --git a/java/res/values-sw/strings.xml b/java/res/values-sw/strings.xml index 39ecc02f7..8739edb3d 100644 --- a/java/res/values-sw/strings.xml +++ b/java/res/values-sw/strings.xml @@ -118,7 +118,23 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Maandhari ya kibodi"</string> <string name="subtype_en_GB" msgid="88170601942311355">"Kiingereza cha (Uingereza)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"Kiingereza cha (Marekani)"</string> + <!-- no translation found for subtype_no_language (141420857808801746) --> + <skip /> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Hakuna lugha (QWERTY)"</string> + <!-- no translation found for custom_input_styles_title (8429952441821251512) --> + <skip /> + <!-- no translation found for add_style (6163126614514489951) --> + <skip /> + <!-- no translation found for add (8299699805688017798) --> + <skip /> + <!-- no translation found for remove (4486081658752944606) --> + <skip /> + <!-- no translation found for save (7646738597196767214) --> + <skip /> + <!-- no translation found for subtype_locale (8576443440738143764) --> + <skip /> + <!-- no translation found for keyboard_layout_set (4309233698194565609) --> + <skip /> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Modi ya uchunguzi wa utumizi"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Bonyeza mipangilio ya kipindi cha mtetemo"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Bonyeza mipangilio ya nguvu za sauti"</string> diff --git a/java/res/values-th/strings.xml b/java/res/values-th/strings.xml index 87838ad36..13c513aea 100644 --- a/java/res/values-th/strings.xml +++ b/java/res/values-th/strings.xml @@ -118,7 +118,23 @@ <string name="keyboard_layout" msgid="8451164783510487501">"ชุดรูปแบบแป้นพิมพ์"</string> <string name="subtype_en_GB" msgid="88170601942311355">"อังกฤษ (สหราชอาณาจักร)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"อังกฤษ (อเมริกัน)"</string> + <!-- no translation found for subtype_no_language (141420857808801746) --> + <skip /> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"ไม่มีภาษา (QWERTY)"</string> + <!-- no translation found for custom_input_styles_title (8429952441821251512) --> + <skip /> + <!-- no translation found for add_style (6163126614514489951) --> + <skip /> + <!-- no translation found for add (8299699805688017798) --> + <skip /> + <!-- no translation found for remove (4486081658752944606) --> + <skip /> + <!-- no translation found for save (7646738597196767214) --> + <skip /> + <!-- no translation found for subtype_locale (8576443440738143764) --> + <skip /> + <!-- no translation found for keyboard_layout_set (4309233698194565609) --> + <skip /> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"โหมดศึกษาประโยชน์ในการใช้งาน"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"การตั้งค่าระยะเวลาการสั่นเมื่อกดแป้นพิมพ์"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"การตั้งค่าระดับเสียงเมื่อกดแป้นพิมพ์"</string> diff --git a/java/res/values-tl/strings.xml b/java/res/values-tl/strings.xml index 2bf661f3d..381cf1b69 100644 --- a/java/res/values-tl/strings.xml +++ b/java/res/values-tl/strings.xml @@ -118,7 +118,23 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Tema ng keyboard"</string> <string name="subtype_en_GB" msgid="88170601942311355">"Ingles (UK)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"Ingles (Estados Unidos)"</string> + <!-- no translation found for subtype_no_language (141420857808801746) --> + <skip /> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Walang wika (QWERTY)"</string> + <!-- no translation found for custom_input_styles_title (8429952441821251512) --> + <skip /> + <!-- no translation found for add_style (6163126614514489951) --> + <skip /> + <!-- no translation found for add (8299699805688017798) --> + <skip /> + <!-- no translation found for remove (4486081658752944606) --> + <skip /> + <!-- no translation found for save (7646738597196767214) --> + <skip /> + <!-- no translation found for subtype_locale (8576443440738143764) --> + <skip /> + <!-- no translation found for keyboard_layout_set (4309233698194565609) --> + <skip /> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Study mode ng pagiging kapaki-pakinabang"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Mga setting ng tagal ng vibration ng keypress"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Mga setting ng volume ng tunog ng keypress"</string> diff --git a/java/res/values-tr/strings.xml b/java/res/values-tr/strings.xml index abca6324c..cbe4622a7 100644 --- a/java/res/values-tr/strings.xml +++ b/java/res/values-tr/strings.xml @@ -118,7 +118,23 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Klavye teması"</string> <string name="subtype_en_GB" msgid="88170601942311355">"İngilizce (BK)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"İngilizce (ABD)"</string> + <!-- no translation found for subtype_no_language (141420857808801746) --> + <skip /> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Dil yok (QWERTY)"</string> + <!-- no translation found for custom_input_styles_title (8429952441821251512) --> + <skip /> + <!-- no translation found for add_style (6163126614514489951) --> + <skip /> + <!-- no translation found for add (8299699805688017798) --> + <skip /> + <!-- no translation found for remove (4486081658752944606) --> + <skip /> + <!-- no translation found for save (7646738597196767214) --> + <skip /> + <!-- no translation found for subtype_locale (8576443440738143764) --> + <skip /> + <!-- no translation found for keyboard_layout_set (4309233698194565609) --> + <skip /> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Kullanılabilirlik çalışması modu"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Tuşa basma titreşim süresi ayarları"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Tuşa basma ses düzeyi ayarları"</string> diff --git a/java/res/values-uk/strings.xml b/java/res/values-uk/strings.xml index 1bc2ca791..33e1d4098 100644 --- a/java/res/values-uk/strings.xml +++ b/java/res/values-uk/strings.xml @@ -118,7 +118,23 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Тема клавіатури"</string> <string name="subtype_en_GB" msgid="88170601942311355">"Англійська (Великобританія)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"Англійська (США)"</string> + <!-- no translation found for subtype_no_language (141420857808801746) --> + <skip /> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Немає мови (QWERTY)"</string> + <!-- no translation found for custom_input_styles_title (8429952441821251512) --> + <skip /> + <!-- no translation found for add_style (6163126614514489951) --> + <skip /> + <!-- no translation found for add (8299699805688017798) --> + <skip /> + <!-- no translation found for remove (4486081658752944606) --> + <skip /> + <!-- no translation found for save (7646738597196767214) --> + <skip /> + <!-- no translation found for subtype_locale (8576443440738143764) --> + <skip /> + <!-- no translation found for keyboard_layout_set (4309233698194565609) --> + <skip /> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Режим вивчення зручності у використанні"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Налаштування тривалості вібрації під час натискання клавіші"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Налаштування гучності звуку під час натискання клавіші"</string> diff --git a/java/res/values-vi/strings.xml b/java/res/values-vi/strings.xml index 362882e67..fd4364f74 100644 --- a/java/res/values-vi/strings.xml +++ b/java/res/values-vi/strings.xml @@ -118,7 +118,23 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Chủ đề bàn phím"</string> <string name="subtype_en_GB" msgid="88170601942311355">"Tiếng Anh (Anh)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"Tiếng Anh (Mỹ)"</string> + <!-- no translation found for subtype_no_language (141420857808801746) --> + <skip /> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Không có ngôn ngữ (QWERTY)"</string> + <!-- no translation found for custom_input_styles_title (8429952441821251512) --> + <skip /> + <!-- no translation found for add_style (6163126614514489951) --> + <skip /> + <!-- no translation found for add (8299699805688017798) --> + <skip /> + <!-- no translation found for remove (4486081658752944606) --> + <skip /> + <!-- no translation found for save (7646738597196767214) --> + <skip /> + <!-- no translation found for subtype_locale (8576443440738143764) --> + <skip /> + <!-- no translation found for keyboard_layout_set (4309233698194565609) --> + <skip /> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Chế độ nghiên cứu tính khả dụng"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Cài đặt thời gian rung khi nhấn phím"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Cài đặt âm lượng khi nhấn phím"</string> diff --git a/java/res/values-zh-rCN/strings.xml b/java/res/values-zh-rCN/strings.xml index 73cec6e51..9a468d546 100644 --- a/java/res/values-zh-rCN/strings.xml +++ b/java/res/values-zh-rCN/strings.xml @@ -118,7 +118,23 @@ <string name="keyboard_layout" msgid="8451164783510487501">"键盘主题"</string> <string name="subtype_en_GB" msgid="88170601942311355">"英语(英国)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"英语(美国)"</string> + <!-- no translation found for subtype_no_language (141420857808801746) --> + <skip /> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"无语言(QWERTY 键盘)"</string> + <!-- no translation found for custom_input_styles_title (8429952441821251512) --> + <skip /> + <!-- no translation found for add_style (6163126614514489951) --> + <skip /> + <!-- no translation found for add (8299699805688017798) --> + <skip /> + <!-- no translation found for remove (4486081658752944606) --> + <skip /> + <!-- no translation found for save (7646738597196767214) --> + <skip /> + <!-- no translation found for subtype_locale (8576443440738143764) --> + <skip /> + <!-- no translation found for keyboard_layout_set (4309233698194565609) --> + <skip /> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"可用性研究模式"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"按键振动持续时间设置"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"按键音量设置"</string> diff --git a/java/res/values-zh-rTW/strings.xml b/java/res/values-zh-rTW/strings.xml index d91abf940..eafd43ac9 100644 --- a/java/res/values-zh-rTW/strings.xml +++ b/java/res/values-zh-rTW/strings.xml @@ -118,7 +118,23 @@ <string name="keyboard_layout" msgid="8451164783510487501">"鍵盤主題"</string> <string name="subtype_en_GB" msgid="88170601942311355">"英文 (英式)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"英文 (美式)"</string> + <!-- no translation found for subtype_no_language (141420857808801746) --> + <skip /> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"無語言 (QWERTY)"</string> + <!-- no translation found for custom_input_styles_title (8429952441821251512) --> + <skip /> + <!-- no translation found for add_style (6163126614514489951) --> + <skip /> + <!-- no translation found for add (8299699805688017798) --> + <skip /> + <!-- no translation found for remove (4486081658752944606) --> + <skip /> + <!-- no translation found for save (7646738597196767214) --> + <skip /> + <!-- no translation found for subtype_locale (8576443440738143764) --> + <skip /> + <!-- no translation found for keyboard_layout_set (4309233698194565609) --> + <skip /> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"使用性研究模式"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"按鍵震動持續時間設定"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"按鍵音量設定"</string> diff --git a/java/res/values-zu/strings.xml b/java/res/values-zu/strings.xml index 973b2e56f..47ddc0c6f 100644 --- a/java/res/values-zu/strings.xml +++ b/java/res/values-zu/strings.xml @@ -118,7 +118,23 @@ <string name="keyboard_layout" msgid="8451164783510487501">"Indikimba yekhibhodi"</string> <string name="subtype_en_GB" msgid="88170601942311355">"i-English(UK)"</string> <string name="subtype_en_US" msgid="6160452336634534239">"i-English (US)"</string> + <!-- no translation found for subtype_no_language (141420857808801746) --> + <skip /> <string name="subtype_no_language_qwerty" msgid="2956121451616633133">"Akunalimi (QWERTY)"</string> + <!-- no translation found for custom_input_styles_title (8429952441821251512) --> + <skip /> + <!-- no translation found for add_style (6163126614514489951) --> + <skip /> + <!-- no translation found for add (8299699805688017798) --> + <skip /> + <!-- no translation found for remove (4486081658752944606) --> + <skip /> + <!-- no translation found for save (7646738597196767214) --> + <skip /> + <!-- no translation found for subtype_locale (8576443440738143764) --> + <skip /> + <!-- no translation found for keyboard_layout_set (4309233698194565609) --> + <skip /> <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Imodi yesitadi yokusebenziseka"</string> <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Izilungiselelo ze-keypress vibration duraton"</string> <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Izilungiselelo zevolumu yomsindo wekeypress"</string> diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml index 4ec184334..c78013f73 100644 --- a/java/res/values/attrs.xml +++ b/java/res/values/attrs.xml @@ -209,20 +209,21 @@ <attr name="verticalGap" format="dimension|fraction" /> <!-- More keys keyboard layout template --> <attr name="moreKeysTemplate" format="reference" /> - <!-- Icon set for key top and key preview. --> + <!-- Icon set for key top and key preview. + These should be aligned with KeyboardIconsSet.NAMES_AND_ATTR_IDS[] --> <attr name="iconShiftKey" format="reference" /> <attr name="iconDeleteKey" format="reference" /> <attr name="iconSettingsKey" format="reference" /> <attr name="iconSpaceKey" format="reference" /> - <attr name="iconReturnKey" format="reference" /> + <attr name="iconEnterKey" format="reference" /> <attr name="iconSearchKey" format="reference" /> <attr name="iconTabKey" format="reference" /> <attr name="iconShortcutKey" format="reference" /> <attr name="iconShortcutForLabel" format="reference" /> <attr name="iconSpaceKeyForNumberLayout" format="reference" /> <attr name="iconShiftKeyShifted" format="reference" /> - <attr name="iconDisabledShortcutKey" format="reference" /> - <attr name="iconPreviewTabKey" format="reference" /> + <attr name="iconShortcutKeyDisabled" format="reference" /> + <attr name="iconTabKeyPreview" format="reference" /> <attr name="iconLanguageSwitchKey" format="reference" /> <attr name="iconZwnjKey" format="reference" /> <attr name="iconZwjKey" format="reference" /> @@ -301,37 +302,11 @@ <flag name="disableAdditionalMoreKeys" value="0x80000000" /> </attr> <!-- The icon to display on the key instead of the label. --> - <!-- TODO: Use string format !icon/name. --> - <attr name="keyIcon" format="enum"> - <!-- This should be aligned with the KeyboardIconsSet.ICON_* --> - <enum name="iconUndefined" value="0" /> - <enum name="iconShiftKey" value="1" /> - <enum name="iconDeleteKey" value="2" /> - <enum name="iconSettingsKey" value="3" /> - <enum name="iconSpaceKey" value="4" /> - <enum name="iconReturnKey" value="5" /> - <enum name="iconSearchKey" value="6" /> - <enum name="iconTabKey" value="7" /> - <enum name="iconShortcutKey" value="8" /> - <enum name="iconShortcutForLabel" value="9" /> - <enum name="iconSpaceKeyForNumberLayout" value="10" /> - <enum name="iconShiftKeyShifted" value="11" /> - <enum name="iconLanguageSwitchKey" value="14" /> - <enum name="iconZwnjKey" value="15" /> - <enum name="iconZwjKey" value="16" /> - </attr> + <attr name="keyIcon" format="string" /> <!-- The icon for disabled key --> - <!-- TODO: Use string format !icon/name. --> - <attr name="keyIconDisabled" format="enum"> - <!-- This should be aligned with the KeyboardIconsSet.ICON_* --> - <enum name="iconDisabledShortcutKey" value="12" /> - </attr> + <attr name="keyIconDisabled" format="string" /> <!-- The icon to show in the popup preview. --> - <!-- TODO: Use string format !icon/name. --> - <attr name="keyIconPreview" format="enum"> - <!-- This should be aligned with the KeyboardIconsSet.ICON_* --> - <enum name="iconPreviewTabKey" value="13" /> - </attr> + <attr name="keyIconPreview" format="string" /> <!-- The key style to specify a set of key attributes defined by <key_style/> --> <attr name="keyStyle" format="string" /> <!-- Visual insets --> diff --git a/java/res/values/donottranslate.xml b/java/res/values/donottranslate.xml index 892c72aec..37f073675 100644 --- a/java/res/values/donottranslate.xml +++ b/java/res/values/donottranslate.xml @@ -146,12 +146,30 @@ <!-- Generic subtype label --> <string name="subtype_generic">%s</string> - <!-- Description for generic QWERTY keyboard subtype --> + + <!-- Predefined keyboard layouts for additional subtype --> + <string-array name="predefined_layouts"> + <item>qwerty</item> + <item>qwertz</item> + <item>azerty</item> + <item>dvorak</item> + <item>colemak</item> + </string-array> + <!-- Predefined keyboard layout display names --> + <string-array name="predefined_layout_display_names"> + <item>QWERTY</item> + <item>QWERTZ</item> + <item>AZERTY</item> + <item>Dvorak</item> + <item>Colemak</item> + </string-array> + <!-- Description for generic subtype that has predefined layout. + The string resource name must be "subtype_generic_<layout name>". --> <string name="subtype_generic_qwerty">%s (QWERTY)</string> - <!-- Description for generic QWERTZ keyboard subtype --> <string name="subtype_generic_qwertz">%s (QWERTZ)</string> - <!-- Description for generic AZERTY keyboard subtype --> <string name="subtype_generic_azerty">%s (AZERTY)</string> + <string name="subtype_generic_dvorak">%s (Dvorak)</string> + <string name="subtype_generic_colemak">%s (Colemak)</string> <!-- dictionary pack package name /settings activity (for shared prefs and settings) --> <string name="dictionary_pack_package_name">com.google.android.inputmethod.latin.dictionarypack</string> diff --git a/java/res/values/keyboard-icons-black.xml b/java/res/values/keyboard-icons-black.xml index 1ff597a49..e9c5733b5 100644 --- a/java/res/values/keyboard-icons-black.xml +++ b/java/res/values/keyboard-icons-black.xml @@ -25,15 +25,15 @@ <item name="iconDeleteKey">@drawable/sym_bkeyboard_delete</item> <item name="iconSettingsKey">@drawable/sym_bkeyboard_settings</item> <item name="iconSpaceKey">@drawable/sym_bkeyboard_space</item> - <item name="iconReturnKey">@drawable/sym_bkeyboard_return</item> + <item name="iconEnterKey">@drawable/sym_bkeyboard_return</item> <item name="iconSearchKey">@drawable/sym_bkeyboard_search</item> <item name="iconTabKey">@drawable/sym_bkeyboard_tab</item> <item name="iconShortcutKey">@drawable/sym_bkeyboard_mic</item> <item name="iconShortcutForLabel">@drawable/sym_bkeyboard_label_mic</item> <item name="iconSpaceKeyForNumberLayout">@drawable/sym_bkeyboard_space</item> <item name="iconShiftKeyShifted">@drawable/sym_bkeyboard_shift_locked</item> - <item name="iconDisabledShortcutKey">@drawable/sym_bkeyboard_voice_off</item> - <item name="iconPreviewTabKey">@drawable/sym_keyboard_feedback_tab</item> + <item name="iconShortcutKeyDisabled">@drawable/sym_bkeyboard_voice_off</item> + <item name="iconTabKeyPreview">@drawable/sym_keyboard_feedback_tab</item> <!-- TODO: Needs dedicated black theme globe icon --> <item name="iconLanguageSwitchKey">@drawable/sym_keyboard_language_switch</item> <!-- TODO: Needs dedicated black theme ZWNJ and ZWJ icons --> diff --git a/java/res/values/keyboard-icons-ics.xml b/java/res/values/keyboard-icons-ics.xml index 0774d57ac..8eba196de 100644 --- a/java/res/values/keyboard-icons-ics.xml +++ b/java/res/values/keyboard-icons-ics.xml @@ -24,15 +24,15 @@ <item name="iconDeleteKey">@drawable/sym_keyboard_delete_holo</item> <item name="iconSettingsKey">@drawable/sym_keyboard_settings_holo</item> <item name="iconSpaceKey">@null</item> - <item name="iconReturnKey">@drawable/sym_keyboard_return_holo</item> + <item name="iconEnterKey">@drawable/sym_keyboard_return_holo</item> <item name="iconSearchKey">@drawable/sym_keyboard_search_holo</item> <item name="iconTabKey">@drawable/sym_keyboard_tab_holo</item> <item name="iconShortcutKey">@drawable/sym_keyboard_voice_holo</item> <item name="iconShortcutForLabel">@drawable/sym_keyboard_label_mic_holo</item> <item name="iconSpaceKeyForNumberLayout">@drawable/sym_keyboard_space_holo</item> <item name="iconShiftKeyShifted">@drawable/sym_keyboard_shift_locked_holo</item> - <item name="iconDisabledShortcutKey">@drawable/sym_keyboard_voice_off_holo</item> - <item name="iconPreviewTabKey">@drawable/sym_keyboard_feedback_tab</item> + <item name="iconShortcutKeyDisabled">@drawable/sym_keyboard_voice_off_holo</item> + <item name="iconTabKeyPreview">@drawable/sym_keyboard_feedback_tab</item> <item name="iconLanguageSwitchKey">@drawable/sym_keyboard_language_switch</item> <item name="iconZwnjKey">@drawable/sym_keyboard_zwnj_holo</item> <item name="iconZwjKey">@drawable/sym_keyboard_zwj_holo</item> diff --git a/java/res/values/keyboard-icons-white.xml b/java/res/values/keyboard-icons-white.xml index 5798786f8..e52099867 100644 --- a/java/res/values/keyboard-icons-white.xml +++ b/java/res/values/keyboard-icons-white.xml @@ -21,7 +21,7 @@ <item name="iconDeleteKey">@drawable/sym_keyboard_delete</item> <item name="iconSettingsKey">@drawable/sym_keyboard_settings</item> <item name="iconSpaceKey">@drawable/sym_keyboard_space</item> - <item name="iconReturnKey">@drawable/sym_keyboard_return</item> + <item name="iconEnterKey">@drawable/sym_keyboard_return</item>ZZ <item name="iconSearchKey">@drawable/sym_keyboard_search</item> <item name="iconTabKey">@drawable/sym_keyboard_tab</item> <item name="iconShortcutKey">@drawable/sym_keyboard_mic</item> @@ -29,8 +29,8 @@ <item name="iconSpaceKeyForNumberLayout">@drawable/sym_keyboard_space</item> <item name="iconShiftKeyShifted">@drawable/sym_keyboard_shift_locked</item> <!-- TODO: Needs non-holo disabled shortcut icon drawable --> - <item name="iconDisabledShortcutKey">@drawable/sym_keyboard_voice_off_holo</item> - <item name="iconPreviewTabKey">@drawable/sym_keyboard_feedback_tab</item> + <item name="iconShortcutKeyDisabled">@drawable/sym_keyboard_voice_off_holo</item> + <item name="iconTabKeyPreview">@drawable/sym_keyboard_feedback_tab</item> <item name="iconLanguageSwitchKey">@drawable/sym_keyboard_language_switch</item> <!-- TODO: Needs dedicated black theme ZWNJ and ZWJ icons --> <item name="iconZwnjKey">@drawable/sym_keyboard_zwnj_holo</item> diff --git a/java/res/xml-sw600dp/kbd_azerty_symbols.xml b/java/res/xml-sw600dp/kbd_10_10_7_symbols.xml index 66254dea0..66254dea0 100644 --- a/java/res/xml-sw600dp/kbd_azerty_symbols.xml +++ b/java/res/xml-sw600dp/kbd_10_10_7_symbols.xml diff --git a/java/res/xml-sw600dp/kbd_azerty_symbols_shift.xml b/java/res/xml-sw600dp/kbd_10_10_7_symbols_shift.xml index 3c5ed5e09..3c5ed5e09 100644 --- a/java/res/xml-sw600dp/kbd_azerty_symbols_shift.xml +++ b/java/res/xml-sw600dp/kbd_10_10_7_symbols_shift.xml diff --git a/java/res/xml-sw600dp/keys_apostrophe_dash.xml b/java/res/xml-sw600dp/key_apostrophe.xml index faaae50c9..7da4b6223 100644 --- a/java/res/xml-sw600dp/keys_apostrophe_dash.xml +++ b/java/res/xml-sw600dp/key_apostrophe.xml @@ -2,7 +2,7 @@ <!-- /* ** -** Copyright 2011, The Android Open Source Project +** Copyright 2012, The Android Open Source Project ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. @@ -39,24 +39,9 @@ </case> <default> <Key - latin:keyLabel="!label/keylabel_for_apostrophe" - latin:keyHintLabel="!label/keyhintlabel_for_apostrophe" - latin:moreKeys="!label/more_keys_for_apostrophe" - latin:keyStyle="hasShiftedLetterHintStyle" /> - </default> - </switch> - <switch> - <case - latin:mode="email" - > - <Key - latin:keyLabel="_" /> - </case> - <default> - <Key - latin:keyLabel="!label/keylabel_for_dash" - latin:keyHintLabel="!label/keyhintlabel_for_dash" - latin:moreKeys="!label/more_keys_for_dash" + latin:keyLabel="!text/keylabel_for_apostrophe" + latin:keyHintLabel="!text/keyhintlabel_for_apostrophe" + latin:moreKeys="!text/more_keys_for_apostrophe" latin:keyStyle="hasShiftedLetterHintStyle" /> </default> </switch> diff --git a/java/res/xml-sw600dp/kbd_hebrew_symbols.xml b/java/res/xml-sw600dp/key_colemak_semicolon.xml index 66254dea0..a5a6e9526 100644 --- a/java/res/xml-sw600dp/kbd_hebrew_symbols.xml +++ b/java/res/xml-sw600dp/key_colemak_semicolon.xml @@ -18,9 +18,12 @@ */ --> -<Keyboard +<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > - <include - latin:keyboardLayout="@xml/rows_10_10_7_symbols" /> -</Keyboard> + <Key + latin:keyLabel=":" + latin:keyHintLabel=";" + latin:moreKeys=";" + latin:keyStyle="hasShiftedLetterHintStyle" /> +</merge> diff --git a/java/res/xml-sw600dp/kbd_spanish_symbols.xml b/java/res/xml-sw600dp/key_dash.xml index 66254dea0..a7c3727da 100644 --- a/java/res/xml-sw600dp/kbd_spanish_symbols.xml +++ b/java/res/xml-sw600dp/key_dash.xml @@ -18,9 +18,22 @@ */ --> -<Keyboard +<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > - <include - latin:keyboardLayout="@xml/rows_10_10_7_symbols" /> -</Keyboard> + <switch> + <case + latin:mode="email" + > + <Key + latin:keyLabel="_" /> + </case> + <default> + <Key + latin:keyLabel="!text/keylabel_for_dash" + latin:keyHintLabel="!text/keyhintlabel_for_dash" + latin:moreKeys="!text/more_keys_for_dash" + latin:keyStyle="hasShiftedLetterHintStyle" /> + </default> + </switch> +</merge> diff --git a/java/res/xml-sw600dp/key_f1.xml b/java/res/xml-sw600dp/key_f1.xml new file mode 100644 index 000000000..e477d3758 --- /dev/null +++ b/java/res/xml-sw600dp/key_f1.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2012, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <switch> + <case + latin:mode="email" + > + <Key + latin:keyStyle="comKeyStyle" /> + </case> + <case + latin:mode="url" + > + <Key + latin:keyStyle="comKeyStyle" /> + </case> + <default> + <Key + latin:keyLabel="/" + latin:keyHintLabel="\@" + latin:moreKeys="\@" + latin:keyStyle="hasShiftedLetterHintStyle" /> + </default> + </switch> +</merge> diff --git a/java/res/xml-sw768dp/keys_apostrophe_dash.xml b/java/res/xml-sw600dp/key_question_exclamation.xml index faaae50c9..f1495de49 100644 --- a/java/res/xml-sw768dp/keys_apostrophe_dash.xml +++ b/java/res/xml-sw600dp/key_question_exclamation.xml @@ -2,7 +2,7 @@ <!-- /* ** -** Copyright 2011, The Android Open Source Project +** Copyright 2012, The Android Open Source Project ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. @@ -39,24 +39,9 @@ </case> <default> <Key - latin:keyLabel="!label/keylabel_for_apostrophe" - latin:keyHintLabel="!label/keyhintlabel_for_apostrophe" - latin:moreKeys="!label/more_keys_for_apostrophe" - latin:keyStyle="hasShiftedLetterHintStyle" /> - </default> - </switch> - <switch> - <case - latin:mode="email" - > - <Key - latin:keyLabel="_" /> - </case> - <default> - <Key - latin:keyLabel="!label/keylabel_for_dash" - latin:keyHintLabel="!label/keyhintlabel_for_dash" - latin:moreKeys="!label/more_keys_for_dash" + latin:keyLabel="\?" + latin:keyHintLabel="!" + latin:moreKeys="!" latin:keyStyle="hasShiftedLetterHintStyle" /> </default> </switch> diff --git a/java/res/xml-sw600dp/key_shortcut.xml b/java/res/xml-sw600dp/key_shortcut.xml index 2114c67bd..f8cbdf6b6 100644 --- a/java/res/xml-sw600dp/key_shortcut.xml +++ b/java/res/xml-sw600dp/key_shortcut.xml @@ -29,7 +29,7 @@ <Key latin:keyStyle="shortcutKeyStyle" latin:keyLabelFlags="hasPopupHint|preserveCase" - latin:moreKeys="!label/settings_as_more_key" + latin:moreKeys="!text/settings_as_more_key" latin:keyWidth="fillBoth" /> </case> <case diff --git a/java/res/xml-sw600dp/key_space.xml b/java/res/xml-sw600dp/key_space.xml new file mode 100644 index 000000000..4670142cc --- /dev/null +++ b/java/res/xml-sw600dp/key_space.xml @@ -0,0 +1,66 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2012, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <Spacer + latin:keyWidth="0dp" + latin:keyXPos="30.750%p" /> + <switch> + <case + latin:languageCode="fa" + latin:languageSwitchKeyEnabled="true" + > + <Key + latin:keyStyle="languageSwitchKeyStyle" /> + <Key + latin:keyStyle="spaceKeyStyle" + latin:keyWidth="21.950%p" /> + <Key + latin:keyStyle="zwnjKeyStyle" /> + </case> + <case + latin:languageCode="fa" + latin:languageSwitchKeyEnabled="false" + > + <Key + latin:keyStyle="spaceKeyStyle" + latin:keyWidth="30.850%p" /> + <Key + latin:keyStyle="zwnjKeyStyle" /> + </case> + <case + latin:languageSwitchKeyEnabled="true" + > + <Key + latin:keyStyle="languageSwitchKeyStyle" /> + <Key + latin:keyStyle="spaceKeyStyle" + latin:keyWidth="30.850%p" /> + </case> + <!-- languageSwitchKeyEnabled="false" --> + <default> + <Key + latin:keyStyle="spaceKeyStyle" + latin:keyWidth="39.750%p" /> + </default> + </switch> +</merge> diff --git a/java/res/xml-sw600dp/key_styles_common.xml b/java/res/xml-sw600dp/key_styles_common.xml index e0676e890..bf392a33c 100644 --- a/java/res/xml-sw600dp/key_styles_common.xml +++ b/java/res/xml-sw600dp/key_styles_common.xml @@ -43,7 +43,7 @@ <key-style latin:styleName="shiftKeyStyle" latin:code="!code/key_shift" - latin:keyIcon="iconShiftKeyShifted" + latin:keyIcon="!icon/shift_key_shifted" latin:keyActionFlags="noKeyPreview" latin:backgroundType="stickyOff" /> </case> @@ -53,7 +53,7 @@ <key-style latin:styleName="shiftKeyStyle" latin:code="!code/key_shift" - latin:keyIcon="iconShiftKeyShifted" + latin:keyIcon="!icon/shift_key_shifted" latin:keyActionFlags="noKeyPreview" latin:backgroundType="stickyOn" /> </case> @@ -61,7 +61,7 @@ <key-style latin:styleName="shiftKeyStyle" latin:code="!code/key_shift" - latin:keyIcon="iconShiftKey" + latin:keyIcon="!icon/shift_key" latin:keyActionFlags="noKeyPreview" latin:backgroundType="stickyOff" /> </default> @@ -69,7 +69,7 @@ <key-style latin:styleName="deleteKeyStyle" latin:code="!code/key_delete" - latin:keyIcon="iconDeleteKey" + latin:keyIcon="!icon/delete_key" latin:keyActionFlags="isRepeatable|noKeyPreview" latin:backgroundType="functional" /> <include @@ -83,8 +83,8 @@ <key-style latin:styleName="zwnjKeyStyle" latin:code="0x200C" - latin:keyIcon="iconZwnjKey" - latin:moreKeys="!icon/zwjKey|‍" + latin:keyIcon="!icon/zwnj_key" + latin:moreKeys="!icon/zwj_key|‍" latin:keyLabelFlags="hasPopupHint" latin:keyActionFlags="noKeyPreview" /> <key-style @@ -92,19 +92,24 @@ latin:keyLabel=":-)" latin:keyOutputText=":-) " latin:keyLabelFlags="hasPopupHint|preserveCase" - latin:moreKeys="!label/more_keys_for_smiley" /> + latin:moreKeys="!text/more_keys_for_smiley" /> <key-style latin:styleName="shortcutKeyStyle" latin:code="!code/key_shortcut" - latin:keyIcon="iconShortcutKey" - latin:keyIconDisabled="iconDisabledShortcutKey" - latin:keyLabelFlags="preserveCase" + latin:keyIcon="!icon/shortcut_key" + latin:keyIconDisabled="!icon/shortcut_key_disabled" latin:keyActionFlags="noKeyPreview|altCodeWhileTyping" latin:backgroundType="functional" /> <key-style + latin:styleName="languageSwitchKeyStyle" + latin:code="!code/key_language_switch" + latin:keyIcon="!icon/language_switch_key" + latin:keyActionFlags="noKeyPreview|altCodeWhileTyping|enableLongPress" + latin:altCode="!code/key_space" /> + <key-style latin:styleName="settingsKeyStyle" latin:code="!code/key_settings" - latin:keyIcon="iconSettingsKey" + latin:keyIcon="!icon/settings_key" latin:keyActionFlags="noKeyPreview|altCodeWhileTyping" latin:backgroundType="functional" /> <switch> @@ -115,51 +120,48 @@ <key-style latin:styleName="tabKeyStyle" latin:code="!code/key_action_previous" - latin:keyIcon="iconTabKey" - latin:keyIconPreview="iconPreviewTabKey" + latin:keyIcon="!icon/tab_key" + latin:keyIconPreview="!icon/tab_key_preview" latin:backgroundType="functional" /> </case> <default> <key-style latin:styleName="tabKeyStyle" latin:code="!code/key_tab" - latin:keyIcon="iconTabKey" - latin:keyIconPreview="iconPreviewTabKey" + latin:keyIcon="!icon/tab_key" + latin:keyIconPreview="!icon/tab_key_preview" latin:backgroundType="functional" /> </default> </switch> <key-style latin:styleName="toSymbolKeyStyle" latin:code="!code/key_switch_alpha_symbol" - latin:keyLabel="!label/label_to_symbol_key" - latin:keyLabelFlags="preserveCase" + latin:keyLabel="!text/label_to_symbol_key" latin:keyActionFlags="noKeyPreview" latin:backgroundType="functional" /> <key-style latin:styleName="toAlphaKeyStyle" latin:code="!code/key_switch_alpha_symbol" - latin:keyLabel="!label/label_to_alpha_key" + latin:keyLabel="!text/label_to_alpha_key" latin:keyLabelFlags="preserveCase" latin:keyActionFlags="noKeyPreview" latin:backgroundType="functional" /> <key-style latin:styleName="toMoreSymbolKeyStyle" latin:code="!code/key_shift" - latin:keyLabel="!label/label_to_more_symbol_for_tablet_key" - latin:keyLabelFlags="preserveCase" + latin:keyLabel="!text/label_to_more_symbol_for_tablet_key" latin:keyActionFlags="noKeyPreview" latin:backgroundType="functional" /> <key-style latin:styleName="backFromMoreSymbolKeyStyle" latin:code="!code/key_shift" - latin:keyLabel="!label/label_to_symbol_key" - latin:keyLabelFlags="preserveCase" + latin:keyLabel="!text/label_to_symbol_key" latin:keyActionFlags="noKeyPreview" latin:backgroundType="functional" /> <key-style latin:styleName="comKeyStyle" - latin:keyLabel="!label/keylabel_for_popular_domain" + latin:keyLabel="!text/keylabel_for_popular_domain" latin:keyLabelFlags="fontNormal|hasPopupHint|preserveCase" - latin:keyOutputText="!label/keylabel_for_popular_domain" - latin:moreKeys="!label/more_keys_for_popular_domain" /> + latin:keyOutputText="!text/keylabel_for_popular_domain" + latin:moreKeys="!text/more_keys_for_popular_domain" /> </merge> diff --git a/java/res/xml-sw600dp/keys_comma_period.xml b/java/res/xml-sw600dp/keys_comma_period.xml index 4a83cc817..752f75b5f 100644 --- a/java/res/xml-sw600dp/keys_comma_period.xml +++ b/java/res/xml-sw600dp/keys_comma_period.xml @@ -32,14 +32,14 @@ </case> <default> <Key - latin:keyLabel="!label/keylabel_for_tablet_comma" - latin:keyHintLabel="!label/keyhintlabel_for_tablet_comma" - latin:moreKeys="!label/more_keys_for_tablet_comma" + latin:keyLabel="!text/keylabel_for_tablet_comma" + latin:keyHintLabel="!text/keyhintlabel_for_tablet_comma" + latin:moreKeys="!text/more_keys_for_tablet_comma" latin:keyStyle="hasShiftedLetterHintStyle" /> <Key latin:keyLabel="." - latin:keyHintLabel="!label/keyhintlabel_for_tablet_period" - latin:moreKeys="!label/more_keys_for_tablet_period" + latin:keyHintLabel="!text/keyhintlabel_for_tablet_period" + latin:moreKeys="!text/more_keys_for_tablet_period" latin:keyStyle="hasShiftedLetterHintStyle" /> </default> </switch> diff --git a/java/res/xml-sw600dp/keys_dvorak_123.xml b/java/res/xml-sw600dp/keys_dvorak_123.xml new file mode 100644 index 000000000..635ea0476 --- /dev/null +++ b/java/res/xml-sw600dp/keys_dvorak_123.xml @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2012, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <Key + latin:keyLabel="\'" + latin:keyHintLabel=""" + latin:moreKeys="!" + latin:keyStyle="hasShiftedLetterHintStyle" /> + <Key + latin:keyLabel="," + latin:keyHintLabel="<" + latin:moreKeys="\?" + latin:keyStyle="hasShiftedLetterHintStyle" /> + <Key + latin:keyLabel="." + latin:keyHintLabel=">" + latin:keyLabelFlags="hasPopupHint|preserveCase" + latin:moreKeys="!text/more_keys_for_punctuation" + latin:keyStyle="hasShiftedLetterHintStyle" /> +</merge> diff --git a/java/res/xml-sw600dp/row_dvorak4.xml b/java/res/xml-sw600dp/row_dvorak4.xml new file mode 100644 index 000000000..7d365883a --- /dev/null +++ b/java/res/xml-sw600dp/row_dvorak4.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2012, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <Row + latin:keyWidth="8.9%p" + > + <Key + latin:keyStyle="toSymbolKeyStyle" + latin:keyWidth="13.0%p" /> + <Key + latin:keyStyle="tabKeyStyle" /> + <include + latin:keyboardLayout="@xml/key_f1" /> + <include + latin:keyboardLayout="@xml/key_space" /> + <include + latin:keyboardLayout="@xml/key_question_exclamation" /> + <include + latin:keyboardLayout="@xml/key_dash" /> + <Spacer + latin:keyXPos="-10.00%p" + latin:keyWidth="0%p" /> + <include + latin:keyboardLayout="@xml/key_shortcut" /> + </Row> +</merge> diff --git a/java/res/xml-sw600dp/row_qwerty4.xml b/java/res/xml-sw600dp/row_qwerty4.xml index eec35b078..95b328b38 100644 --- a/java/res/xml-sw600dp/row_qwerty4.xml +++ b/java/res/xml-sw600dp/row_qwerty4.xml @@ -29,45 +29,10 @@ latin:keyWidth="13.0%p" /> <Key latin:keyStyle="tabKeyStyle" /> - <switch> - <case - latin:mode="email" - > - <Key - latin:keyStyle="comKeyStyle" /> - </case> - <case - latin:mode="url" - > - <Key - latin:keyStyle="comKeyStyle" /> - </case> - <default> - <Key - latin:keyLabel="/" - latin:keyHintLabel="\@" - latin:moreKeys="\@" - latin:keyStyle="hasShiftedLetterHintStyle" /> - </default> - </switch> - <switch> - <case - latin:languageCode="fa" - > - <Key - latin:keyStyle="spaceKeyStyle" - latin:keyXPos="30.750%p" - latin:keyWidth="30.850%p" /> - <Key - latin:keyStyle="zwnjKeyStyle" /> - </case> - <default> - <Key - latin:keyStyle="spaceKeyStyle" - latin:keyXPos="30.750%p" - latin:keyWidth="39.750%p" /> - </default> - </switch> + <include + latin:keyboardLayout="@xml/key_f1" /> + <include + latin:keyboardLayout="@xml/key_space" /> <switch> <case latin:languageCode="iw" @@ -78,7 +43,9 @@ <!-- not languageCode="iw" --> <default> <include - latin:keyboardLayout="@xml/keys_apostrophe_dash" /> + latin:keyboardLayout="@xml/key_apostrophe" /> + <include + latin:keyboardLayout="@xml/key_dash" /> </default> </switch> <Spacer diff --git a/java/res/xml-sw600dp/rows_symbols4.xml b/java/res/xml-sw600dp/row_symbols4.xml index afa2652ea..9b6daab36 100644 --- a/java/res/xml-sw600dp/rows_symbols4.xml +++ b/java/res/xml-sw600dp/row_symbols4.xml @@ -19,7 +19,7 @@ --> <merge - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Row latin:keyWidth="8.9%p" @@ -31,13 +31,11 @@ latin:keyStyle="tabKeyStyle" /> <Key latin:keyLabel="\@" /> - <Key - latin:keyStyle="spaceKeyStyle" - latin:keyXPos="30.750%p" - latin:keyWidth="39.750%p" /> + <include + latin:keyboardLayout="@xml/key_space" /> <Key latin:keyLabel=""" - latin:moreKeys="!label/more_keys_for_tablet_double_quote" /> + latin:moreKeys="!text/more_keys_for_tablet_double_quote" /> <Key latin:keyLabel="_" /> <Spacer diff --git a/java/res/xml-sw600dp/rows_symbols_shift4.xml b/java/res/xml-sw600dp/row_symbols_shift4.xml index 4381bce6d..7823561eb 100644 --- a/java/res/xml-sw600dp/rows_symbols_shift4.xml +++ b/java/res/xml-sw600dp/row_symbols_shift4.xml @@ -19,7 +19,7 @@ --> <merge - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Row latin:keyWidth="8.9%p" @@ -29,10 +29,8 @@ latin:keyWidth="13.0%p" /> <Key latin:keyStyle="tabKeyStyle" /> - <Key - latin:keyStyle="spaceKeyStyle" - latin:keyXPos="30.750%p" - latin:keyWidth="39.750%p" /> + <include + latin:keyboardLayout="@xml/key_space" /> <Spacer latin:keyXPos="-10.00%p" latin:keyWidth="0%p" /> diff --git a/java/res/xml-sw600dp/rowkeys_dvorak3.xml b/java/res/xml-sw600dp/rowkeys_dvorak3.xml new file mode 100644 index 000000000..2148bb2c7 --- /dev/null +++ b/java/res/xml-sw600dp/rowkeys_dvorak3.xml @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2012, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <Key + latin:keyLabel="q" /> + <Key + latin:keyLabel="j" + latin:moreKeys="!text/more_keys_for_j" /> + <Key + latin:keyLabel="k" + latin:moreKeys="!text/more_keys_for_k" /> + <Key + latin:keyLabel="x" /> + <Key + latin:keyLabel="b" /> + <Key + latin:keyLabel="m" /> + <Key + latin:keyLabel="w" + latin:moreKeys="!text/more_keys_for_w" /> + <Key + latin:keyLabel="v" + latin:moreKeys="!text/more_keys_for_v" /> + <Key + latin:keyLabel="z" + latin:moreKeys="!text/more_keys_for_z" /> +</merge> diff --git a/java/res/xml-sw600dp/rowkeys_symbols2.xml b/java/res/xml-sw600dp/rowkeys_symbols2.xml index fd774168f..6fe86240c 100644 --- a/java/res/xml-sw600dp/rowkeys_symbols2.xml +++ b/java/res/xml-sw600dp/rowkeys_symbols2.xml @@ -26,13 +26,13 @@ <Key latin:keyStyle="currencyKeyStyle" /> <Key - latin:keyLabel="!label/keylabel_for_symbols_percent" - latin:moreKeys="!label/more_keys_for_symbols_percent" /> + latin:keyLabel="!text/keylabel_for_symbols_percent" + latin:moreKeys="!text/more_keys_for_symbols_percent" /> <Key latin:keyLabel="&" /> <Key latin:keyLabel="*" - latin:moreKeys="!label/more_keys_for_star" /> + latin:moreKeys="!text/more_keys_for_star" /> <!-- U+2013: "–" EN DASH U+2014: "—" EM DASH --> <Key @@ -40,7 +40,7 @@ latin:moreKeys="_,–,—" /> <Key latin:keyLabel="+" - latin:moreKeys="!label/more_keys_for_plus" /> + latin:moreKeys="!text/more_keys_for_plus" /> <include latin:keyboardLayout="@xml/keys_parentheses" /> </merge> diff --git a/java/res/xml-sw600dp/rowkeys_symbols3.xml b/java/res/xml-sw600dp/rowkeys_symbols3.xml index 536ac05a2..4eb9618cf 100644 --- a/java/res/xml-sw600dp/rowkeys_symbols3.xml +++ b/java/res/xml-sw600dp/rowkeys_symbols3.xml @@ -41,11 +41,11 @@ </default> </switch> <Key - latin:keyLabel="!label/keylabel_for_symbols_semicolon" - latin:moreKeys="!label/more_keys_for_symbols_semicolon" /> + latin:keyLabel="!text/keylabel_for_symbols_semicolon" + latin:moreKeys="!text/more_keys_for_symbols_semicolon" /> <Key - latin:keyLabel="!label/keylabel_for_comma" - latin:moreKeys="!label/more_keys_for_comma" /> + latin:keyLabel="!text/keylabel_for_comma" + latin:moreKeys="!text/more_keys_for_comma" /> <Key latin:keyLabel="." /> <!-- U+00A1: "¡" INVERTED EXCLAMATION MARK --> @@ -53,6 +53,6 @@ latin:keyLabel="!" latin:moreKeys="¡" /> <Key - latin:keyLabel="!label/keylabel_for_symbols_question" - latin:moreKeys="!label/more_keys_for_symbols_question" /> + latin:keyLabel="!text/keylabel_for_symbols_question" + latin:moreKeys="!text/more_keys_for_symbols_question" /> </merge> diff --git a/java/res/xml-sw600dp/rowkeys_symbols_shift1.xml b/java/res/xml-sw600dp/rowkeys_symbols_shift1.xml index 914a4499b..3549fdda4 100644 --- a/java/res/xml-sw600dp/rowkeys_symbols_shift1.xml +++ b/java/res/xml-sw600dp/rowkeys_symbols_shift1.xml @@ -30,7 +30,7 @@ <!-- U+2022: "•" BULLET --> <Key latin:keyLabel="•" - latin:moreKeys="!label/more_keys_for_bullet" /> + latin:moreKeys="!text/more_keys_for_bullet" /> <!-- U+221A: "√" SQUARE ROOT --> <Key latin:keyLabel="√" /> diff --git a/java/res/xml-sw600dp/rows_10_10_7_symbols.xml b/java/res/xml-sw600dp/rows_10_10_7_symbols.xml index bdb1aa0ee..fe9f2fb5f 100644 --- a/java/res/xml-sw600dp/rows_10_10_7_symbols.xml +++ b/java/res/xml-sw600dp/rows_10_10_7_symbols.xml @@ -58,5 +58,5 @@ latin:keyWidth="fillRight" /> </Row> <include - latin:keyboardLayout="@xml/rows_symbols4" /> + latin:keyboardLayout="@xml/row_symbols4" /> </merge> diff --git a/java/res/xml-sw600dp/rows_10_10_7_symbols_shift.xml b/java/res/xml-sw600dp/rows_10_10_7_symbols_shift.xml index 101493423..9df112153 100644 --- a/java/res/xml-sw600dp/rows_10_10_7_symbols_shift.xml +++ b/java/res/xml-sw600dp/rows_10_10_7_symbols_shift.xml @@ -54,5 +54,5 @@ latin:keyboardLayout="@xml/rowkeys_symbols_shift3" /> </Row> <include - latin:keyboardLayout="@xml/rows_symbols_shift4" /> + latin:keyboardLayout="@xml/row_symbols_shift4" /> </merge> diff --git a/java/res/xml-sw600dp/rows_colemak.xml b/java/res/xml-sw600dp/rows_colemak.xml new file mode 100644 index 000000000..6c88e6517 --- /dev/null +++ b/java/res/xml-sw600dp/rows_colemak.xml @@ -0,0 +1,65 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2012, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <include + latin:keyboardLayout="@xml/key_styles_common" /> + <Row + latin:keyWidth="8.5%p" + > + <include + latin:keyboardLayout="@xml/rowkeys_colemak1" + latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> + <include + latin:keyboardLayout="@xml/key_colemak_semicolon" /> + <Key + latin:keyStyle="deleteKeyStyle" + latin:keyWidth="fillBoth" /> + </Row> + <Row + latin:keyWidth="8.5%p" + > + <include + latin:keyboardLayout="@xml/rowkeys_colemak2" + latin:keyXPos="4.5%p" /> + <Key + latin:keyStyle="enterKeyStyle" + latin:keyWidth="fillBoth" /> + </Row> + <Row + latin:keyWidth="8.5%p" + > + <Key + latin:keyStyle="shiftKeyStyle" + latin:keyWidth="10.0%p" /> + <include + latin:keyboardLayout="@xml/rowkeys_colemak3" /> + <include + latin:keyboardLayout="@xml/keys_comma_period" /> + <include + latin:keyboardLayout="@xml/key_smiley" + latin:keyXPos="-8.5%p" + latin:keyWidth="fillRight" /> + </Row> + <include + latin:keyboardLayout="@xml/row_qwerty4" /> +</merge> diff --git a/java/res/xml-sw600dp/rows_dvorak.xml b/java/res/xml-sw600dp/rows_dvorak.xml new file mode 100644 index 000000000..aec4a5cf5 --- /dev/null +++ b/java/res/xml-sw600dp/rows_dvorak.xml @@ -0,0 +1,63 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2012, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <include + latin:keyboardLayout="@xml/key_styles_common" /> + <Row + latin:keyWidth="8.5%p" + > + <include + latin:keyboardLayout="@xml/keys_dvorak_123" /> + <include + latin:keyboardLayout="@xml/rowkeys_dvorak1" + latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> + <Key + latin:keyStyle="deleteKeyStyle" + latin:keyWidth="fillBoth" /> + </Row> + <Row + latin:keyWidth="8.5%p" + > + <include + latin:keyboardLayout="@xml/rowkeys_dvorak2" + latin:keyXPos="4.5%p" /> + <Key + latin:keyStyle="enterKeyStyle" + latin:keyWidth="fillBoth" /> + </Row> + <Row + latin:keyWidth="8.5%p" + > + <Key + latin:keyStyle="shiftKeyStyle" + latin:keyWidth="10.0%p" /> + <include + latin:keyboardLayout="@xml/rowkeys_dvorak3" /> + <include + latin:keyboardLayout="@xml/key_smiley" + latin:keyXPos="-8.5%p" + latin:keyWidth="fillRight" /> + </Row> + <include + latin:keyboardLayout="@xml/row_dvorak4" /> +</merge> diff --git a/java/res/xml-sw600dp/rows_hebrew.xml b/java/res/xml-sw600dp/rows_hebrew.xml index a60da3a2b..d6861e8e4 100644 --- a/java/res/xml-sw600dp/rows_hebrew.xml +++ b/java/res/xml-sw600dp/rows_hebrew.xml @@ -27,7 +27,9 @@ latin:keyWidth="8.5%p" > <include - latin:keyboardLayout="@xml/keys_apostrophe_dash" /> + latin:keyboardLayout="@xml/key_apostrophe" /> + <include + latin:keyboardLayout="@xml/key_dash" /> <include latin:keyboardLayout="@xml/rowkeys_hebrew1" /> <Key diff --git a/java/res/xml-sw600dp/rows_number_normal.xml b/java/res/xml-sw600dp/rows_number_normal.xml index 00fda2899..3fda2aa13 100644 --- a/java/res/xml-sw600dp/rows_number_normal.xml +++ b/java/res/xml-sw600dp/rows_number_normal.xml @@ -70,7 +70,7 @@ <Key latin:keyLabel="," latin:keyLabelFlags="hasPopupHint" - latin:moreKeys="!label/more_keys_for_am_pm" + latin:moreKeys="!text/more_keys_for_am_pm" latin:keyStyle="numKeyStyle" latin:keyWidth="9.25%p" /> </case> diff --git a/java/res/xml-sw600dp/rows_symbols.xml b/java/res/xml-sw600dp/rows_symbols.xml index ea9b30245..ada22dff6 100644 --- a/java/res/xml-sw600dp/rows_symbols.xml +++ b/java/res/xml-sw600dp/rows_symbols.xml @@ -58,5 +58,5 @@ latin:keyWidth="fillRight" /> </Row> <include - latin:keyboardLayout="@xml/rows_symbols4" /> + latin:keyboardLayout="@xml/row_symbols4" /> </merge> diff --git a/java/res/xml-sw600dp/rows_symbols_shift.xml b/java/res/xml-sw600dp/rows_symbols_shift.xml index cc66f9676..0750670d6 100644 --- a/java/res/xml-sw600dp/rows_symbols_shift.xml +++ b/java/res/xml-sw600dp/rows_symbols_shift.xml @@ -54,5 +54,5 @@ latin:keyboardLayout="@xml/rowkeys_symbols_shift3" /> </Row> <include - latin:keyboardLayout="@xml/rows_symbols_shift4" /> + latin:keyboardLayout="@xml/row_symbols_shift4" /> </merge> diff --git a/java/res/xml-sw600dp/kbd_hebrew_symbols_shift.xml b/java/res/xml-sw768dp/key_shortcut.xml index 3c5ed5e09..1e367a9d3 100644 --- a/java/res/xml-sw600dp/kbd_hebrew_symbols_shift.xml +++ b/java/res/xml-sw768dp/key_shortcut.xml @@ -18,9 +18,17 @@ */ --> -<Keyboard +<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > - <include - latin:keyboardLayout="@xml/rows_10_10_7_symbols_shift" /> -</Keyboard> + <switch> + <case + latin:shortcutKeyEnabled="true" + > + <Key + latin:keyStyle="shortcutKeyStyle" + latin:keyXPos="-8.047%p" + latin:keyWidth="fillRight" /> + </case> + </switch> +</merge> diff --git a/java/res/xml-sw768dp/key_space.xml b/java/res/xml-sw768dp/key_space.xml new file mode 100644 index 000000000..f4d048006 --- /dev/null +++ b/java/res/xml-sw768dp/key_space.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2012, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <Spacer + latin:keyWidth="0dp" + latin:keyXPos="31.250%p" /> + <switch> + <case + latin:languageCode="fa" + > + <Key + latin:keyStyle="spaceKeyStyle" + latin:keyWidth="29.453%p" /> + <!-- U+200C: "" ZERO WIDTH NON-JOINER + U+200D: "" ZERO WIDTH JOINER --> + <Key + latin:keyStyle="zwnjKeyStyle" /> + </case> + <default> + <Key + latin:keyStyle="spaceKeyStyle" + latin:keyWidth="37.500%p" /> + </default> + </switch> +</merge> diff --git a/java/res/xml-sw768dp/key_styles_common.xml b/java/res/xml-sw768dp/key_styles_common.xml index c3e2fd93d..6cb160b6a 100644 --- a/java/res/xml-sw768dp/key_styles_common.xml +++ b/java/res/xml-sw768dp/key_styles_common.xml @@ -42,7 +42,7 @@ <key-style latin:styleName="shiftKeyStyle" latin:code="!code/key_shift" - latin:keyIcon="iconShiftKeyShifted" + latin:keyIcon="!icon/shift_key_shifted" latin:keyActionFlags="noKeyPreview" latin:backgroundType="stickyOff" /> </case> @@ -52,7 +52,7 @@ <key-style latin:styleName="shiftKeyStyle" latin:code="!code/key_shift" - latin:keyIcon="iconShiftKeyShifted" + latin:keyIcon="!icon/shift_key_shifted" latin:keyActionFlags="noKeyPreview" latin:backgroundType="stickyOn" /> </case> @@ -60,7 +60,7 @@ <key-style latin:styleName="shiftKeyStyle" latin:code="!code/key_shift" - latin:keyIcon="iconShiftKey" + latin:keyIcon="!icon/shift_key" latin:keyActionFlags="noKeyPreview" latin:backgroundType="stickyOff" /> </default> @@ -68,7 +68,7 @@ <key-style latin:styleName="deleteKeyStyle" latin:code="!code/key_delete" - latin:keyIcon="iconDeleteKey" + latin:keyIcon="!icon/delete_key" latin:keyActionFlags="isRepeatable|noKeyPreview" latin:backgroundType="functional" /> <include @@ -82,8 +82,8 @@ <key-style latin:styleName="zwnjKeyStyle" latin:code="0x200C" - latin:keyIcon="iconZwnjKey" - latin:moreKeys="!icon/zwjKey|‍" + latin:keyIcon="!icon/zwnj_key" + latin:moreKeys="!icon/zwj_key|‍" latin:keyLabelFlags="hasPopupHint" latin:keyActionFlags="noKeyPreview" /> <key-style @@ -91,19 +91,18 @@ latin:keyLabel=":-)" latin:keyOutputText=":-) " latin:keyLabelFlags="hasPopupHint|preserveCase" - latin:moreKeys="!label/more_keys_for_smiley" /> + latin:moreKeys="!text/more_keys_for_smiley" /> <key-style latin:styleName="shortcutKeyStyle" latin:code="!code/key_shortcut" - latin:keyIcon="iconShortcutKey" - latin:keyIconDisabled="iconDisabledShortcutKey" - latin:keyLabelFlags="preserveCase" + latin:keyIcon="!icon/shortcut_key" + latin:keyIconDisabled="!icon/shortcut_key_disabled" latin:keyActionFlags="noKeyPreview|altCodeWhileTyping" latin:backgroundType="functional" /> <key-style latin:styleName="settingsKeyStyle" latin:code="!code/key_settings" - latin:keyIcon="iconSettingsKey" + latin:keyIcon="!icon/settings_key" latin:keyActionFlags="noKeyPreview|altCodeWhileTyping" latin:backgroundType="functional" /> <switch> @@ -114,7 +113,7 @@ <key-style latin:styleName="tabKeyStyle" latin:code="!code/key_action_previous" - latin:keyLabel="!label/label_tab_key" + latin:keyLabel="!text/label_tab_key" latin:keyLabelFlags="fontNormal|preserveCase" latin:backgroundType="functional" /> </case> @@ -122,7 +121,7 @@ <key-style latin:styleName="tabKeyStyle" latin:code="!code/key_tab" - latin:keyLabel="!label/label_tab_key" + latin:keyLabel="!text/label_tab_key" latin:keyLabelFlags="fontNormal|preserveCase" latin:backgroundType="functional" /> </default> @@ -130,35 +129,35 @@ <key-style latin:styleName="toSymbolKeyStyle" latin:code="!code/key_switch_alpha_symbol" - latin:keyLabel="!label/label_to_symbol_key" - latin:keyLabelFlags="fontNormal|preserveCase" + latin:keyLabel="!text/label_to_symbol_key" + latin:keyLabelFlags="fontNormal" latin:keyActionFlags="noKeyPreview" latin:backgroundType="functional" /> <key-style latin:styleName="toAlphaKeyStyle" latin:code="!code/key_switch_alpha_symbol" - latin:keyLabel="!label/label_to_alpha_key" + latin:keyLabel="!text/label_to_alpha_key" latin:keyLabelFlags="fontNormal|preserveCase" latin:keyActionFlags="noKeyPreview" latin:backgroundType="functional" /> <key-style latin:styleName="toMoreSymbolKeyStyle" latin:code="!code/key_shift" - latin:keyLabel="!label/label_to_more_symbol_for_tablet_key" - latin:keyLabelFlags="fontNormal|preserveCase" + latin:keyLabel="!text/label_to_more_symbol_for_tablet_key" + latin:keyLabelFlags="fontNormal" latin:keyActionFlags="noKeyPreview" latin:backgroundType="functional" /> <key-style latin:styleName="backFromMoreSymbolKeyStyle" latin:code="!code/key_shift" - latin:keyLabel="!label/label_to_symbol_key" - latin:keyLabelFlags="fontNormal|preserveCase" + latin:keyLabel="!text/label_to_symbol_key" + latin:keyLabelFlags="fontNormal" latin:keyActionFlags="noKeyPreview" latin:backgroundType="functional" /> <key-style latin:styleName="comKeyStyle" - latin:keyLabel="!label/keylabel_for_popular_domain" + latin:keyLabel="!text/keylabel_for_popular_domain" latin:keyLabelFlags="fontNormal|hasPopupHint|preserveCase" - latin:keyOutputText="!label/keylabel_for_popular_domain" - latin:moreKeys="!label/more_keys_for_popular_domain" /> + latin:keyOutputText="!text/keylabel_for_popular_domain" + latin:moreKeys="!text/more_keys_for_popular_domain" /> </merge> diff --git a/java/res/xml-sw768dp/keys_f1f2.xml b/java/res/xml-sw768dp/keys_f1f2.xml new file mode 100644 index 000000000..569703572 --- /dev/null +++ b/java/res/xml-sw768dp/keys_f1f2.xml @@ -0,0 +1,71 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2012, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <switch> + <case + latin:mode="url" + > + <Key + latin:keyStyle="comKeyStyle" + latin:keyWidth="16.084%p" /> + </case> + <default> + <switch> + <case + latin:mode="email" + > + <Key + latin:keyStyle="comKeyStyle" /> + </case> + <case + latin:imeAction="actionSearch" + > + <Key + latin:keyLabel=":" + latin:keyHintLabel="+" + latin:moreKeys="+" + latin:keyStyle="hasShiftedLetterHintStyle" /> + </case> + <default> + <Key + latin:keyStyle="smileyKeyStyle" /> + </default> + </switch> + <switch> + <case + latin:mode="email" + > + <Key + latin:keyLabel="\@" /> + </case> + <default> + <Key + latin:keyLabel="/" + latin:keyHintLabel="\@" + latin:moreKeys="\@" + latin:keyStyle="hasShiftedLetterHintStyle" /> + </default> + </switch> + </default> + </switch> +</merge> diff --git a/java/res/xml-sw768dp/row_dvorak4.xml b/java/res/xml-sw768dp/row_dvorak4.xml new file mode 100644 index 000000000..f95661feb --- /dev/null +++ b/java/res/xml-sw768dp/row_dvorak4.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2012, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <Row + latin:keyWidth="8.047%p" + > + <include + latin:keyboardLayout="@xml/key_settings" /> + <Spacer + latin:keyXPos="15.157%p" + latin:keyWidth="0%p" /> + <include + latin:keyboardLayout="@xml/keys_f1f2" /> + <include + latin:keyboardLayout="@xml/key_space" /> + <include + latin:keyboardLayout="@xml/key_question_exclamation" /> + <include + latin:keyboardLayout="@xml/key_dash" /> + <include + latin:keyboardLayout="@xml/key_shortcut" /> + </Row> +</merge> diff --git a/java/res/xml-sw768dp/row_qwerty4.xml b/java/res/xml-sw768dp/row_qwerty4.xml index 90da21ba3..a1011c85d 100644 --- a/java/res/xml-sw768dp/row_qwerty4.xml +++ b/java/res/xml-sw768dp/row_qwerty4.xml @@ -29,73 +29,10 @@ <Spacer latin:keyXPos="15.157%p" latin:keyWidth="0%p" /> - <switch> - <case - latin:mode="url" - > - <Key - latin:keyStyle="comKeyStyle" - latin:keyWidth="16.084%p" /> - </case> - <default> - <switch> - <case - latin:mode="email" - > - <Key - latin:keyStyle="comKeyStyle" /> - </case> - <case - latin:imeAction="actionSearch" - > - <Key - latin:keyLabel=":" - latin:keyHintLabel="+" - latin:moreKeys="+" - latin:keyStyle="hasShiftedLetterHintStyle" /> - </case> - <default> - <Key - latin:keyStyle="smileyKeyStyle" /> - </default> - </switch> - <switch> - <case - latin:mode="email" - > - <Key - latin:keyLabel="\@" /> - </case> - <default> - <Key - latin:keyLabel="/" - latin:keyHintLabel="\@" - latin:moreKeys="\@" - latin:keyStyle="hasShiftedLetterHintStyle" /> - </default> - </switch> - </default> - </switch> - <switch> - <case - latin:languageCode="fa" - > - <Key - latin:keyStyle="spaceKeyStyle" - latin:keyXPos="31.250%p" - latin:keyWidth="29.453%p" /> - <!-- U+200C: "" ZERO WIDTH NON-JOINER - U+200D: "" ZERO WIDTH JOINER --> - <Key - latin:keyStyle="zwnjKeyStyle" /> - </case> - <default> - <Key - latin:keyStyle="spaceKeyStyle" - latin:keyXPos="31.250%p" - latin:keyWidth="37.500%p" /> - </default> - </switch> + <include + latin:keyboardLayout="@xml/keys_f1f2" /> + <include + latin:keyboardLayout="@xml/key_space" /> <switch> <case latin:languageCode="iw" @@ -105,18 +42,12 @@ </case> <default> <include - latin:keyboardLayout="@xml/keys_apostrophe_dash" /> + latin:keyboardLayout="@xml/key_apostrophe" /> + <include + latin:keyboardLayout="@xml/key_dash" /> </default> </switch> - <switch> - <case - latin:shortcutKeyEnabled="true" - > - <Key - latin:keyStyle="shortcutKeyStyle" - latin:keyXPos="-8.047%p" - latin:keyWidth="fillRight" /> - </case> - </switch> + <include + latin:keyboardLayout="@xml/key_shortcut" /> </Row> </merge> diff --git a/java/res/xml-sw768dp/rows_symbols4.xml b/java/res/xml-sw768dp/row_symbols4.xml index dd1647b95..29845aae0 100644 --- a/java/res/xml-sw768dp/rows_symbols4.xml +++ b/java/res/xml-sw768dp/row_symbols4.xml @@ -19,7 +19,7 @@ --> <merge - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Row latin:keyWidth="8.047%p" @@ -31,13 +31,11 @@ latin:keyXPos="15.157%p" /> <Key latin:keyLabel="\@" /> - <Key - latin:keyStyle="spaceKeyStyle" - latin:keyXPos="31.250%p" - latin:keyWidth="37.500%p" /> + <include + latin:keyboardLayout="@xml/key_space" /> <Key latin:keyLabel=""" - latin:moreKeys="!label/more_keys_for_tablet_double_quote" /> + latin:moreKeys="!text/more_keys_for_tablet_double_quote" /> <Key latin:keyLabel="_" /> <switch> diff --git a/java/res/xml-sw768dp/rows_symbols_shift4.xml b/java/res/xml-sw768dp/row_symbols_shift4.xml index 8e0071f63..6828fdb78 100644 --- a/java/res/xml-sw768dp/rows_symbols_shift4.xml +++ b/java/res/xml-sw768dp/row_symbols_shift4.xml @@ -19,17 +19,15 @@ --> <merge - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Row latin:keyWidth="8.047%p" > <include latin:keyboardLayout="@xml/key_settings" /> - <Key - latin:keyStyle="spaceKeyStyle" - latin:keyXPos="31.250%p" - latin:keyWidth="37.500%p" /> + <include + latin:keyboardLayout="@xml/key_space" /> <switch> <case latin:shortcutKeyEnabled="true" diff --git a/java/res/xml-sw768dp/rows_10_10_7_symbols.xml b/java/res/xml-sw768dp/rows_10_10_7_symbols.xml index 1d61d999b..44f096422 100644 --- a/java/res/xml-sw768dp/rows_10_10_7_symbols.xml +++ b/java/res/xml-sw768dp/rows_10_10_7_symbols.xml @@ -65,5 +65,5 @@ latin:keyWidth="fillBoth" /> </Row> <include - latin:keyboardLayout="@xml/rows_symbols4" /> + latin:keyboardLayout="@xml/row_symbols4" /> </merge> diff --git a/java/res/xml-sw768dp/rows_10_10_7_symbols_shift.xml b/java/res/xml-sw768dp/rows_10_10_7_symbols_shift.xml index d22f8331d..bea0d9c18 100644 --- a/java/res/xml-sw768dp/rows_10_10_7_symbols_shift.xml +++ b/java/res/xml-sw768dp/rows_10_10_7_symbols_shift.xml @@ -65,5 +65,5 @@ latin:keyWidth="fillBoth" /> </Row> <include - latin:keyboardLayout="@xml/rows_symbols_shift4" /> + latin:keyboardLayout="@xml/row_symbols_shift4" /> </merge> diff --git a/java/res/xml-sw768dp/rows_colemak.xml b/java/res/xml-sw768dp/rows_colemak.xml new file mode 100644 index 000000000..e00448032 --- /dev/null +++ b/java/res/xml-sw768dp/rows_colemak.xml @@ -0,0 +1,71 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2010, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <include + latin:keyboardLayout="@xml/key_styles_common" /> + <Row + latin:keyWidth="8.282%p" + > + <Key + latin:keyStyle="tabKeyStyle" + latin:keyLabelFlags="alignLeft" + latin:keyWidth="7.969%p" /> + <include + latin:keyboardLayout="@xml/rowkeys_colemak1" + latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> + <include + latin:keyboardLayout="@xml/key_colemak_semicolon" /> + <Key + latin:keyStyle="deleteKeyStyle" + latin:keyWidth="fillBoth" /> + </Row> + <Row + latin:keyWidth="8.125%p" + > + <Key + latin:keyStyle="toSymbolKeyStyle" + latin:keyLabelFlags="alignLeft" + latin:keyWidth="10.167%p" /> + <include + latin:keyboardLayout="@xml/rowkeys_colemak2" /> + <Key + latin:keyStyle="enterKeyStyle" + latin:keyWidth="fillBoth" /> + </Row> + <Row + latin:keyWidth="8.047%p" + > + <Key + latin:keyStyle="shiftKeyStyle" + latin:keyWidth="13.829%p" /> + <include + latin:keyboardLayout="@xml/rowkeys_colemak3" /> + <include + latin:keyboardLayout="@xml/keys_comma_period" /> + <Key + latin:keyStyle="shiftKeyStyle" + latin:keyWidth="fillBoth" /> + </Row> + <include + latin:keyboardLayout="@xml/row_qwerty4" /> +</merge> diff --git a/java/res/xml-sw768dp/rows_dvorak.xml b/java/res/xml-sw768dp/rows_dvorak.xml new file mode 100644 index 000000000..91d0f1bce --- /dev/null +++ b/java/res/xml-sw768dp/rows_dvorak.xml @@ -0,0 +1,69 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2012, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <include + latin:keyboardLayout="@xml/key_styles_common" /> + <Row + latin:keyWidth="8.282%p" + > + <Key + latin:keyStyle="tabKeyStyle" + latin:keyLabelFlags="alignLeft" + latin:keyWidth="7.969%p" /> + <include + latin:keyboardLayout="@xml/keys_dvorak_123" /> + <include + latin:keyboardLayout="@xml/rowkeys_dvorak1" + latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> + <Key + latin:keyStyle="deleteKeyStyle" + latin:keyWidth="fillBoth" /> + </Row> + <Row + latin:keyWidth="8.125%p" + > + <Key + latin:keyStyle="toSymbolKeyStyle" + latin:keyLabelFlags="alignLeft" + latin:keyWidth="10.167%p" /> + <include + latin:keyboardLayout="@xml/rowkeys_dvorak2" /> + <Key + latin:keyStyle="enterKeyStyle" + latin:keyWidth="fillBoth" /> + </Row> + <Row + latin:keyWidth="8.047%p" + > + <Key + latin:keyStyle="shiftKeyStyle" + latin:keyWidth="13.829%p" /> + <include + latin:keyboardLayout="@xml/rowkeys_dvorak3" /> + <Key + latin:keyStyle="shiftKeyStyle" + latin:keyWidth="fillBoth" /> + </Row> + <include + latin:keyboardLayout="@xml/row_dvorak4" /> +</merge> diff --git a/java/res/xml-sw768dp/rows_hebrew.xml b/java/res/xml-sw768dp/rows_hebrew.xml index 476071a5e..e70f45071 100644 --- a/java/res/xml-sw768dp/rows_hebrew.xml +++ b/java/res/xml-sw768dp/rows_hebrew.xml @@ -31,7 +31,9 @@ latin:keyLabelFlags="alignLeft" latin:keyWidth="7.969%p" /> <include - latin:keyboardLayout="@xml/keys_apostrophe_dash" /> + latin:keyboardLayout="@xml/key_apostrophe" /> + <include + latin:keyboardLayout="@xml/key_dash" /> <include latin:keyboardLayout="@xml/rowkeys_hebrew1" /> <Key diff --git a/java/res/xml-sw768dp/rows_number_normal.xml b/java/res/xml-sw768dp/rows_number_normal.xml index f868cbb8b..0d75a37d2 100644 --- a/java/res/xml-sw768dp/rows_number_normal.xml +++ b/java/res/xml-sw768dp/rows_number_normal.xml @@ -72,7 +72,7 @@ <Key latin:keyLabel="," latin:keyLabelFlags="hasPopupHint" - latin:moreKeys="!label/more_keys_for_am_pm" + latin:moreKeys="!text/more_keys_for_am_pm" latin:keyStyle="numKeyStyle" latin:keyWidth="8.047%p" /> </case> diff --git a/java/res/xml-sw768dp/rows_symbols.xml b/java/res/xml-sw768dp/rows_symbols.xml index ed2df18d7..fcc624f2a 100644 --- a/java/res/xml-sw768dp/rows_symbols.xml +++ b/java/res/xml-sw768dp/rows_symbols.xml @@ -65,5 +65,5 @@ latin:keyWidth="fillBoth" /> </Row> <include - latin:keyboardLayout="@xml/rows_symbols4" /> + latin:keyboardLayout="@xml/row_symbols4" /> </merge> diff --git a/java/res/xml-sw768dp/rows_symbols_shift.xml b/java/res/xml-sw768dp/rows_symbols_shift.xml index 30e1df0bf..1d13bb1e9 100644 --- a/java/res/xml-sw768dp/rows_symbols_shift.xml +++ b/java/res/xml-sw768dp/rows_symbols_shift.xml @@ -65,5 +65,5 @@ latin:keyWidth="fillBoth" /> </Row> <include - latin:keyboardLayout="@xml/rows_symbols_shift4" /> + latin:keyboardLayout="@xml/row_symbols_shift4" /> </merge> diff --git a/java/res/xml-sw768dp/rows_thai_symbols.xml b/java/res/xml-sw768dp/rows_thai_symbols.xml index 20f22bc5b..b3f60f5e6 100644 --- a/java/res/xml-sw768dp/rows_thai_symbols.xml +++ b/java/res/xml-sw768dp/rows_thai_symbols.xml @@ -72,5 +72,5 @@ latin:keyWidth="fillBoth" /> </Row> <include - latin:keyboardLayout="@xml/rows_symbols4" /> + latin:keyboardLayout="@xml/row_symbols4" /> </merge> diff --git a/java/res/xml-sw768dp/rows_thai_symbols_shift.xml b/java/res/xml-sw768dp/rows_thai_symbols_shift.xml index 467dd19ad..573e0e37a 100644 --- a/java/res/xml-sw768dp/rows_thai_symbols_shift.xml +++ b/java/res/xml-sw768dp/rows_thai_symbols_shift.xml @@ -72,5 +72,5 @@ latin:keyWidth="fillBoth" /> </Row> <include - latin:keyboardLayout="@xml/rows_symbols_shift4" /> + latin:keyboardLayout="@xml/row_symbols_shift4" /> </merge> diff --git a/java/res/xml/kbd_azerty_symbols.xml b/java/res/xml/kbd_10_10_7_symbols.xml index 7e075df48..7e075df48 100644 --- a/java/res/xml/kbd_azerty_symbols.xml +++ b/java/res/xml/kbd_10_10_7_symbols.xml diff --git a/java/res/xml/kbd_azerty_symbols_shift.xml b/java/res/xml/kbd_10_10_7_symbols_shift.xml index 25db3c84d..25db3c84d 100644 --- a/java/res/xml/kbd_azerty_symbols_shift.xml +++ b/java/res/xml/kbd_10_10_7_symbols_shift.xml diff --git a/java/res/xml/kbd_spanish_symbols.xml b/java/res/xml/kbd_colemak.xml index 7e075df48..ee1d5e86e 100644 --- a/java/res/xml/kbd_spanish_symbols.xml +++ b/java/res/xml/kbd_colemak.xml @@ -22,5 +22,5 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <include - latin:keyboardLayout="@xml/rows_symbols" /> + latin:keyboardLayout="@xml/rows_colemak" /> </Keyboard> diff --git a/java/res/xml/kbd_hebrew_symbols.xml b/java/res/xml/kbd_dvorak.xml index 7e075df48..27c6a5084 100644 --- a/java/res/xml/kbd_hebrew_symbols.xml +++ b/java/res/xml/kbd_dvorak.xml @@ -22,5 +22,5 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <include - latin:keyboardLayout="@xml/rows_symbols" /> + latin:keyboardLayout="@xml/rows_dvorak" /> </Keyboard> diff --git a/java/res/xml/kbd_hebrew_symbols_shift.xml b/java/res/xml/kbd_hebrew_symbols_shift.xml deleted file mode 100644 index 25db3c84d..000000000 --- a/java/res/xml/kbd_hebrew_symbols_shift.xml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -** -** Copyright 2012, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ ---> - -<Keyboard - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" -> - <include - latin:keyboardLayout="@xml/rows_symbols_shift" /> -</Keyboard> diff --git a/java/res/xml/kbd_spanish_symbols_shift.xml b/java/res/xml/kbd_spanish_symbols_shift.xml deleted file mode 100644 index 25db3c84d..000000000 --- a/java/res/xml/kbd_spanish_symbols_shift.xml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -** -** Copyright 2012, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ ---> - -<Keyboard - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" -> - <include - latin:keyboardLayout="@xml/rows_symbols_shift" /> -</Keyboard> diff --git a/java/res/xml/key_azerty_quote.xml b/java/res/xml/key_azerty_quote.xml index b8c51d30f..65789ea69 100644 --- a/java/res/xml/key_azerty_quote.xml +++ b/java/res/xml/key_azerty_quote.xml @@ -31,7 +31,7 @@ <default> <Key latin:keyLabel="\'" - latin:moreKeys="!label/more_keys_for_single_quote" /> + latin:moreKeys="!text/more_keys_for_single_quote" /> </default> </switch> </merge> diff --git a/java/res/xml/key_colemak_semicolon.xml b/java/res/xml/key_colemak_semicolon.xml new file mode 100644 index 000000000..307b4ebca --- /dev/null +++ b/java/res/xml/key_colemak_semicolon.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2012, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <switch> + <case + latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLockShifted" + > + <Key + latin:keyLabel=";" + latin:keyHintLabel="0" + latin:additionalMoreKeys="0" /> + </case> + <default> + <Key + latin:keyLabel=":" + latin:keyHintLabel="0" + latin:additionalMoreKeys="0" + latin:moreKeys=";" /> + </default> + </switch> +</merge> diff --git a/java/res/xml/key_f1.xml b/java/res/xml/key_f1.xml new file mode 100644 index 000000000..455f9ef59 --- /dev/null +++ b/java/res/xml/key_f1.xml @@ -0,0 +1,54 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2012, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <switch> + <case + latin:mode="url" + > + <Key + latin:keyLabel="/" + latin:keyStyle="f1MoreKeysStyle" /> + </case> + <case + latin:mode="email" + > + <Key + latin:keyLabel="\@" + latin:keyStyle="f1MoreKeysStyle" /> + </case> + <case + latin:hasShortcutKey="true" + > + <Key + latin:keyStyle="shortcutKeyStyle" /> + </case> + <!-- latin:hasShortcutKey="false" --> + <default> + <Key + latin:keyLabel="!text/keylabel_for_comma" + latin:keyLabelFlags="hasPopupHint" + latin:additionalMoreKeys="!text/more_keys_for_comma" + latin:keyStyle="f1MoreKeysStyle" /> + </default> + </switch> +</merge> diff --git a/java/res/xml/key_space.xml b/java/res/xml/key_space.xml new file mode 100644 index 000000000..c47407dc7 --- /dev/null +++ b/java/res/xml/key_space.xml @@ -0,0 +1,66 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2012, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <Spacer + latin:keyWidth="0dp" + latin:keyXPos="25%p" /> + <switch> + <case + latin:languageCode="fa" + latin:languageSwitchKeyEnabled="true" + > + <Key + latin:keyStyle="languageSwitchKeyStyle" /> + <Key + latin:keyStyle="spaceKeyStyle" + latin:keyWidth="30%p" /> + <Key + latin:keyStyle="zwnjKeyStyle" /> + </case> + <case + latin:languageCode="fa" + latin:languageSwitchKeyEnabled="false" + > + <Key + latin:keyStyle="spaceKeyStyle" + latin:keyWidth="40%p" /> + <Key + latin:keyStyle="zwnjKeyStyle" /> + </case> + <case + latin:languageSwitchKeyEnabled="true" + > + <Key + latin:keyStyle="languageSwitchKeyStyle" /> + <Key + latin:keyStyle="spaceKeyStyle" + latin:keyWidth="40%p" /> + </case> + <!-- languageSwitchKeyEnabled="false" --> + <default> + <Key + latin:keyStyle="spaceKeyStyle" + latin:keyWidth="50%p" /> + </default> + </switch> +</merge> diff --git a/java/res/xml/key_styles_common.xml b/java/res/xml/key_styles_common.xml index ec011d08b..4341b7903 100644 --- a/java/res/xml/key_styles_common.xml +++ b/java/res/xml/key_styles_common.xml @@ -34,8 +34,8 @@ <default> <key-style latin:styleName="f1MoreKeysStyle" - latin:keyLabelFlags="hasPopupHint|preserveCase" - latin:moreKeys="!label/settings_as_more_key" + latin:keyLabelFlags="hasPopupHint" + latin:moreKeys="!text/settings_as_more_key" latin:backgroundType="functional" /> </default> </switch> @@ -47,7 +47,7 @@ <key-style latin:styleName="shiftKeyStyle" latin:code="!code/key_shift" - latin:keyIcon="iconShiftKeyShifted" + latin:keyIcon="!icon/shift_key_shifted" latin:keyActionFlags="noKeyPreview" latin:backgroundType="stickyOff" /> </case> @@ -57,7 +57,7 @@ <key-style latin:styleName="shiftKeyStyle" latin:code="!code/key_shift" - latin:keyIcon="iconShiftKeyShifted" + latin:keyIcon="!icon/shift_key_shifted" latin:keyActionFlags="noKeyPreview" latin:backgroundType="stickyOn" /> </case> @@ -65,7 +65,7 @@ <key-style latin:styleName="shiftKeyStyle" latin:code="!code/key_shift" - latin:keyIcon="iconShiftKey" + latin:keyIcon="!icon/shift_key" latin:keyActionFlags="noKeyPreview" latin:backgroundType="stickyOff" /> </default> @@ -73,7 +73,7 @@ <key-style latin:styleName="deleteKeyStyle" latin:code="!code/key_delete" - latin:keyIcon="iconDeleteKey" + latin:keyIcon="!icon/delete_key" latin:keyActionFlags="isRepeatable|noKeyPreview" latin:backgroundType="functional" /> <include @@ -98,7 +98,7 @@ latin:keyLabel=":-)" latin:keyOutputText=":-) " latin:keyLabelFlags="hasPopupHint" - latin:moreKeys="!label/more_keys_for_smiley" + latin:moreKeys="!text/more_keys_for_smiley" latin:backgroundType="functional" /> </case> </switch> @@ -112,40 +112,39 @@ <key-style latin:styleName="zwnjKeyStyle" latin:code="0x200C" - latin:keyIcon="iconZwnjKey" - latin:moreKeys="!icon/zwjKey|‍" + latin:keyIcon="!icon/zwnj_key" + latin:moreKeys="!icon/zwj_key|‍" latin:keyLabelFlags="hasPopupHint" latin:keyActionFlags="noKeyPreview" latin:backgroundType="functional" /> <key-style latin:styleName="shortcutKeyStyle" latin:code="!code/key_shortcut" - latin:keyIcon="iconShortcutKey" - latin:keyIconDisabled="iconDisabledShortcutKey" - latin:keyLabelFlags="preserveCase" + latin:keyIcon="!icon/shortcut_key" + latin:keyIconDisabled="!icon/shortcut_key_disabled" latin:keyActionFlags="noKeyPreview|altCodeWhileTyping" latin:altCode="!code/key_space" latin:parentStyle="f1MoreKeysStyle" /> <key-style latin:styleName="languageSwitchKeyStyle" latin:code="!code/key_language_switch" - latin:keyIcon="iconLanguageSwitchKey" + latin:keyIcon="!icon/language_switch_key" latin:keyActionFlags="noKeyPreview|altCodeWhileTyping|enableLongPress" latin:altCode="!code/key_space" latin:backgroundType="functional" /> <key-style latin:styleName="tabKeyStyle" latin:code="!code/key_tab" - latin:keyIcon="iconTabKey" - latin:keyIconPreview="iconPreviewTabKey" + latin:keyIcon="!icon/tab_key" + latin:keyIconPreview="!icon/tab_key_preview" latin:backgroundType="functional" /> <!-- Note: This key style is not for functional tab key. This is used for the tab key which is laid out as normal letter key. --> <key-style latin:styleName="nonSpecialBackgroundTabKeyStyle" latin:code="!code/key_tab" - latin:keyIcon="iconTabKey" - latin:keyIconPreview="iconPreviewTabKey" /> + latin:keyIcon="!icon/tab_key" + latin:keyIconPreview="!icon/tab_key_preview" /> <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 @@ -157,9 +156,9 @@ <key-style latin:styleName="toSymbolKeyStyle" latin:code="!code/key_switch_alpha_symbol" - latin:keyIcon="iconShortcutForLabel" - latin:keyLabel="!label/label_to_symbol_with_microphone_key" - latin:keyLabelFlags="withIconRight|preserveCase" + latin:keyIcon="!icon/shortcut_for_label" + latin:keyLabel="!text/label_to_symbol_with_microphone_key" + latin:keyLabelFlags="withIconRight" latin:keyActionFlags="noKeyPreview" latin:backgroundType="functional" /> </case> @@ -167,8 +166,7 @@ <key-style latin:styleName="toSymbolKeyStyle" latin:code="!code/key_switch_alpha_symbol" - latin:keyLabel="!label/label_to_symbol_key" - latin:keyLabelFlags="preserveCase" + latin:keyLabel="!text/label_to_symbol_key" latin:keyActionFlags="noKeyPreview" latin:backgroundType="functional" /> </default> @@ -176,29 +174,27 @@ <key-style latin:styleName="toAlphaKeyStyle" latin:code="!code/key_switch_alpha_symbol" - latin:keyLabel="!label/label_to_alpha_key" + latin:keyLabel="!text/label_to_alpha_key" latin:keyLabelFlags="preserveCase" latin:keyActionFlags="noKeyPreview" latin:backgroundType="functional" /> <key-style latin:styleName="toMoreSymbolKeyStyle" latin:code="!code/key_shift" - latin:keyLabel="!label/label_to_more_symbol_key" - latin:keyLabelFlags="preserveCase" + latin:keyLabel="!text/label_to_more_symbol_key" latin:keyActionFlags="noKeyPreview" latin:backgroundType="functional" /> <key-style latin:styleName="backFromMoreSymbolKeyStyle" latin:code="!code/key_shift" - latin:keyLabel="!label/label_to_symbol_key" - latin:keyLabelFlags="preserveCase" + latin:keyLabel="!text/label_to_symbol_key" latin:keyActionFlags="noKeyPreview" latin:backgroundType="functional" /> <key-style latin:styleName="punctuationKeyStyle" latin:keyLabel="." - latin:keyHintLabel="!label/keyhintlabel_for_punctuation" - latin:keyLabelFlags="hasPopupHint|preserveCase" - latin:moreKeys="!label/more_keys_for_punctuation" + latin:keyHintLabel="!text/keyhintlabel_for_punctuation" + latin:keyLabelFlags="hasPopupHint" + latin:moreKeys="!text/more_keys_for_punctuation" latin:backgroundType="functional" /> </merge> diff --git a/java/res/xml/key_styles_currency.xml b/java/res/xml/key_styles_currency.xml index 6057d5bd7..d5c6a87b9 100644 --- a/java/res/xml/key_styles_currency.xml +++ b/java/res/xml/key_styles_currency.xml @@ -86,7 +86,7 @@ <key-style latin:styleName="currencyKeyStyle" latin:keyLabel="₪" - latin:moreKeys="!label/more_keys_for_currency_general" /> + latin:moreKeys="!text/more_keys_for_currency_general" /> <key-style latin:styleName="moreCurrency1KeyStyle" latin:keyLabel="£" /> @@ -112,7 +112,7 @@ <key-style latin:styleName="currencyKeyStyle" latin:keyLabel="﷼" - latin:moreKeys="!label/more_keys_for_currency_general" /> + latin:moreKeys="!text/more_keys_for_currency_general" /> <key-style latin:styleName="moreCurrency1KeyStyle" latin:keyLabel="£" /> @@ -138,7 +138,7 @@ <key-style latin:styleName="currencyKeyStyle" latin:keyLabel="£" - latin:moreKeys="!label/more_keys_for_currency_pound" /> + latin:moreKeys="!text/more_keys_for_currency_pound" /> <key-style latin:styleName="moreCurrency1KeyStyle" latin:keyLabel="€" /> diff --git a/java/res/xml/key_styles_currency_dollar.xml b/java/res/xml/key_styles_currency_dollar.xml index 704970a56..674a3966d 100644 --- a/java/res/xml/key_styles_currency_dollar.xml +++ b/java/res/xml/key_styles_currency_dollar.xml @@ -26,7 +26,7 @@ <key-style latin:styleName="currencyKeyStyle" latin:keyLabel="$" - latin:moreKeys="!label/more_keys_for_currency_dollar" /> + latin:moreKeys="!text/more_keys_for_currency_dollar" /> <key-style latin:styleName="moreCurrency1KeyStyle" latin:keyLabel="£" /> diff --git a/java/res/xml/key_styles_enter.xml b/java/res/xml/key_styles_enter.xml index f4c7ad46b..be5be1bf9 100644 --- a/java/res/xml/key_styles_enter.xml +++ b/java/res/xml/key_styles_enter.xml @@ -30,7 +30,7 @@ <key-style latin:styleName="navigateMoreKeysStyle" latin:keyLabelFlags="hasPopupHint|preserveCase" - latin:moreKeys="!label/action_previous_as_more_key" /> + latin:moreKeys="!text/action_previous_as_more_key" /> </case> <case latin:imeAction="actionNext" @@ -46,7 +46,7 @@ <key-style latin:styleName="navigateMoreKeysStyle" latin:keyLabelFlags="hasPopupHint|preserveCase" - latin:moreKeys="!label/action_next_as_more_key" /> + latin:moreKeys="!text/action_next_as_more_key" /> </case> <case latin:imeAction="actionPrevious" @@ -63,7 +63,7 @@ <key-style latin:styleName="navigateMoreKeysStyle" latin:keyLabelFlags="hasPopupHint|preserveCase" - latin:moreKeys="!fixedColumnOrder!2,!needsDividers!,!label/action_previous_as_more_key,!label/action_next_as_more_key" /> + latin:moreKeys="!fixedColumnOrder!2,!needsDividers!,!text/action_previous_as_more_key,!text/action_next_as_more_key" /> </case> <case latin:navigateNext="true" @@ -72,7 +72,7 @@ <key-style latin:styleName="navigateMoreKeysStyle" latin:keyLabelFlags="hasPopupHint|preserveCase" - latin:moreKeys="!label/action_next_as_more_key" /> + latin:moreKeys="!text/action_next_as_more_key" /> </case> <case latin:navigateNext="false" @@ -81,7 +81,7 @@ <key-style latin:styleName="navigateMoreKeysStyle" latin:keyLabelFlags="hasPopupHint|preserveCase" - latin:moreKeys="!label/action_previous_as_more_key" /> + latin:moreKeys="!text/action_previous_as_more_key" /> </case> <!-- naviagteNext="false" and navigatePrevious="false" --> <default> @@ -93,15 +93,15 @@ <key-style latin:styleName="defaultEnterKeyStyle" latin:code="!code/key_enter" - latin:keyIcon="iconReturnKey" - latin:keyLabelFlags="autoXScale|preserveCase|followKeyLabelRatio" + latin:keyIcon="!icon/enter_key" + latin:keyLabelFlags="autoXScale|followKeyLabelRatio" latin:keyActionFlags="noKeyPreview" latin:backgroundType="functional" latin:parentStyle="navigateMoreKeysStyle" /> <key-style latin:styleName="defaultActionKeyStyle" latin:code="!code/key_action_enter" - latin:keyIcon="iconUndefined" + latin:keyIcon="!icon/undefined" latin:backgroundType="action" latin:parentStyle="defaultEnterKeyStyle" /> <switch> @@ -119,7 +119,7 @@ > <key-style latin:styleName="enterKeyStyle" - latin:keyLabel="!label/label_go_key" + latin:keyLabel="!text/label_go_key" latin:parentStyle="defaultActionKeyStyle" /> </case> <case @@ -127,7 +127,7 @@ > <key-style latin:styleName="enterKeyStyle" - latin:keyLabel="!label/label_next_key" + latin:keyLabel="!text/label_next_key" latin:parentStyle="defaultActionKeyStyle" /> </case> <case @@ -135,7 +135,7 @@ > <key-style latin:styleName="enterKeyStyle" - latin:keyLabel="!label/label_previous_key" + latin:keyLabel="!text/label_previous_key" latin:parentStyle="defaultActionKeyStyle" /> </case> <case @@ -143,7 +143,7 @@ > <key-style latin:styleName="enterKeyStyle" - latin:keyLabel="!label/label_done_key" + latin:keyLabel="!text/label_done_key" latin:parentStyle="defaultActionKeyStyle" /> </case> <case @@ -151,7 +151,7 @@ > <key-style latin:styleName="enterKeyStyle" - latin:keyLabel="!label/label_send_key" + latin:keyLabel="!text/label_send_key" latin:parentStyle="defaultActionKeyStyle" /> </case> <case @@ -159,7 +159,7 @@ > <key-style latin:styleName="enterKeyStyle" - latin:keyIcon="iconSearchKey" + latin:keyIcon="!icon/search_key" latin:parentStyle="defaultActionKeyStyle" /> </case> <case diff --git a/java/res/xml/key_styles_number.xml b/java/res/xml/key_styles_number.xml index 16cfa8492..b8301bc49 100644 --- a/java/res/xml/key_styles_number.xml +++ b/java/res/xml/key_styles_number.xml @@ -100,25 +100,25 @@ <key-style latin:styleName="numPhoneToSymbolKeyStyle" latin:code="!code/key_switch_alpha_symbol" - latin:keyLabel="!label/label_to_phone_symbols_key" + latin:keyLabel="!text/label_to_phone_symbols_key" latin:parentStyle="numModeKeyStyle" /> <key-style latin:styleName="numPhoneToNumericKeyStyle" latin:code="!code/key_switch_alpha_symbol" - latin:keyLabel="!label/label_to_phone_numeric_key" + latin:keyLabel="!text/label_to_phone_numeric_key" latin:parentStyle="numModeKeyStyle" /> <!-- U+002C: "," COMMA --> <key-style latin:styleName="numPauseKeyStyle" latin:code="0x002C" - latin:keyLabel="!label/label_pause_key" + latin:keyLabel="!text/label_pause_key" latin:keyLabelFlags="followKeyHintLabelRatio|autoXScale" latin:parentStyle="numKeyBaseStyle" /> <!-- U+003B: ";" SEMICOLON --> <key-style latin:styleName="numWaitKeyStyle" latin:code="0x003B" - latin:keyLabel="!label/label_wait_key" + latin:keyLabel="!text/label_wait_key" latin:keyLabelFlags="followKeyHintLabelRatio|autoXScale" latin:parentStyle="numKeyBaseStyle" /> <key-style @@ -128,7 +128,7 @@ <key-style latin:styleName="numSpaceKeyStyle" latin:code="!code/key_space" - latin:keyIcon="iconSpaceKeyForNumberLayout" + latin:keyIcon="!icon/space_key_for_number_layout" latin:keyActionFlags="enableLongPress" latin:parentStyle="numKeyBaseStyle" /> </merge> diff --git a/java/res/xml/keyboard_layout_set_azerty.xml b/java/res/xml/keyboard_layout_set_azerty.xml index d4df6676c..4d144edbc 100644 --- a/java/res/xml/keyboard_layout_set_azerty.xml +++ b/java/res/xml/keyboard_layout_set_azerty.xml @@ -26,10 +26,10 @@ latin:enableProximityCharsCorrection="true" /> <Element latin:elementName="symbols" - latin:elementKeyboard="@xml/kbd_azerty_symbols" /> + latin:elementKeyboard="@xml/kbd_10_10_7_symbols" /> <Element latin:elementName="symbolsShifted" - latin:elementKeyboard="@xml/kbd_azerty_symbols_shift" /> + latin:elementKeyboard="@xml/kbd_10_10_7_symbols_shift" /> <Element latin:elementName="phone" latin:elementKeyboard="@xml/kbd_phone" /> diff --git a/java/res/xml/keyboard_layout_set_colemak.xml b/java/res/xml/keyboard_layout_set_colemak.xml new file mode 100644 index 000000000..c18f13225 --- /dev/null +++ b/java/res/xml/keyboard_layout_set_colemak.xml @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2012, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<KeyboardLayoutSet + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"> + <Element + latin:elementName="alphabet" + latin:elementKeyboard="@xml/kbd_colemak" + latin:enableProximityCharsCorrection="true" /> + <Element + latin:elementName="symbols" + latin:elementKeyboard="@xml/kbd_10_10_7_symbols" /> + <Element + latin:elementName="symbolsShifted" + latin:elementKeyboard="@xml/kbd_10_10_7_symbols_shift" /> + <Element + latin:elementName="phone" + latin:elementKeyboard="@xml/kbd_phone" /> + <Element + latin:elementName="phoneSymbols" + latin:elementKeyboard="@xml/kbd_phone_symbols" /> + <Element + latin:elementName="number" + latin:elementKeyboard="@xml/kbd_number" /> +</KeyboardLayoutSet> diff --git a/java/res/xml/keyboard_layout_set_dvorak.xml b/java/res/xml/keyboard_layout_set_dvorak.xml new file mode 100644 index 000000000..eb8e0c539 --- /dev/null +++ b/java/res/xml/keyboard_layout_set_dvorak.xml @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2012, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<KeyboardLayoutSet + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"> + <Element + latin:elementName="alphabet" + latin:elementKeyboard="@xml/kbd_dvorak" + latin:enableProximityCharsCorrection="true" /> + <Element + latin:elementName="symbols" + latin:elementKeyboard="@xml/kbd_10_10_7_symbols" /> + <Element + latin:elementName="symbolsShifted" + latin:elementKeyboard="@xml/kbd_10_10_7_symbols_shift" /> + <Element + latin:elementName="phone" + latin:elementKeyboard="@xml/kbd_phone" /> + <Element + latin:elementName="phoneSymbols" + latin:elementKeyboard="@xml/kbd_phone_symbols" /> + <Element + latin:elementName="number" + latin:elementKeyboard="@xml/kbd_number" /> +</KeyboardLayoutSet> diff --git a/java/res/xml/keyboard_layout_set_hebrew.xml b/java/res/xml/keyboard_layout_set_hebrew.xml index d0f12f3ee..212816dfe 100644 --- a/java/res/xml/keyboard_layout_set_hebrew.xml +++ b/java/res/xml/keyboard_layout_set_hebrew.xml @@ -26,10 +26,10 @@ latin:enableProximityCharsCorrection="true" /> <Element latin:elementName="symbols" - latin:elementKeyboard="@xml/kbd_hebrew_symbols" /> + latin:elementKeyboard="@xml/kbd_10_10_7_symbols" /> <Element latin:elementName="symbolsShifted" - latin:elementKeyboard="@xml/kbd_hebrew_symbols_shift" /> + latin:elementKeyboard="@xml/kbd_10_10_7_symbols_shift" /> <Element latin:elementName="phone" latin:elementKeyboard="@xml/kbd_phone" /> diff --git a/java/res/xml/keyboard_layout_set_spanish.xml b/java/res/xml/keyboard_layout_set_spanish.xml index 0ef712b76..57cef5234 100644 --- a/java/res/xml/keyboard_layout_set_spanish.xml +++ b/java/res/xml/keyboard_layout_set_spanish.xml @@ -26,10 +26,10 @@ latin:enableProximityCharsCorrection="true" /> <Element latin:elementName="symbols" - latin:elementKeyboard="@xml/kbd_spanish_symbols" /> + latin:elementKeyboard="@xml/kbd_10_10_7_symbols" /> <Element latin:elementName="symbolsShifted" - latin:elementKeyboard="@xml/kbd_spanish_symbols_shift" /> + latin:elementKeyboard="@xml/kbd_10_10_7_symbols_shift" /> <Element latin:elementName="phone" latin:elementKeyboard="@xml/kbd_phone" /> diff --git a/java/res/xml/keys_dvorak_123.xml b/java/res/xml/keys_dvorak_123.xml new file mode 100644 index 000000000..0de2dd628 --- /dev/null +++ b/java/res/xml/keys_dvorak_123.xml @@ -0,0 +1,60 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2012, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <switch> + <case + latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted" + > + <Key + latin:keyLabel=""" + latin:keyHintLabel="1" + latin:additionalMoreKeys="1" /> + <Key + latin:keyLabel="<" + latin:keyHintLabel="2" + latin:additionalMoreKeys="2" /> + <Key + latin:keyLabel=">" + latin:keyHintLabel="3" + latin:additionalMoreKeys="3" /> + </case> + <default> + <Key + latin:keyLabel="\'" + latin:keyHintLabel="1" + latin:additionalMoreKeys="1" + latin:moreKeys="!" /> + <Key + latin:keyLabel="," + latin:keyHintLabel="2" + latin:additionalMoreKeys="2" + latin:moreKeys="\?" /> + <Key + latin:keyLabel="." + latin:keyHintLabel="3" + latin:additionalMoreKeys="3" + latin:keyLabelFlags="hasPopupHint|preserveCase" + latin:moreKeys="!text/more_keys_for_punctuation,%" /> + </default> + </switch> +</merge> diff --git a/java/res/xml/keys_less_greater.xml b/java/res/xml/keys_less_greater.xml index 7c154cb0d..4584e5c96 100644 --- a/java/res/xml/keys_less_greater.xml +++ b/java/res/xml/keys_less_greater.xml @@ -24,9 +24,9 @@ <Key latin:keyLabel="<" latin:code="!code/key_less_than" - latin:moreKeys="!label/more_keys_for_less_than" /> + latin:moreKeys="!text/more_keys_for_less_than" /> <Key latin:keyLabel=">" latin:code="!code/key_greater_than" - latin:moreKeys="!label/more_keys_for_greater_than" /> + latin:moreKeys="!text/more_keys_for_greater_than" /> </merge> diff --git a/java/res/xml/keys_parentheses.xml b/java/res/xml/keys_parentheses.xml index 17d72859c..25e89c930 100644 --- a/java/res/xml/keys_parentheses.xml +++ b/java/res/xml/keys_parentheses.xml @@ -24,9 +24,9 @@ <Key latin:keyLabel="(" latin:code="!code/key_left_parenthesis" - latin:moreKeys="!label/more_keys_for_left_parenthesis" /> + latin:moreKeys="!text/more_keys_for_left_parenthesis" /> <Key latin:keyLabel=")" latin:code="!code/key_right_parenthesis" - latin:moreKeys="!label/more_keys_for_right_parenthesis" /> + latin:moreKeys="!text/more_keys_for_right_parenthesis" /> </merge> diff --git a/java/res/xml/row_dvorak4.xml b/java/res/xml/row_dvorak4.xml new file mode 100644 index 000000000..7b9a59cde --- /dev/null +++ b/java/res/xml/row_dvorak4.xml @@ -0,0 +1,89 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2012, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <Row + latin:keyWidth="10%p" + > + <Key + latin:keyStyle="toSymbolKeyStyle" + latin:keyWidth="15%p" /> + <switch> + <case + latin:mode="url" + > + <Key + latin:keyLabel="/" + latin:keyStyle="f1MoreKeysStyle" /> + </case> + <case + latin:mode="email" + > + <Key + latin:keyLabel="\@" + latin:keyStyle="f1MoreKeysStyle" /> + </case> + <case + latin:hasShortcutKey="true" + latin:keyboardLayoutSetElement="alphabet" + > + <Key + latin:keyLabel="q" + latin:backgroundType="normal" + latin:additionalMoreKeys="!text/shortcut_as_more_key" + latin:keyStyle="f1MoreKeysStyle" /> + </case> + <case + latin:hasShortcutKey="true" + > + <Key + latin:keyLabel="Q" + latin:backgroundType="normal" + latin:additionalMoreKeys="!text/shortcut_as_more_key" + latin:keyStyle="f1MoreKeysStyle" /> + </case> + <!-- latin:hasShortcutKey="false" --> + <case + latin:keyboardLayoutSetElement="alphabet" + > + <Key + latin:keyLabel="q" + latin:backgroundType="normal" + latin:keyStyle="f1MoreKeysStyle" /> + </case> + <default> + <Key + latin:keyLabel="Q" + latin:backgroundType="normal" + latin:keyStyle="f1MoreKeysStyle" /> + </default> + </switch> + <include + latin:keyboardLayout="@xml/key_space" /> + <Key + latin:keyLabel="z" + latin:moreKeys="!text/more_keys_for_z" /> + <Key + latin:keyStyle="enterKeyStyle" + latin:keyWidth="fillRight" /> + </Row> +</merge> diff --git a/java/res/xml/row_qwerty4.xml b/java/res/xml/row_qwerty4.xml index c08518079..361a2c3ef 100644 --- a/java/res/xml/row_qwerty4.xml +++ b/java/res/xml/row_qwerty4.xml @@ -27,75 +27,10 @@ <Key latin:keyStyle="toSymbolKeyStyle" latin:keyWidth="15%p" /> - <switch> - <case - latin:mode="url" - > - <Key - latin:keyLabel="/" - latin:keyStyle="f1MoreKeysStyle" /> - </case> - <case - latin:mode="email" - > - <Key - latin:keyLabel="\@" - latin:keyStyle="f1MoreKeysStyle" /> - </case> - <case - latin:hasShortcutKey="true" - > - <Key - latin:keyStyle="shortcutKeyStyle" /> - </case> - <!-- latin:hasShortcutKey="false" --> - <default> - <Key - latin:keyLabel="!label/keylabel_for_comma" - latin:keyLabelFlags="hasPopupHint" - latin:additionalMoreKeys="!label/more_keys_for_comma" - latin:keyStyle="f1MoreKeysStyle" /> - </default> - </switch> - <switch> - <case - latin:languageCode="fa" - latin:languageSwitchKeyEnabled="true" - > - <Key - latin:keyStyle="languageSwitchKeyStyle" /> - <Key - latin:keyStyle="spaceKeyStyle" - latin:keyWidth="30%p" /> - <Key - latin:keyStyle="zwnjKeyStyle" /> - </case> - <case - latin:languageCode="fa" - latin:languageSwitchKeyEnabled="false" - > - <Key - latin:keyStyle="spaceKeyStyle" - latin:keyWidth="40%p" /> - <Key - latin:keyStyle="zwnjKeyStyle" /> - </case> - <case - latin:languageSwitchKeyEnabled="true" - > - <Key - latin:keyStyle="languageSwitchKeyStyle" /> - <Key - latin:keyStyle="spaceKeyStyle" - latin:keyWidth="40%p" /> - </case> - <!-- languageSwitchKeyEnabled="false" --> - <default> - <Key - latin:keyStyle="spaceKeyStyle" - latin:keyWidth="50%p" /> - </default> - </switch> + <include + latin:keyboardLayout="@xml/key_f1" /> + <include + latin:keyboardLayout="@xml/key_space" /> <Key latin:keyStyle="punctuationKeyStyle" /> <Key diff --git a/java/res/xml/rows_symbols4.xml b/java/res/xml/row_symbols4.xml index de7e043e8..a92d55a76 100644 --- a/java/res/xml/rows_symbols4.xml +++ b/java/res/xml/row_symbols4.xml @@ -37,15 +37,14 @@ <!-- latin:hasShortcutKey="false" --> <default> <Key - latin:keyLabel="!label/keylabel_for_comma" + latin:keyLabel="!text/keylabel_for_comma" latin:keyLabelFlags="hasPopupHint" - latin:additionalMoreKeys="!label/more_keys_for_comma" + latin:additionalMoreKeys="!text/more_keys_for_comma" latin:keyStyle="f1MoreKeysStyle" /> </default> </switch> - <Key - latin:keyStyle="spaceKeyStyle" - latin:keyWidth="50%p" /> + <include + latin:keyboardLayout="@xml/key_space" /> <Key latin:keyStyle="punctuationKeyStyle" /> <Key diff --git a/java/res/xml/rows_symbols_shift4.xml b/java/res/xml/row_symbols_shift4.xml index 28b6ab8dc..6608b7795 100644 --- a/java/res/xml/rows_symbols_shift4.xml +++ b/java/res/xml/row_symbols_shift4.xml @@ -35,9 +35,8 @@ <Key latin:keyLabel="„" latin:backgroundType="functional" /> - <Key - latin:keyStyle="spaceKeyStyle" - latin:keyWidth="50%p" /> + <include + latin:keyboardLayout="@xml/key_space" /> <!-- U+2026: "…" HORIZONTAL ELLIPSIS --> <Key latin:keyLabel="…" diff --git a/java/res/xml/rowkeys_azerty1.xml b/java/res/xml/rowkeys_azerty1.xml index 50a0162de..42b27463f 100644 --- a/java/res/xml/rowkeys_azerty1.xml +++ b/java/res/xml/rowkeys_azerty1.xml @@ -25,47 +25,47 @@ latin:keyLabel="a" latin:keyHintLabel="1" latin:additionalMoreKeys="1" - latin:moreKeys="!label/more_keys_for_a" /> + latin:moreKeys="!text/more_keys_for_a" /> <Key latin:keyLabel="z" latin:keyHintLabel="2" latin:additionalMoreKeys="2" - latin:moreKeys="!label/more_keys_for_z" /> + latin:moreKeys="!text/more_keys_for_z" /> <Key latin:keyLabel="e" latin:keyHintLabel="3" latin:additionalMoreKeys="3" - latin:moreKeys="!label/more_keys_for_e" /> + latin:moreKeys="!text/more_keys_for_e" /> <Key latin:keyLabel="r" latin:keyHintLabel="4" latin:additionalMoreKeys="4" - latin:moreKeys="!label/more_keys_for_r" /> + latin:moreKeys="!text/more_keys_for_r" /> <Key latin:keyLabel="t" latin:keyHintLabel="5" latin:additionalMoreKeys="5" - latin:moreKeys="!label/more_keys_for_t" /> + latin:moreKeys="!text/more_keys_for_t" /> <Key latin:keyLabel="y" latin:keyHintLabel="6" latin:additionalMoreKeys="6" - latin:moreKeys="!label/more_keys_for_y" /> + latin:moreKeys="!text/more_keys_for_y" /> <Key latin:keyLabel="u" latin:keyHintLabel="7" latin:additionalMoreKeys="7" - latin:moreKeys="!label/more_keys_for_u" /> + latin:moreKeys="!text/more_keys_for_u" /> <Key latin:keyLabel="i" latin:keyHintLabel="8" latin:additionalMoreKeys="8" - latin:moreKeys="!label/more_keys_for_i" /> + latin:moreKeys="!text/more_keys_for_i" /> <Key latin:keyLabel="o" latin:keyHintLabel="9" latin:additionalMoreKeys="9" - latin:moreKeys="!label/more_keys_for_o" /> + latin:moreKeys="!text/more_keys_for_o" /> <Key latin:keyLabel="p" latin:keyHintLabel="0" diff --git a/java/res/xml/rowkeys_azerty2.xml b/java/res/xml/rowkeys_azerty2.xml index f453c2432..2eee214e5 100644 --- a/java/res/xml/rowkeys_azerty2.xml +++ b/java/res/xml/rowkeys_azerty2.xml @@ -25,27 +25,27 @@ latin:keyLabel="q" /> <Key latin:keyLabel="s" - latin:moreKeys="!label/more_keys_for_s" /> + latin:moreKeys="!text/more_keys_for_s" /> <Key latin:keyLabel="d" - latin:moreKeys="!label/more_keys_for_d" /> + latin:moreKeys="!text/more_keys_for_d" /> <Key latin:keyLabel="f" /> <Key latin:keyLabel="g" - latin:moreKeys="!label/more_keys_for_g" /> + latin:moreKeys="!text/more_keys_for_g" /> <Key latin:keyLabel="h" - latin:moreKeys="!label/more_keys_for_h" /> + latin:moreKeys="!text/more_keys_for_h" /> <Key latin:keyLabel="j" - latin:moreKeys="!label/more_keys_for_j" /> + latin:moreKeys="!text/more_keys_for_j" /> <Key latin:keyLabel="k" - latin:moreKeys="!label/more_keys_for_k" /> + latin:moreKeys="!text/more_keys_for_k" /> <Key latin:keyLabel="l" - latin:moreKeys="!label/more_keys_for_l" /> + latin:moreKeys="!text/more_keys_for_l" /> <Key latin:keyLabel="m" /> </merge> diff --git a/java/res/xml/rowkeys_azerty3.xml b/java/res/xml/rowkeys_azerty3.xml index 35e9b195f..9f4c608f8 100644 --- a/java/res/xml/rowkeys_azerty3.xml +++ b/java/res/xml/rowkeys_azerty3.xml @@ -23,20 +23,20 @@ > <Key latin:keyLabel="w" - latin:moreKeys="!label/more_keys_for_w" /> + latin:moreKeys="!text/more_keys_for_w" /> <Key latin:keyLabel="x" /> <Key latin:keyLabel="c" - latin:moreKeys="!label/more_keys_for_c" /> + latin:moreKeys="!text/more_keys_for_c" /> <Key latin:keyLabel="v" - latin:moreKeys="!label/more_keys_for_v" /> + latin:moreKeys="!text/more_keys_for_v" /> <Key latin:keyLabel="b" /> <Key latin:keyLabel="n" - latin:moreKeys="!label/more_keys_for_n" /> + latin:moreKeys="!text/more_keys_for_n" /> <include latin:keyboardLayout="@xml/key_azerty_quote" /> </merge> diff --git a/java/res/xml/rowkeys_colemak1.xml b/java/res/xml/rowkeys_colemak1.xml new file mode 100644 index 000000000..f1c30756b --- /dev/null +++ b/java/res/xml/rowkeys_colemak1.xml @@ -0,0 +1,66 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2012, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <Key + latin:keyLabel="q" + latin:keyHintLabel="1" + latin:additionalMoreKeys="1" /> + <Key + latin:keyLabel="w" + latin:keyHintLabel="2" + latin:additionalMoreKeys="2" + latin:moreKeys="!text/more_keys_for_w" /> + <Key + latin:keyLabel="f" + latin:keyHintLabel="3" + latin:additionalMoreKeys="3" /> + <Key + latin:keyLabel="p" + latin:keyHintLabel="4" + latin:additionalMoreKeys="4" /> + <Key + latin:keyLabel="g" + latin:keyHintLabel="5" + latin:additionalMoreKeys="5" + latin:moreKeys="!text/more_keys_for_g" /> + <Key + latin:keyLabel="j" + latin:keyHintLabel="6" + latin:additionalMoreKeys="6" + latin:moreKeys="!text/more_keys_for_j" /> + <Key + latin:keyLabel="l" + latin:keyHintLabel="7" + latin:additionalMoreKeys="7" + latin:moreKeys="!text/more_keys_for_l" /> + <Key + latin:keyLabel="u" + latin:keyHintLabel="8" + latin:additionalMoreKeys="8" + latin:moreKeys="!text/more_keys_for_u" /> + <Key + latin:keyLabel="y" + latin:keyHintLabel="9" + latin:additionalMoreKeys="9" + latin:moreKeys="!text/more_keys_for_y" /> +</merge> diff --git a/java/res/xml/rowkeys_colemak2.xml b/java/res/xml/rowkeys_colemak2.xml new file mode 100644 index 000000000..f73d7e95f --- /dev/null +++ b/java/res/xml/rowkeys_colemak2.xml @@ -0,0 +1,54 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2012, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <Key + latin:keyLabel="a" + latin:moreKeys="!text/more_keys_for_a" /> + <Key + latin:keyLabel="r" + latin:moreKeys="!text/more_keys_for_r" /> + <Key + latin:keyLabel="s" + latin:moreKeys="!text/more_keys_for_s" /> + <Key + latin:keyLabel="t" + latin:moreKeys="!text/more_keys_for_t" /> + <Key + latin:keyLabel="d" + latin:moreKeys="!text/more_keys_for_d" /> + <Key + latin:keyLabel="h" + latin:moreKeys="!text/more_keys_for_h" /> + <Key + latin:keyLabel="n" + latin:moreKeys="!text/more_keys_for_n" /> + <Key + latin:keyLabel="e" + latin:moreKeys="!text/more_keys_for_e" /> + <Key + latin:keyLabel="i" + latin:moreKeys="!text/more_keys_for_i" /> + <Key + latin:keyLabel="o" + latin:moreKeys="!text/more_keys_for_o" /> +</merge> diff --git a/java/res/xml-sw600dp/kbd_spanish_symbols_shift.xml b/java/res/xml/rowkeys_colemak3.xml index 3c5ed5e09..f0f915142 100644 --- a/java/res/xml-sw600dp/kbd_spanish_symbols_shift.xml +++ b/java/res/xml/rowkeys_colemak3.xml @@ -18,9 +18,25 @@ */ --> -<Keyboard +<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > - <include - latin:keyboardLayout="@xml/rows_10_10_7_symbols_shift" /> -</Keyboard> + <Key + latin:keyLabel="z" + latin:moreKeys="!text/more_keys_for_z" /> + <Key + latin:keyLabel="x" /> + <Key + latin:keyLabel="c" + latin:moreKeys="!text/more_keys_for_c" /> + <Key + latin:keyLabel="v" + latin:moreKeys="!text/more_keys_for_v" /> + <Key + latin:keyLabel="b" /> + <Key + latin:keyLabel="k" + latin:moreKeys="!text/more_keys_for_k" /> + <Key + latin:keyLabel="m" /> +</merge> diff --git a/java/res/xml/rowkeys_dvorak1.xml b/java/res/xml/rowkeys_dvorak1.xml new file mode 100644 index 000000000..7e0eb6e71 --- /dev/null +++ b/java/res/xml/rowkeys_dvorak1.xml @@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2012, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <Key + latin:keyLabel="p" + latin:keyHintLabel="4" + latin:additionalMoreKeys="4" /> + <Key + latin:keyLabel="y" + latin:keyHintLabel="5" + latin:additionalMoreKeys="5" + latin:moreKeys="!text/more_keys_for_y" /> + <Key + latin:keyLabel="f" + latin:keyHintLabel="6" + latin:additionalMoreKeys="6" /> + <Key + latin:keyLabel="g" + latin:keyHintLabel="7" + latin:additionalMoreKeys="7" + latin:moreKeys="!text/more_keys_for_g" /> + <Key + latin:keyLabel="c" + latin:keyHintLabel="8" + latin:additionalMoreKeys="8" + latin:moreKeys="!text/more_keys_for_c" /> + <Key + latin:keyLabel="r" + latin:keyHintLabel="9" + latin:additionalMoreKeys="9" + latin:moreKeys="!text/more_keys_for_r" /> + <Key + latin:keyLabel="l" + latin:keyHintLabel="0" + latin:additionalMoreKeys="0" + latin:moreKeys="!text/more_keys_for_l" /> +</merge> diff --git a/java/res/xml/rowkeys_dvorak2.xml b/java/res/xml/rowkeys_dvorak2.xml new file mode 100644 index 000000000..943e3f549 --- /dev/null +++ b/java/res/xml/rowkeys_dvorak2.xml @@ -0,0 +1,54 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2012, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <Key + latin:keyLabel="a" + latin:moreKeys="!text/more_keys_for_a" /> + <Key + latin:keyLabel="o" + latin:moreKeys="!text/more_keys_for_o" /> + <Key + latin:keyLabel="e" + latin:moreKeys="!text/more_keys_for_e" /> + <Key + latin:keyLabel="u" + latin:moreKeys="!text/more_keys_for_u" /> + <Key + latin:keyLabel="i" + latin:moreKeys="!text/more_keys_for_i" /> + <Key + latin:keyLabel="d" + latin:moreKeys="!text/more_keys_for_d" /> + <Key + latin:keyLabel="h" + latin:moreKeys="!text/more_keys_for_h" /> + <Key + latin:keyLabel="t" + latin:moreKeys="!text/more_keys_for_t" /> + <Key + latin:keyLabel="n" + latin:moreKeys="!text/more_keys_for_n" /> + <Key + latin:keyLabel="s" + latin:moreKeys="!text/more_keys_for_s" /> +</merge> diff --git a/java/res/xml/rowkeys_dvorak3.xml b/java/res/xml/rowkeys_dvorak3.xml new file mode 100644 index 000000000..b035f41cd --- /dev/null +++ b/java/res/xml/rowkeys_dvorak3.xml @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2012, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <Key + latin:keyLabel="j" + latin:moreKeys="!text/more_keys_for_j" /> + <Key + latin:keyLabel="k" + latin:moreKeys="!text/more_keys_for_k" /> + <Key + latin:keyLabel="x" /> + <Key + latin:keyLabel="b" /> + <Key + latin:keyLabel="m" /> + <Key + latin:keyLabel="w" + latin:moreKeys="!text/more_keys_for_w" /> + <Key + latin:keyLabel="v" + latin:moreKeys="!text/more_keys_for_v" /> +</merge> diff --git a/java/res/xml/rowkeys_east_slavic1.xml b/java/res/xml/rowkeys_east_slavic1.xml index dd83c0250..00cb6a973 100644 --- a/java/res/xml/rowkeys_east_slavic1.xml +++ b/java/res/xml/rowkeys_east_slavic1.xml @@ -36,7 +36,7 @@ latin:keyLabel="у" latin:keyHintLabel="3" latin:additionalMoreKeys="3" - latin:moreKeys="!label/more_keys_for_cyrillic_u" /> + latin:moreKeys="!text/more_keys_for_cyrillic_u" /> <!-- U+043A: "к" CYRILLIC SMALL LETTER KA --> <Key latin:keyLabel="к" @@ -47,13 +47,13 @@ latin:keyLabel="е" latin:keyHintLabel="5" latin:additionalMoreKeys="5" - latin:moreKeys="!label/more_keys_for_cyrillic_ye" /> + latin:moreKeys="!text/more_keys_for_cyrillic_ye" /> <!-- U+043D: "н" CYRILLIC SMALL LETTER EN --> <Key latin:keyLabel="н" latin:keyHintLabel="6" latin:additionalMoreKeys="6" - latin:moreKeys="!label/more_keys_for_cyrillic_en" /> + latin:moreKeys="!text/more_keys_for_cyrillic_en" /> <!-- U+0433: "г" CYRILLIC SMALL LETTER GHE --> <Key latin:keyLabel="г" @@ -65,7 +65,7 @@ latin:keyHintLabel="8" latin:additionalMoreKeys="8" /> <Key - latin:keyLabel="!label/keylabel_for_east_slavic_row1_9" + latin:keyLabel="!text/keylabel_for_east_slavic_row1_9" latin:keyHintLabel="9" latin:additionalMoreKeys="9" /> <!-- U+0437: "з" CYRILLIC SMALL LETTER ZE --> @@ -76,5 +76,5 @@ <!-- U+0445: "х" CYRILLIC SMALL LETTER HA --> <Key latin:keyLabel="х" - latin:moreKeys="!label/more_keys_for_cyrillic_ha" /> + latin:moreKeys="!text/more_keys_for_cyrillic_ha" /> </merge> diff --git a/java/res/xml/rowkeys_east_slavic2.xml b/java/res/xml/rowkeys_east_slavic2.xml index 75d7d939d..c635af2d9 100644 --- a/java/res/xml/rowkeys_east_slavic2.xml +++ b/java/res/xml/rowkeys_east_slavic2.xml @@ -25,8 +25,8 @@ <Key latin:keyLabel="ф" /> <Key - latin:keyLabel="!label/keylabel_for_east_slavic_row2_1" - latin:moreKeys="!label/more_keys_for_east_slavic_row2_1" /> + latin:keyLabel="!text/keylabel_for_east_slavic_row2_1" + latin:moreKeys="!text/more_keys_for_east_slavic_row2_1" /> <!-- U+0432: "в" CYRILLIC SMALL LETTER VE --> <Key latin:keyLabel="в" /> @@ -42,7 +42,7 @@ <!-- U+043E: "о" CYRILLIC SMALL LETTER O --> <Key latin:keyLabel="о" - latin:moreKeys="!label/more_keys_for_cyrillic_o" /> + latin:moreKeys="!text/more_keys_for_cyrillic_o" /> <!-- U+043B: "л" CYRILLIC SMALL LETTER EL --> <Key latin:keyLabel="л" /> diff --git a/java/res/xml/rowkeys_east_slavic3.xml b/java/res/xml/rowkeys_east_slavic3.xml index a05e92d44..c3a171b49 100644 --- a/java/res/xml/rowkeys_east_slavic3.xml +++ b/java/res/xml/rowkeys_east_slavic3.xml @@ -34,14 +34,14 @@ <Key latin:keyLabel="м" /> <Key - latin:keyLabel="!label/keylabel_for_east_slavic_row3_5" /> + latin:keyLabel="!text/keylabel_for_east_slavic_row3_5" /> <!-- U+0442: "т" CYRILLIC SMALL LETTER TE --> <Key latin:keyLabel="т" /> <!-- U+044C: "ь" CYRILLIC SMALL LETTER SOFT SIGN --> <Key latin:keyLabel="ь" - latin:moreKeys="!label/more_keys_for_cyrillic_soft_sign" /> + latin:moreKeys="!text/more_keys_for_cyrillic_soft_sign" /> <!-- U+0431: "б" CYRILLIC SMALL LETTER BE --> <Key latin:keyLabel="б" /> diff --git a/java/res/xml/rowkeys_georgian1.xml b/java/res/xml/rowkeys_georgian1.xml index fcdf3fa58..d31a4c79c 100644 --- a/java/res/xml/rowkeys_georgian1.xml +++ b/java/res/xml/rowkeys_georgian1.xml @@ -27,55 +27,45 @@ > <Key latin:keyLabel="Q" - latin:keyLabelFlags="preserveCase" latin:keyHintLabel="1" latin:additionalMoreKeys="1" /> <!-- U+10ED: "ჭ" GEORGIAN LETTER CHAR --> <Key latin:keyLabel="ჭ" - latin:keyLabelFlags="preserveCase" latin:keyHintLabel="2" latin:additionalMoreKeys="2" /> <Key latin:keyLabel="E" - latin:keyLabelFlags="preserveCase" latin:keyHintLabel="3" latin:additionalMoreKeys="3" /> <!-- U+10E6: "ღ" GEORGIAN LETTER GHAN --> <Key latin:keyLabel="ღ" - latin:keyLabelFlags="preserveCase" latin:keyHintLabel="4" latin:additionalMoreKeys="4" /> <!-- U+10D7: "თ" GEORGIAN LETTER TAN --> <Key latin:keyLabel="თ" - latin:keyLabelFlags="preserveCase" latin:keyHintLabel="5" latin:additionalMoreKeys="5" /> <Key latin:keyLabel="Y" - latin:keyLabelFlags="preserveCase" latin:keyHintLabel="6" latin:additionalMoreKeys="6" /> <Key latin:keyLabel="U" - latin:keyLabelFlags="preserveCase" latin:keyHintLabel="7" latin:additionalMoreKeys="7" /> <Key latin:keyLabel="I" - latin:keyLabelFlags="preserveCase" latin:keyHintLabel="8" latin:additionalMoreKeys="8" /> <Key latin:keyLabel="O" - latin:keyLabelFlags="preserveCase" latin:keyHintLabel="9" latin:additionalMoreKeys="9" /> <Key latin:keyLabel="P" - latin:keyLabelFlags="preserveCase" latin:keyHintLabel="0" latin:additionalMoreKeys="0" /> </case> @@ -83,13 +73,11 @@ <!-- U+10E5: "ქ" GEORGIAN LETTER GHAN --> <Key latin:keyLabel="ქ" - latin:keyLabelFlags="preserveCase" latin:keyHintLabel="1" latin:additionalMoreKeys="1" /> <!-- U+10EC: "წ" GEORGIAN LETTER CIL --> <Key latin:keyLabel="წ" - latin:keyLabelFlags="preserveCase" latin:keyHintLabel="2" latin:additionalMoreKeys="2" /> <!-- U+10D4: "ე" GEORGIAN LETTER EN @@ -97,19 +85,16 @@ <Key latin:keyLabel="ე" latin:moreKeys="ჱ" - latin:keyLabelFlags="preserveCase" latin:keyHintLabel="3" latin:additionalMoreKeys="3" /> <!-- U+10E0: "რ" GEORGIAN LETTER RAE --> <Key latin:keyLabel="რ" - latin:keyLabelFlags="preserveCase" latin:keyHintLabel="4" latin:additionalMoreKeys="4" /> <!-- U+10E2: "ტ" GEORGIAN LETTER TAR --> <Key latin:keyLabel="ტ" - latin:keyLabelFlags="preserveCase" latin:keyHintLabel="5" latin:additionalMoreKeys="5" /> <!-- U+10E7: "ყ" GEORGIAN LETTER QAR @@ -117,13 +102,11 @@ <Key latin:keyLabel="ყ" latin:moreKeys="ჸ" - latin:keyLabelFlags="preserveCase" latin:keyHintLabel="6" latin:additionalMoreKeys="6" /> <!-- U+10E3: "უ" GEORGIAN LETTER UN --> <Key latin:keyLabel="უ" - latin:keyLabelFlags="preserveCase" latin:keyHintLabel="7" latin:additionalMoreKeys="7" /> <!-- U+10D8: "ი" GEORGIAN LETTER IN @@ -131,19 +114,16 @@ <Key latin:keyLabel="ი" latin:moreKeys="ჲ" - latin:keyLabelFlags="preserveCase" latin:keyHintLabel="8" latin:additionalMoreKeys="8" /> <!-- U+10DD: "ო" GEORGIAN LETTER ON --> <Key latin:keyLabel="ო" - latin:keyLabelFlags="preserveCase" latin:keyHintLabel="9" latin:additionalMoreKeys="9" /> <!-- U+10DE: "პ" GEORGIAN LETTER PAR --> <Key latin:keyLabel="პ" - latin:keyLabelFlags="preserveCase" latin:keyHintLabel="0" latin:additionalMoreKeys="0" /> </default> diff --git a/java/res/xml/rowkeys_georgian2.xml b/java/res/xml/rowkeys_georgian2.xml index 5673b9002..cdccda31f 100644 --- a/java/res/xml/rowkeys_georgian2.xml +++ b/java/res/xml/rowkeys_georgian2.xml @@ -26,82 +26,64 @@ latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted" > <Key - latin:keyLabel="A" - latin:keyLabelFlags="preserveCase" /> + latin:keyLabel="A" /> <!-- U+10E8: "შ" GEORGIAN LETTER SHIN --> <Key - latin:keyLabel="შ" - latin:keyLabelFlags="preserveCase" /> + latin:keyLabel="შ" /> <Key - latin:keyLabel="D" - latin:keyLabelFlags="preserveCase" /> + latin:keyLabel="D" /> <Key - latin:keyLabel="F" - latin:keyLabelFlags="preserveCase" /> + latin:keyLabel="F" /> <Key - latin:keyLabel="G" - latin:keyLabelFlags="preserveCase" /> + latin:keyLabel="G" /> <Key - latin:keyLabel="H" - latin:keyLabelFlags="preserveCase" /> + latin:keyLabel="H" /> <!-- U+10DF: "ჟ" GEORGIAN LETTER ZHAR --> <Key - latin:keyLabel="ჟ" - latin:keyLabelFlags="preserveCase" /> + latin:keyLabel="ჟ" /> <Key - latin:keyLabel="K" - latin:keyLabelFlags="preserveCase" /> + latin:keyLabel="K" /> <Key - latin:keyLabel="L" - latin:keyLabelFlags="preserveCase" /> + latin:keyLabel="L" /> </case> <default> <!-- U+10D0: "ა" GEORGIAN LETTER AN U+10FA: "ჺ" GEORGIAN LETTER AIN --> <Key latin:keyLabel="ა" - latin:moreKeys="ჺ" - latin:keyLabelFlags="preserveCase" /> + latin:moreKeys="ჺ" /> <!-- U+10E1: "ს" GEORGIAN LETTER SAN --> <Key - latin:keyLabel="ს" - latin:keyLabelFlags="preserveCase" /> + latin:keyLabel="ს" /> <!-- U+10D3: "დ" GEORGIAN LETTER DON --> <Key - latin:keyLabel="დ" - latin:keyLabelFlags="preserveCase" /> + latin:keyLabel="დ" /> <!-- U+10E4: "ფ" GEORGIAN LETTER PHAR U+10F6: "ჶ" GEORGIAN LETTER FI --> <Key latin:keyLabel="ფ" - latin:moreKeys="ჶ" - latin:keyLabelFlags="preserveCase" /> + latin:moreKeys="ჶ" /> <!-- U+10D2: "გ" GEORGIAN LETTER GAN U+10F9: "ჹ" GEORGIAN LETTER TURNED GAN --> <Key latin:keyLabel="გ" - latin:moreKeys="ჹ" - latin:keyLabelFlags="preserveCase" /> + latin:moreKeys="ჹ" /> <!-- U+10F0: "ჰ" GEORGIAN LETTER HAE U+10F5: "ჵ" GEORGIAN LETTER HOE --> <Key latin:keyLabel="ჰ" - latin:moreKeys="ჵ" - latin:keyLabelFlags="preserveCase" /> + latin:moreKeys="ჵ" /> <!-- U+10EF: "ჯ" GEORGIAN LETTER JHAN U+10F7: "ჷ" GEORGIAN LETTER YN --> <Key latin:keyLabel="ჯ" - latin:moreKeys="ჷ" - latin:keyLabelFlags="preserveCase" /> + latin:moreKeys="ჷ" /> <!-- U+10D9: "კ" GEORGIAN LETTER KAN --> <Key - latin:keyLabel="კ" - latin:keyLabelFlags="preserveCase" /> + latin:keyLabel="კ" /> <!-- U+10DA: "ლ" GEORGIAN LETTER LAS --> <Key - latin:keyLabel="ლ" - latin:keyLabelFlags="preserveCase" /> + latin:keyLabel="ლ" /> </default> </switch> </merge> diff --git a/java/res/xml/rowkeys_georgian3.xml b/java/res/xml/rowkeys_georgian3.xml index 1c0f45bef..a3714586f 100644 --- a/java/res/xml/rowkeys_georgian3.xml +++ b/java/res/xml/rowkeys_georgian3.xml @@ -27,63 +27,49 @@ > <!-- U+10EB: "ძ" GEORGIAN LETTER JIL --> <Key - latin:keyLabel="ძ" - latin:keyLabelFlags="preserveCase" /> + latin:keyLabel="ძ" /> <Key - latin:keyLabel="X" - latin:keyLabelFlags="preserveCase" /> + latin:keyLabel="X" /> <!-- U+10E9: "ჩ" GEORGIAN LETTER CHIN --> <Key - latin:keyLabel="ჩ" - latin:keyLabelFlags="preserveCase" /> + latin:keyLabel="ჩ" /> <Key - latin:keyLabel="V" - latin:keyLabelFlags="preserveCase" /> + latin:keyLabel="V" /> <Key - latin:keyLabel="B" - latin:keyLabelFlags="preserveCase" /> + latin:keyLabel="B" /> <Key - latin:keyLabel="N" - latin:keyLabelFlags="preserveCase" /> + latin:keyLabel="N" /> <Key - latin:keyLabel="M" - latin:keyLabelFlags="preserveCase" /> + latin:keyLabel="M" /> </case> <default> <!-- U+10D6: "ზ" GEORGIAN LETTER ZEN --> <Key - latin:keyLabel="ზ" - latin:keyLabelFlags="preserveCase" /> + latin:keyLabel="ზ" /> <!-- U+10EE: "ხ" GEORGIAN LETTER XAN U+10F4: "ჴ" GEORGIAN LETTER HAR --> <Key latin:keyLabel="ხ" - latin:moreKeys="ჴ" - latin:keyLabelFlags="preserveCase" /> + latin:moreKeys="ჴ" /> <!-- U+10EA: "ც" GEORGIAN LETTER CAN --> <Key - latin:keyLabel="ც" - latin:keyLabelFlags="preserveCase" /> + latin:keyLabel="ც" /> <!-- U+10D5: "ვ" GEORGIAN LETTER VIN U+10F3: "ჳ" GEORGIAN LETTER WE --> <Key latin:keyLabel="ვ" - latin:moreKeys="ჳ" - latin:keyLabelFlags="preserveCase" /> + latin:moreKeys="ჳ" /> <!-- U+10D1: "ბ" GEORGIAN LETTER BAN --> <Key - latin:keyLabel="ბ" - latin:keyLabelFlags="preserveCase" /> + latin:keyLabel="ბ" /> <!-- U+10DC: "ნ" GEORGIAN LETTER NAR U+10FC: "ჼ" MODIFIER LETTER GEORGIAN NAR --> <Key latin:keyLabel="ნ" - latin:moreKeys="ჼ" - latin:keyLabelFlags="preserveCase" /> + latin:moreKeys="ჼ" /> <!-- U+10DB: "მ" GEORGIAN LETTER MAN --> <Key - latin:keyLabel="მ" - latin:keyLabelFlags="preserveCase" /> + latin:keyLabel="მ" /> </default> </switch> </merge> diff --git a/java/res/xml/rowkeys_nordic1.xml b/java/res/xml/rowkeys_nordic1.xml index ff29369d7..72ac86b2e 100644 --- a/java/res/xml/rowkeys_nordic1.xml +++ b/java/res/xml/rowkeys_nordic1.xml @@ -24,5 +24,5 @@ <include latin:keyboardLayout="@xml/rowkeys_qwerty1" /> <Key - latin:keyLabel="!label/keylabel_for_nordic_row1_11" /> + latin:keyLabel="!text/keylabel_for_nordic_row1_11" /> </merge> diff --git a/java/res/xml/rowkeys_nordic2.xml b/java/res/xml/rowkeys_nordic2.xml index 52bb2f18f..836214abf 100644 --- a/java/res/xml/rowkeys_nordic2.xml +++ b/java/res/xml/rowkeys_nordic2.xml @@ -24,9 +24,9 @@ <include latin:keyboardLayout="@xml/rowkeys_qwerty2" /> <Key - latin:keyLabel="!label/keylabel_for_nordic_row2_10" - latin:moreKeys="!label/more_keys_for_nordic_row2_10" /> + latin:keyLabel="!text/keylabel_for_nordic_row2_10" + latin:moreKeys="!text/more_keys_for_nordic_row2_10" /> <Key - latin:keyLabel="!label/keylabel_for_nordic_row2_11" - latin:moreKeys="!label/more_keys_for_nordic_row2_11" /> + latin:keyLabel="!text/keylabel_for_nordic_row2_11" + latin:moreKeys="!text/more_keys_for_nordic_row2_11" /> </merge> diff --git a/java/res/xml/rowkeys_qwerty1.xml b/java/res/xml/rowkeys_qwerty1.xml index 8fb60db74..84d613460 100644 --- a/java/res/xml/rowkeys_qwerty1.xml +++ b/java/res/xml/rowkeys_qwerty1.xml @@ -29,42 +29,42 @@ latin:keyLabel="w" latin:keyHintLabel="2" latin:additionalMoreKeys="2" - latin:moreKeys="!label/more_keys_for_w" /> + latin:moreKeys="!text/more_keys_for_w" /> <Key latin:keyLabel="e" latin:keyHintLabel="3" latin:additionalMoreKeys="3" - latin:moreKeys="!label/more_keys_for_e" /> + latin:moreKeys="!text/more_keys_for_e" /> <Key latin:keyLabel="r" latin:keyHintLabel="4" latin:additionalMoreKeys="4" - latin:moreKeys="!label/more_keys_for_r" /> + latin:moreKeys="!text/more_keys_for_r" /> <Key latin:keyLabel="t" latin:keyHintLabel="5" latin:additionalMoreKeys="5" - latin:moreKeys="!label/more_keys_for_t" /> + latin:moreKeys="!text/more_keys_for_t" /> <Key latin:keyLabel="y" latin:keyHintLabel="6" latin:additionalMoreKeys="6" - latin:moreKeys="!label/more_keys_for_y" /> + latin:moreKeys="!text/more_keys_for_y" /> <Key latin:keyLabel="u" latin:keyHintLabel="7" latin:additionalMoreKeys="7" - latin:moreKeys="!label/more_keys_for_u" /> + latin:moreKeys="!text/more_keys_for_u" /> <Key latin:keyLabel="i" latin:keyHintLabel="8" latin:additionalMoreKeys="8" - latin:moreKeys="!label/more_keys_for_i" /> + latin:moreKeys="!text/more_keys_for_i" /> <Key latin:keyLabel="o" latin:keyHintLabel="9" latin:additionalMoreKeys="9" - latin:moreKeys="!label/more_keys_for_o" /> + latin:moreKeys="!text/more_keys_for_o" /> <Key latin:keyLabel="p" latin:keyHintLabel="0" diff --git a/java/res/xml/rowkeys_qwerty2.xml b/java/res/xml/rowkeys_qwerty2.xml index a29f331bc..d9777d920 100644 --- a/java/res/xml/rowkeys_qwerty2.xml +++ b/java/res/xml/rowkeys_qwerty2.xml @@ -23,28 +23,28 @@ > <Key latin:keyLabel="a" - latin:moreKeys="!label/more_keys_for_a" /> + latin:moreKeys="!text/more_keys_for_a" /> <Key latin:keyLabel="s" - latin:moreKeys="!label/more_keys_for_s" /> + latin:moreKeys="!text/more_keys_for_s" /> <Key latin:keyLabel="d" - latin:moreKeys="!label/more_keys_for_d" /> + latin:moreKeys="!text/more_keys_for_d" /> <Key latin:keyLabel="f" /> <Key latin:keyLabel="g" - latin:moreKeys="!label/more_keys_for_g" /> + latin:moreKeys="!text/more_keys_for_g" /> <Key latin:keyLabel="h" - latin:moreKeys="!label/more_keys_for_h" /> + latin:moreKeys="!text/more_keys_for_h" /> <Key latin:keyLabel="j" - latin:moreKeys="!label/more_keys_for_j" /> + latin:moreKeys="!text/more_keys_for_j" /> <Key latin:keyLabel="k" - latin:moreKeys="!label/more_keys_for_k" /> + latin:moreKeys="!text/more_keys_for_k" /> <Key latin:keyLabel="l" - latin:moreKeys="!label/more_keys_for_l" /> + latin:moreKeys="!text/more_keys_for_l" /> </merge> diff --git a/java/res/xml/rowkeys_qwerty3.xml b/java/res/xml/rowkeys_qwerty3.xml index afe43f6e4..a74aeb842 100644 --- a/java/res/xml/rowkeys_qwerty3.xml +++ b/java/res/xml/rowkeys_qwerty3.xml @@ -23,20 +23,20 @@ > <Key latin:keyLabel="z" - latin:moreKeys="!label/more_keys_for_z" /> + latin:moreKeys="!text/more_keys_for_z" /> <Key latin:keyLabel="x" /> <Key latin:keyLabel="c" - latin:moreKeys="!label/more_keys_for_c" /> + latin:moreKeys="!text/more_keys_for_c" /> <Key latin:keyLabel="v" - latin:moreKeys="!label/more_keys_for_v" /> + latin:moreKeys="!text/more_keys_for_v" /> <Key latin:keyLabel="b" /> <Key latin:keyLabel="n" - latin:moreKeys="!label/more_keys_for_n" /> + latin:moreKeys="!text/more_keys_for_n" /> <Key latin:keyLabel="m" /> </merge> diff --git a/java/res/xml/rowkeys_qwertz1.xml b/java/res/xml/rowkeys_qwertz1.xml index 12788968a..d87f03ddc 100644 --- a/java/res/xml/rowkeys_qwertz1.xml +++ b/java/res/xml/rowkeys_qwertz1.xml @@ -29,42 +29,42 @@ latin:keyLabel="w" latin:keyHintLabel="2" latin:additionalMoreKeys="2" - latin:moreKeys="!label/more_keys_for_w" /> + latin:moreKeys="!text/more_keys_for_w" /> <Key latin:keyLabel="e" latin:keyHintLabel="3" latin:additionalMoreKeys="3" - latin:moreKeys="!label/more_keys_for_e" /> + latin:moreKeys="!text/more_keys_for_e" /> <Key latin:keyLabel="r" latin:keyHintLabel="4" latin:additionalMoreKeys="4" - latin:moreKeys="!label/more_keys_for_r" /> + latin:moreKeys="!text/more_keys_for_r" /> <Key latin:keyLabel="t" latin:keyHintLabel="5" latin:additionalMoreKeys="5" - latin:moreKeys="!label/more_keys_for_t" /> + latin:moreKeys="!text/more_keys_for_t" /> <Key latin:keyLabel="z" latin:keyHintLabel="6" latin:additionalMoreKeys="6" - latin:moreKeys="!label/more_keys_for_z" /> + latin:moreKeys="!text/more_keys_for_z" /> <Key latin:keyLabel="u" latin:keyHintLabel="7" latin:additionalMoreKeys="7" - latin:moreKeys="!label/more_keys_for_u" /> + latin:moreKeys="!text/more_keys_for_u" /> <Key latin:keyLabel="i" latin:keyHintLabel="8" latin:additionalMoreKeys="8" - latin:moreKeys="!label/more_keys_for_i" /> + latin:moreKeys="!text/more_keys_for_i" /> <Key latin:keyLabel="o" latin:keyHintLabel="9" latin:additionalMoreKeys="9" - latin:moreKeys="!label/more_keys_for_o" /> + latin:moreKeys="!text/more_keys_for_o" /> <Key latin:keyLabel="p" latin:keyHintLabel="0" diff --git a/java/res/xml/rowkeys_qwertz3.xml b/java/res/xml/rowkeys_qwertz3.xml index e969665a5..9e39fe08e 100644 --- a/java/res/xml/rowkeys_qwertz3.xml +++ b/java/res/xml/rowkeys_qwertz3.xml @@ -23,20 +23,20 @@ > <Key latin:keyLabel="y" - latin:moreKeys="!label/more_keys_for_y" /> + latin:moreKeys="!text/more_keys_for_y" /> <Key latin:keyLabel="x" /> <Key latin:keyLabel="c" - latin:moreKeys="!label/more_keys_for_c" /> + latin:moreKeys="!text/more_keys_for_c" /> <Key latin:keyLabel="v" - latin:moreKeys="!label/more_keys_for_v" /> + latin:moreKeys="!text/more_keys_for_v" /> <Key latin:keyLabel="b" /> <Key latin:keyLabel="n" - latin:moreKeys="!label/more_keys_for_n" /> + latin:moreKeys="!text/more_keys_for_n" /> <Key latin:keyLabel="m" /> </merge> diff --git a/java/res/xml/rowkeys_south_slavic1.xml b/java/res/xml/rowkeys_south_slavic1.xml index 7c9a3bc92..6117d46f1 100644 --- a/java/res/xml/rowkeys_south_slavic1.xml +++ b/java/res/xml/rowkeys_south_slavic1.xml @@ -36,7 +36,7 @@ latin:keyLabel="е" latin:keyHintLabel="3" latin:additionalMoreKeys="3" - latin:moreKeys="!label/more_keys_for_cyrillic_ie" /> + latin:moreKeys="!text/more_keys_for_cyrillic_ie" /> <!-- U+0440: "р" CYRILLIC SMALL LETTER ER --> <Key latin:keyLabel="р" @@ -48,7 +48,7 @@ latin:keyHintLabel="5" latin:additionalMoreKeys="5" /> <Key - latin:keyLabel="!label/keylabel_for_south_slavic_row1_6" + latin:keyLabel="!text/keylabel_for_south_slavic_row1_6" latin:keyHintLabel="6" latin:additionalMoreKeys="6" /> <!-- U+0443: "у" CYRILLIC SMALL LETTER U --> @@ -61,7 +61,7 @@ latin:keyLabel="и" latin:keyHintLabel="8" latin:additionalMoreKeys="8" - latin:moreKeys="!label/more_keys_for_cyrillic_i" /> + latin:moreKeys="!text/more_keys_for_cyrillic_i" /> <!-- U+043E: "о" CYRILLIC SMALL LETTER O --> <Key latin:keyLabel="о" diff --git a/java/res/xml/rowkeys_south_slavic2.xml b/java/res/xml/rowkeys_south_slavic2.xml index e4892085d..88e894053 100644 --- a/java/res/xml/rowkeys_south_slavic2.xml +++ b/java/res/xml/rowkeys_south_slavic2.xml @@ -52,5 +52,5 @@ <Key latin:keyLabel="ч" /> <Key - latin:keyLabel="!label/keylabel_for_south_slavic_row2_11" /> + latin:keyLabel="!text/keylabel_for_south_slavic_row2_11" /> </merge> diff --git a/java/res/xml/rowkeys_south_slavic3.xml b/java/res/xml/rowkeys_south_slavic3.xml index d668ddf39..b01550911 100644 --- a/java/res/xml/rowkeys_south_slavic3.xml +++ b/java/res/xml/rowkeys_south_slavic3.xml @@ -22,7 +22,7 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Key - latin:keyLabel="!label/keylabel_for_south_slavic_row3_1" /> + latin:keyLabel="!text/keylabel_for_south_slavic_row3_1" /> <!-- U+045F: "џ" CYRILLIC SMALL LETTER DZHE --> <Key latin:keyLabel="џ" /> @@ -42,7 +42,7 @@ <Key latin:keyLabel="м" /> <Key - latin:keyLabel="!label/keylabel_for_south_slavic_row3_8" /> + latin:keyLabel="!text/keylabel_for_south_slavic_row3_8" /> <!-- U+0436: "ж" CYRILLIC SMALL LETTER ZHE --> <Key latin:keyLabel="ж" /> diff --git a/java/res/xml/rowkeys_symbols1.xml b/java/res/xml/rowkeys_symbols1.xml index f9f8bb16c..6e2f92dd9 100644 --- a/java/res/xml/rowkeys_symbols1.xml +++ b/java/res/xml/rowkeys_symbols1.xml @@ -22,43 +22,43 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Key - latin:keyLabel="!label/keylabel_for_symbols_1" - latin:additionalMoreKeys="!label/additional_more_keys_for_symbols_1" - latin:moreKeys="!label/more_keys_for_symbols_1" /> + latin:keyLabel="!text/keylabel_for_symbols_1" + latin:additionalMoreKeys="!text/additional_more_keys_for_symbols_1" + latin:moreKeys="!text/more_keys_for_symbols_1" /> <Key - latin:keyLabel="!label/keylabel_for_symbols_2" - latin:additionalMoreKeys="!label/additional_more_keys_for_symbols_2" - latin:moreKeys="!label/more_keys_for_symbols_2" /> + latin:keyLabel="!text/keylabel_for_symbols_2" + latin:additionalMoreKeys="!text/additional_more_keys_for_symbols_2" + latin:moreKeys="!text/more_keys_for_symbols_2" /> <Key - latin:keyLabel="!label/keylabel_for_symbols_3" - latin:additionalMoreKeys="!label/additional_more_keys_for_symbols_3" - latin:moreKeys="!label/more_keys_for_symbols_3" /> + latin:keyLabel="!text/keylabel_for_symbols_3" + latin:additionalMoreKeys="!text/additional_more_keys_for_symbols_3" + latin:moreKeys="!text/more_keys_for_symbols_3" /> <Key - latin:keyLabel="!label/keylabel_for_symbols_4" - latin:additionalMoreKeys="!label/additional_more_keys_for_symbols_4" - latin:moreKeys="!label/more_keys_for_symbols_4" /> + latin:keyLabel="!text/keylabel_for_symbols_4" + latin:additionalMoreKeys="!text/additional_more_keys_for_symbols_4" + latin:moreKeys="!text/more_keys_for_symbols_4" /> <Key - latin:keyLabel="!label/keylabel_for_symbols_5" - latin:additionalMoreKeys="!label/additional_more_keys_for_symbols_5" - latin:moreKeys="!label/more_keys_for_symbols_5" /> + latin:keyLabel="!text/keylabel_for_symbols_5" + latin:additionalMoreKeys="!text/additional_more_keys_for_symbols_5" + latin:moreKeys="!text/more_keys_for_symbols_5" /> <Key - latin:keyLabel="!label/keylabel_for_symbols_6" - latin:additionalMoreKeys="!label/additional_more_keys_for_symbols_6" - latin:moreKeys="!label/more_keys_for_symbols_6" /> + latin:keyLabel="!text/keylabel_for_symbols_6" + latin:additionalMoreKeys="!text/additional_more_keys_for_symbols_6" + latin:moreKeys="!text/more_keys_for_symbols_6" /> <Key - latin:keyLabel="!label/keylabel_for_symbols_7" - latin:additionalMoreKeys="!label/additional_more_keys_for_symbols_7" - latin:moreKeys="!label/more_keys_for_symbols_7" /> + latin:keyLabel="!text/keylabel_for_symbols_7" + latin:additionalMoreKeys="!text/additional_more_keys_for_symbols_7" + latin:moreKeys="!text/more_keys_for_symbols_7" /> <Key - latin:keyLabel="!label/keylabel_for_symbols_8" - latin:additionalMoreKeys="!label/additional_more_keys_for_symbols_8" - latin:moreKeys="!label/more_keys_for_symbols_8" /> + latin:keyLabel="!text/keylabel_for_symbols_8" + latin:additionalMoreKeys="!text/additional_more_keys_for_symbols_8" + latin:moreKeys="!text/more_keys_for_symbols_8" /> <Key - latin:keyLabel="!label/keylabel_for_symbols_9" - latin:additionalMoreKeys="!label/additional_more_keys_for_symbols_9" - latin:moreKeys="!label/more_keys_for_symbols_9" /> + latin:keyLabel="!text/keylabel_for_symbols_9" + latin:additionalMoreKeys="!text/additional_more_keys_for_symbols_9" + latin:moreKeys="!text/more_keys_for_symbols_9" /> <Key - latin:keyLabel="!label/keylabel_for_symbols_0" - latin:additionalMoreKeys="!label/additional_more_keys_for_symbols_0" - latin:moreKeys="!label/more_keys_for_symbols_0" /> + latin:keyLabel="!text/keylabel_for_symbols_0" + latin:additionalMoreKeys="!text/additional_more_keys_for_symbols_0" + latin:moreKeys="!text/more_keys_for_symbols_0" /> </merge> diff --git a/java/res/xml/rowkeys_symbols2.xml b/java/res/xml/rowkeys_symbols2.xml index 47865a989..34b9aa2ee 100644 --- a/java/res/xml/rowkeys_symbols2.xml +++ b/java/res/xml/rowkeys_symbols2.xml @@ -28,13 +28,13 @@ <Key latin:keyStyle="currencyKeyStyle" /> <Key - latin:keyLabel="!label/keylabel_for_symbols_percent" - latin:moreKeys="!label/more_keys_for_symbols_percent" /> + latin:keyLabel="!text/keylabel_for_symbols_percent" + latin:moreKeys="!text/more_keys_for_symbols_percent" /> <Key latin:keyLabel="&" /> <Key latin:keyLabel="*" - latin:moreKeys="!label/more_keys_for_star" /> + latin:moreKeys="!text/more_keys_for_star" /> <!-- U+2013: "–" EN DASH U+2014: "—" EM DASH --> <Key @@ -42,7 +42,7 @@ latin:moreKeys="_,–,—" /> <Key latin:keyLabel="+" - latin:moreKeys="!label/more_keys_for_plus" /> + latin:moreKeys="!text/more_keys_for_plus" /> <include latin:keyboardLayout="@xml/keys_parentheses" /> </merge> diff --git a/java/res/xml/rowkeys_symbols3.xml b/java/res/xml/rowkeys_symbols3.xml index 4cef6b255..294e94d31 100644 --- a/java/res/xml/rowkeys_symbols3.xml +++ b/java/res/xml/rowkeys_symbols3.xml @@ -31,20 +31,20 @@ latin:moreKeys="¡" /> <Key latin:keyLabel=""" - latin:moreKeys="!label/more_keys_for_double_quote" /> + latin:moreKeys="!text/more_keys_for_double_quote" /> <Key latin:keyLabel="\'" - latin:moreKeys="!label/more_keys_for_single_quote" /> + latin:moreKeys="!text/more_keys_for_single_quote" /> <Key latin:keyLabel=":" /> <Key - latin:keyLabel="!label/keylabel_for_symbols_semicolon" - latin:moreKeys="!label/more_keys_for_symbols_semicolon" /> + latin:keyLabel="!text/keylabel_for_symbols_semicolon" + latin:moreKeys="!text/more_keys_for_symbols_semicolon" /> <Key latin:keyLabel="/" /> <Key - latin:keyLabel="!label/keylabel_for_symbols_question" - latin:moreKeys="!label/more_keys_for_symbols_question" /> + latin:keyLabel="!text/keylabel_for_symbols_question" + latin:moreKeys="!text/more_keys_for_symbols_question" /> <Key latin:keyStyle="deleteKeyStyle" latin:keyWidth="fillRight" diff --git a/java/res/xml/rowkeys_symbols_shift1.xml b/java/res/xml/rowkeys_symbols_shift1.xml index af3e87e88..199e4494f 100644 --- a/java/res/xml/rowkeys_symbols_shift1.xml +++ b/java/res/xml/rowkeys_symbols_shift1.xml @@ -30,7 +30,7 @@ <!-- U+2022: "•" BULLET --> <Key latin:keyLabel="•" - latin:moreKeys="!label/more_keys_for_bullet" /> + latin:moreKeys="!text/more_keys_for_bullet" /> <!-- U+221A: "√" SQUARE ROOT --> <Key latin:keyLabel="√" /> diff --git a/java/res/xml/rows_colemak.xml b/java/res/xml/rows_colemak.xml new file mode 100644 index 000000000..a1599650d --- /dev/null +++ b/java/res/xml/rows_colemak.xml @@ -0,0 +1,56 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2012, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <include + latin:keyboardLayout="@xml/key_styles_common" /> + <Row + latin:keyWidth="10%p" + > + <include + latin:keyboardLayout="@xml/rowkeys_colemak1" /> + <include + latin:keyboardLayout="@xml/key_colemak_semicolon" /> + </Row> + <Row + latin:keyWidth="10%p" + > + <include + latin:keyboardLayout="@xml/rowkeys_colemak2" /> + </Row> + <Row + latin:keyWidth="10%p" + > + <Key + latin:keyStyle="shiftKeyStyle" + latin:keyWidth="15%p" + latin:visualInsetsRight="1%p" /> + <include + latin:keyboardLayout="@xml/rowkeys_colemak3" /> + <Key + latin:keyStyle="deleteKeyStyle" + latin:keyWidth="fillRight" + latin:visualInsetsLeft="1%p" /> + </Row> + <include + latin:keyboardLayout="@xml/row_qwerty4" /> +</merge> diff --git a/java/res/xml/rows_dvorak.xml b/java/res/xml/rows_dvorak.xml new file mode 100644 index 000000000..8e3d071b0 --- /dev/null +++ b/java/res/xml/rows_dvorak.xml @@ -0,0 +1,56 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2012, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<merge + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <include + latin:keyboardLayout="@xml/key_styles_common" /> + <Row + latin:keyWidth="10%p" + > + <include + latin:keyboardLayout="@xml/keys_dvorak_123" /> + <include + latin:keyboardLayout="@xml/rowkeys_dvorak1" /> + </Row> + <Row + latin:keyWidth="10%p" + > + <include + latin:keyboardLayout="@xml/rowkeys_dvorak2" /> + </Row> + <Row + latin:keyWidth="10%p" + > + <Key + latin:keyStyle="shiftKeyStyle" + latin:keyWidth="15%p" + latin:visualInsetsRight="1%p" /> + <include + latin:keyboardLayout="@xml/rowkeys_dvorak3" /> + <Key + latin:keyStyle="deleteKeyStyle" + latin:keyWidth="fillRight" + latin:visualInsetsLeft="1%p" /> + </Row> + <include + latin:keyboardLayout="@xml/row_dvorak4" /> +</merge> diff --git a/java/res/xml/rows_number_normal.xml b/java/res/xml/rows_number_normal.xml index 7015bb2d6..28bd7a1d2 100644 --- a/java/res/xml/rows_number_normal.xml +++ b/java/res/xml/rows_number_normal.xml @@ -61,7 +61,7 @@ <Key latin:keyLabel="." latin:keyLabelFlags="hasPopupHint" - latin:moreKeys="!label/more_keys_for_am_pm" + latin:moreKeys="!text/more_keys_for_am_pm" latin:keyStyle="numFunctionalKeyStyle" latin:keyWidth="fillRight" /> </case> diff --git a/java/res/xml/rows_symbols.xml b/java/res/xml/rows_symbols.xml index dcd8d59d8..2a73ffbf9 100644 --- a/java/res/xml/rows_symbols.xml +++ b/java/res/xml/rows_symbols.xml @@ -44,5 +44,5 @@ latin:keyboardLayout="@xml/rowkeys_symbols3" /> </Row> <include - latin:keyboardLayout="@xml/rows_symbols4" /> + latin:keyboardLayout="@xml/row_symbols4" /> </merge> diff --git a/java/res/xml/rows_symbols_shift.xml b/java/res/xml/rows_symbols_shift.xml index 6205eeddd..0ab9715c1 100644 --- a/java/res/xml/rows_symbols_shift.xml +++ b/java/res/xml/rows_symbols_shift.xml @@ -44,5 +44,5 @@ latin:keyboardLayout="@xml/rowkeys_symbols_shift3" /> </Row> <include - latin:keyboardLayout="@xml/rows_symbols_shift4" /> + latin:keyboardLayout="@xml/row_symbols_shift4" /> </merge> diff --git a/java/src/com/android/inputmethod/accessibility/AccessibilityEntityProvider.java b/java/src/com/android/inputmethod/accessibility/AccessibilityEntityProvider.java index bb5890ad2..004ee4c22 100644 --- a/java/src/com/android/inputmethod/accessibility/AccessibilityEntityProvider.java +++ b/java/src/com/android/inputmethod/accessibility/AccessibilityEntityProvider.java @@ -18,6 +18,7 @@ package com.android.inputmethod.accessibility; import android.graphics.Rect; import android.inputmethodservice.InputMethodService; +import android.os.Bundle; import android.support.v4.view.ViewCompat; import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat; import android.support.v4.view.accessibility.AccessibilityNodeProviderCompat; @@ -185,14 +186,15 @@ public class AccessibilityEntityProvider extends AccessibilityNodeProviderCompat * the host View, with the given <code>virtualViewId</code> or the host View itself if * <code>virtualViewId</code> equals to {@link View#NO_ID}. * - * @param action The action to perform. * @param virtualViewId A client defined virtual view id. + * @param action The action to perform. + * @param arguments Optional arguments. * @return True if the action was performed. * @see #createAccessibilityNodeInfo(int) * @see AccessibilityNodeInfoCompat */ @Override - public boolean performAccessibilityAction(int action, int virtualViewId) { + public boolean performAction(int virtualViewId, int action, Bundle arguments) { if (virtualViewId == View.NO_ID) { // Perform the action on the host View. switch (action) { diff --git a/java/src/com/android/inputmethod/keyboard/Key.java b/java/src/com/android/inputmethod/keyboard/Key.java index 68858e5bf..0d78c39f2 100644 --- a/java/src/com/android/inputmethod/keyboard/Key.java +++ b/java/src/com/android/inputmethod/keyboard/Key.java @@ -16,6 +16,12 @@ package com.android.inputmethod.keyboard; +import static com.android.inputmethod.keyboard.Keyboard.CODE_OUTPUT_TEXT; +import static com.android.inputmethod.keyboard.Keyboard.CODE_SHIFT; +import static com.android.inputmethod.keyboard.Keyboard.CODE_SWITCH_ALPHA_SYMBOL; +import static com.android.inputmethod.keyboard.Keyboard.CODE_UNSPECIFIED; +import static com.android.inputmethod.keyboard.internal.KeyboardIconsSet.ICON_UNDEFINED; + import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.Rect; @@ -170,11 +176,11 @@ public class Key { mLabel = label; mOutputText = outputText; mCode = code; - mEnabled = (code != Keyboard.CODE_UNSPECIFIED); - mAltCode = Keyboard.CODE_UNSPECIFIED; + mEnabled = (code != CODE_UNSPECIFIED); + mAltCode = CODE_UNSPECIFIED; mIconId = iconId; - mDisabledIconId = KeyboardIconsSet.ICON_UNDEFINED; - mPreviewIconId = KeyboardIconsSet.ICON_UNDEFINED; + mDisabledIconId = ICON_UNDEFINED; + mPreviewIconId = ICON_UNDEFINED; // Horizontal gap is divided equally to both sides of the key. mX = x + mHorizontalGap / 2; mY = y; @@ -208,9 +214,9 @@ public class Key { if (keyAttr.hasValue(R.styleable.Keyboard_Key_keyStyle)) { String styleName = keyAttr.getString(R.styleable.Keyboard_Key_keyStyle); style = keyStyles.getKeyStyle(styleName); - if (style == null) - throw new XmlParseUtils.ParseException( - "Unknown key style: " + styleName, parser); + if (style == null) { + throw new XmlParseUtils.ParseException("Unknown key style: " + styleName, parser); + } } else { style = keyStyles.getEmptyKeyStyle(); } @@ -235,12 +241,12 @@ public class Key { R.styleable.Keyboard_Key_visualInsetsLeft, params.mBaseWidth, 0); mVisualInsetsRight = (int) Keyboard.Builder.getDimensionOrFraction(keyAttr, R.styleable.Keyboard_Key_visualInsetsRight, params.mBaseWidth, 0); - mPreviewIconId = style.getInt(keyAttr, - R.styleable.Keyboard_Key_keyIconPreview, KeyboardIconsSet.ICON_UNDEFINED); - mIconId = style.getInt(keyAttr, - R.styleable.Keyboard_Key_keyIcon, KeyboardIconsSet.ICON_UNDEFINED); - mDisabledIconId = style.getInt(keyAttr, - R.styleable.Keyboard_Key_keyIconDisabled, KeyboardIconsSet.ICON_UNDEFINED); + mIconId = KeySpecParser.getIconId(style.getString(keyAttr, + R.styleable.Keyboard_Key_keyIcon)); + mDisabledIconId = KeySpecParser.getIconId(style.getString(keyAttr, + R.styleable.Keyboard_Key_keyIconDisabled)); + mPreviewIconId = KeySpecParser.getIconId(style.getString(keyAttr, + R.styleable.Keyboard_Key_keyIconPreview)); mLabelFlags = style.getFlag(keyAttr, R.styleable.Keyboard_Key_keyLabelFlags) | row.getDefaultKeyLabelFlags(); @@ -272,8 +278,8 @@ public class Key { if ((mLabelFlags & LABEL_FLAGS_DISABLE_ADDITIONAL_MORE_KEYS) != 0) { additionalMoreKeys = null; } else { - additionalMoreKeys = style.getStringArray( - keyAttr, R.styleable.Keyboard_Key_additionalMoreKeys); + additionalMoreKeys = style.getStringArray(keyAttr, + R.styleable.Keyboard_Key_additionalMoreKeys); } moreKeys = KeySpecParser.insertAdditionalMoreKeys(moreKeys, additionalMoreKeys); if (moreKeys != null) { @@ -291,22 +297,21 @@ public class Key { if ((mLabelFlags & LABEL_FLAGS_FROM_CUSTOM_ACTION_LABEL) != 0) { mLabel = params.mId.mCustomActionLabel; } else { - mLabel = adjustCaseOfStringForKeyboardId(style.getString( - keyAttr, R.styleable.Keyboard_Key_keyLabel), preserveCase, params.mId); + mLabel = adjustCaseOfStringForKeyboardId(style.getString(keyAttr, + R.styleable.Keyboard_Key_keyLabel), preserveCase, params.mId); } if ((mLabelFlags & LABEL_FLAGS_DISABLE_HINT_LABEL) != 0) { mHintLabel = null; } else { - mHintLabel = adjustCaseOfStringForKeyboardId(style.getString( - keyAttr, R.styleable.Keyboard_Key_keyHintLabel), preserveCase, params.mId); + mHintLabel = adjustCaseOfStringForKeyboardId(style.getString(keyAttr, + R.styleable.Keyboard_Key_keyHintLabel), preserveCase, params.mId); } - String outputText = adjustCaseOfStringForKeyboardId(style.getString( - keyAttr, R.styleable.Keyboard_Key_keyOutputText), preserveCase, params.mId); - final int code = KeySpecParser.parseCode(style.getString( - keyAttr, R.styleable.Keyboard_Key_code), - params.mCodesSet, Keyboard.CODE_UNSPECIFIED); + String outputText = adjustCaseOfStringForKeyboardId(style.getString(keyAttr, + R.styleable.Keyboard_Key_keyOutputText), preserveCase, params.mId); + final int code = KeySpecParser.parseCode(style.getString(keyAttr, + R.styleable.Keyboard_Key_code), params.mCodesSet, CODE_UNSPECIFIED); // Choose the first letter of the label as primary code if not specified. - if (code == Keyboard.CODE_UNSPECIFIED && TextUtils.isEmpty(outputText) + if (code == CODE_UNSPECIFIED && TextUtils.isEmpty(outputText) && !TextUtils.isEmpty(mLabel)) { if (StringUtils.codePointCount(mLabel) == 1) { // Use the first letter of the hint label if shiftedLetterActivated flag is @@ -321,22 +326,21 @@ public class Key { // In some locale and case, the character might be represented by multiple code // points, such as upper case Eszett of German alphabet. outputText = mLabel; - mCode = Keyboard.CODE_OUTPUT_TEXT; + mCode = CODE_OUTPUT_TEXT; } - } else if (code == Keyboard.CODE_UNSPECIFIED && outputText != null) { + } else if (code == CODE_UNSPECIFIED && outputText != null) { if (StringUtils.codePointCount(outputText) == 1) { mCode = outputText.codePointAt(0); outputText = null; } else { - mCode = Keyboard.CODE_OUTPUT_TEXT; + mCode = CODE_OUTPUT_TEXT; } } else { mCode = adjustCaseOfCodeForKeyboardId(code, preserveCase, params.mId); } mOutputText = outputText; - mAltCode = adjustCaseOfCodeForKeyboardId(KeySpecParser.parseCode(style.getString( - keyAttr, R.styleable.Keyboard_Key_altCode), - params.mCodesSet, Keyboard.CODE_UNSPECIFIED), + mAltCode = adjustCaseOfCodeForKeyboardId(KeySpecParser.parseCode(style.getString(keyAttr, + R.styleable.Keyboard_Key_altCode), params.mCodesSet, CODE_UNSPECIFIED), preserveCase, params.mId); mHashCode = computeHashCode(this); @@ -353,7 +357,7 @@ public class Key { final String text = new String(new int[] { code } , 0, 1); final String casedText = adjustCaseOfStringForKeyboardId(text, preserveCase, id); return StringUtils.codePointCount(casedText) == 1 - ? casedText.codePointAt(0) : Keyboard.CODE_UNSPECIFIED; + ? casedText.codePointAt(0) : CODE_UNSPECIFIED; } private static String adjustCaseOfStringForKeyboardId(String text, boolean preserveCase, @@ -463,11 +467,11 @@ public class Key { } public boolean isShift() { - return mCode == Keyboard.CODE_SHIFT; + return mCode == CODE_SHIFT; } public boolean isModifier() { - return mCode == Keyboard.CODE_SHIFT || mCode == Keyboard.CODE_SWITCH_ALPHA_SYMBOL; + return mCode == CODE_SHIFT || mCode == CODE_SWITCH_ALPHA_SYMBOL; } public boolean isRepeatable() { @@ -586,7 +590,7 @@ public class Key { } public Drawable getPreviewIcon(KeyboardIconsSet iconSet) { - return mPreviewIconId != KeyboardIconsSet.ICON_UNDEFINED + return mPreviewIconId != ICON_UNDEFINED ? iconSet.getIconDrawable(mPreviewIconId) : iconSet.getIconDrawable(mIconId); } @@ -726,7 +730,7 @@ public class Key { * This constructor is being used only for divider in more keys keyboard. */ protected Spacer(Keyboard.Params params, int x, int y, int width, int height) { - super(params, null, null, KeyboardIconsSet.ICON_UNDEFINED, Keyboard.CODE_UNSPECIFIED, + super(params, null, null, ICON_UNDEFINED, CODE_UNSPECIFIED, null, x, y, width, height, 0); } } diff --git a/java/src/com/android/inputmethod/keyboard/Keyboard.java b/java/src/com/android/inputmethod/keyboard/Keyboard.java index fca8f56c8..28855f561 100644 --- a/java/src/com/android/inputmethod/keyboard/Keyboard.java +++ b/java/src/com/android/inputmethod/keyboard/Keyboard.java @@ -30,7 +30,7 @@ import android.view.InflateException; import com.android.inputmethod.keyboard.internal.KeyStyles; import com.android.inputmethod.keyboard.internal.KeyboardCodesSet; import com.android.inputmethod.keyboard.internal.KeyboardIconsSet; -import com.android.inputmethod.keyboard.internal.KeyboardLabelsSet; +import com.android.inputmethod.keyboard.internal.KeyboardTextsSet; import com.android.inputmethod.latin.LatinImeLogger; import com.android.inputmethod.latin.LocaleUtils.RunInLocale; import com.android.inputmethod.latin.R; @@ -236,8 +236,8 @@ public class Keyboard { public final ArrayList<Key> mAltCodeKeysWhileTyping = new ArrayList<Key>(); public final KeyboardIconsSet mIconsSet = new KeyboardIconsSet(); public final KeyboardCodesSet mCodesSet = new KeyboardCodesSet(); - public final KeyboardLabelsSet mLabelsSet = new KeyboardLabelsSet(); - public final KeyStyles mKeyStyles = new KeyStyles(mLabelsSet); + public final KeyboardTextsSet mTextsSet = new KeyboardTextsSet(); + public final KeyStyles mKeyStyles = new KeyStyles(mTextsSet); public KeyboardLayoutSet.KeysCache mKeysCache; @@ -313,8 +313,11 @@ public class Keyboard { public void onAddKey(Key newKey) { final Key key = (mKeysCache != null) ? mKeysCache.get(newKey) : newKey; - mKeys.add(key); - updateHistogram(key); + final boolean zeroWidthSpacer = key.isSpacer() && key.mWidth == 0; + if (!zeroWidthSpacer) { + mKeys.add(key); + updateHistogram(key); + } if (key.mCode == Keyboard.CODE_SHIFT) { mShiftKeys.add(key); } @@ -776,11 +779,11 @@ public class Keyboard { params.mIconsSet.loadIcons(keyboardAttr); final String language = params.mId.mLocale.getLanguage(); params.mCodesSet.setLanguage(language); - params.mLabelsSet.setLanguage(language); + params.mTextsSet.setLanguage(language); final RunInLocale<Void> job = new RunInLocale<Void>() { @Override protected Void job(Resources res) { - params.mLabelsSet.loadStringResources(mContext); + params.mTextsSet.loadStringResources(mContext); return null; } }; diff --git a/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java b/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java index efb0d77ea..d50d096c6 100644 --- a/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java +++ b/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java @@ -467,6 +467,9 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke mSpaceIcon = (mSpaceKey != null) ? mSpaceKey.getIcon(keyboard.mIconsSet) : null; final int keyHeight = keyboard.mMostCommonKeyHeight - keyboard.mVerticalGap; mSpacebarTextSize = keyHeight * mSpacebarTextRatio; + if (ProductionFlag.IS_EXPERIMENTAL) { + ResearchLogger.latinKeyboardView_setKeyboard(keyboard); + } } /** diff --git a/java/src/com/android/inputmethod/keyboard/internal/AlphabetShiftState.java b/java/src/com/android/inputmethod/keyboard/internal/AlphabetShiftState.java index 392afca97..5712df1fc 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/AlphabetShiftState.java +++ b/java/src/com/android/inputmethod/keyboard/internal/AlphabetShiftState.java @@ -18,9 +18,6 @@ package com.android.inputmethod.keyboard.internal; import android.util.Log; -import com.android.inputmethod.latin.ResearchLogger; -import com.android.inputmethod.latin.define.ProductionFlag; - public class AlphabetShiftState { private static final String TAG = AlphabetShiftState.class.getSimpleName(); private static final boolean DEBUG = false; @@ -62,9 +59,6 @@ public class AlphabetShiftState { } if (DEBUG) Log.d(TAG, "setShifted(" + newShiftState + "): " + toString(oldState) + " > " + this); - if (ProductionFlag.IS_EXPERIMENTAL) { - ResearchLogger.alphabetShiftState_setShifted(newShiftState, oldState, this); - } } public void setShiftLocked(boolean newShiftLockState) { @@ -84,9 +78,6 @@ public class AlphabetShiftState { if (DEBUG) Log.d(TAG, "setShiftLocked(" + newShiftLockState + "): " + toString(oldState) + " > " + this); - if (ProductionFlag.IS_EXPERIMENTAL) { - ResearchLogger.alphabetShiftState_setShiftLocked(newShiftLockState, oldState, this); - } } public void setAutomaticShifted() { @@ -94,9 +85,6 @@ public class AlphabetShiftState { mState = AUTOMATIC_SHIFTED; if (DEBUG) Log.d(TAG, "setAutomaticShifted: " + toString(oldState) + " > " + this); - if (ProductionFlag.IS_EXPERIMENTAL) { - ResearchLogger.alphabetShiftState_setAutomaticShifted(oldState, this); - } } public boolean isShiftedOrShiftLocked() { diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java b/java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java index 8261400b2..a44ddf182 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java +++ b/java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java @@ -30,8 +30,8 @@ import java.util.Arrays; * The specification is comma separated texts each of which represents one "more key". * The specification might have label or string resource reference in it. These references are * expanded before parsing comma. - * - Label reference should be a string representation of label (!label/label_name) - * - String resource reference should be a string representation of resource (!label/resource_name) + * - Label reference should be a string representation of label (!text/label_name) + * - String resource reference should be a string representation of resource (!text/resource_name) * Each "more key" specification is one of the following: * - Label optionally followed by keyOutputText or code (keyLabel|keyOutputText). * - Icon followed by keyOutputText or code (!icon/icon_name|!code/code_name) @@ -51,7 +51,7 @@ public class KeySpecParser { private static int COMMA = ','; private static final char ESCAPE_CHAR = '\\'; private static final char LABEL_END = '|'; - private static final String PREFIX_LABEL = "!label/"; + private static final String PREFIX_TEXT = "!text/"; private static final String PREFIX_ICON = "!icon/"; private static final String PREFIX_CODE = "!code/"; private static final String PREFIX_HEX = "0x"; @@ -76,20 +76,13 @@ public class KeySpecParser { } private static boolean hasIcon(String moreKeySpec) { - if (moreKeySpec.startsWith(PREFIX_ICON)) { - final int end = indexOfLabelEnd(moreKeySpec, 0); - if (end > 0) { - return true; - } - throw new KeySpecParserError("outputText or code not specified: " + moreKeySpec); - } - return false; + return moreKeySpec.regionMatches(true, 0, PREFIX_ICON, 0, PREFIX_ICON.length()); } private static boolean hasCode(String moreKeySpec) { final int end = indexOfLabelEnd(moreKeySpec, 0); - if (end > 0 && end + 1 < moreKeySpec.length() - && moreKeySpec.substring(end + 1).startsWith(PREFIX_CODE)) { + if (end > 0 && end + 1 < moreKeySpec.length() && moreKeySpec.regionMatches( + true, end + 1, PREFIX_CODE, 0, PREFIX_CODE.length())) { return true; } return false; @@ -210,19 +203,20 @@ public class KeySpecParser { public static int parseCode(String text, KeyboardCodesSet codesSet, int defCode) { if (text == null) return defCode; - if (text.startsWith(PREFIX_CODE)) { + if (text.regionMatches(true, 0, PREFIX_CODE, 0, PREFIX_CODE.length())) { return codesSet.getCode(text.substring(PREFIX_CODE.length())); - } else if (text.startsWith(PREFIX_HEX)) { + } else if (text.regionMatches(true, 0, PREFIX_HEX, 0, PREFIX_HEX.length())) { return Integer.parseInt(text.substring(PREFIX_HEX.length()), 16); } else { return Integer.parseInt(text); } } - static int getIconId(String moreKeySpec) { - if (hasIcon(moreKeySpec)) { + public static int getIconId(String moreKeySpec) { + if (moreKeySpec != null && hasIcon(moreKeySpec)) { final int end = moreKeySpec.indexOf(LABEL_END, PREFIX_ICON.length()); - final String name = moreKeySpec.substring(PREFIX_ICON.length(), end); + final String name = (end < 0) ? moreKeySpec.substring(PREFIX_ICON.length()) + : moreKeySpec.substring(PREFIX_ICON.length(), end); return KeyboardIconsSet.getIconId(name); } return KeyboardIconsSet.ICON_UNDEFINED; @@ -340,7 +334,7 @@ public class KeySpecParser { } } - public static String resolveLabelReference(String rawText, KeyboardLabelsSet labelsSet) { + public static String resolveTextReference(String rawText, KeyboardTextsSet textsSet) { int level = 0; String text = rawText; StringBuilder sb; @@ -350,21 +344,23 @@ public class KeySpecParser { throw new RuntimeException("too many @string/resource indirection: " + text); } + final int prefixLen = PREFIX_TEXT.length(); final int size = text.length(); - if (size < PREFIX_LABEL.length()) { + if (size < prefixLen) { return text; } sb = null; for (int pos = 0; pos < size; pos++) { final char c = text.charAt(pos); - if (text.startsWith(PREFIX_LABEL, pos) && labelsSet != null) { + if (text.regionMatches(true, pos, PREFIX_TEXT, 0, prefixLen) + && textsSet != null) { if (sb == null) { sb = new StringBuilder(text.substring(0, pos)); } - final int end = searchLabelNameEnd(text, pos + PREFIX_LABEL.length()); - final String name = text.substring(pos + PREFIX_LABEL.length(), end); - sb.append(labelsSet.getLabel(name)); + final int end = searchTextNameEnd(text, pos + prefixLen); + final String name = text.substring(pos + prefixLen, end); + sb.append(textsSet.getText(name)); pos = end - 1; } else if (c == ESCAPE_CHAR) { if (sb != null) { @@ -385,12 +381,13 @@ public class KeySpecParser { return text; } - private static int searchLabelNameEnd(String text, int start) { + private static int searchTextNameEnd(String text, int start) { final int size = text.length(); for (int pos = start; pos < size; pos++) { final char c = text.charAt(pos); - // String resource name should be consisted of [a-z_0-9]. - if ((c >= 'a' && c <= 'z') || c == '_' || (c >= '0' && c <= '9')) { + // Label name should be consisted of [a-zA-Z_0-9]. + if ((c >= 'a' && c <= 'z') || c == '_' || (c >= '0' && c <= '9') + || (c >= 'A' && c <= 'Z')) { continue; } return pos; @@ -398,8 +395,8 @@ public class KeySpecParser { return size; } - public static String[] parseCsvString(String rawText, KeyboardLabelsSet labelsSet) { - final String text = resolveLabelReference(rawText, labelsSet); + public static String[] parseCsvString(String rawText, KeyboardTextsSet textsSet) { + final String text = resolveTextReference(rawText, textsSet); final int size = text.length(); if (size == 0) { return null; @@ -442,17 +439,19 @@ public class KeySpecParser { if (moreKeys == null) { return defaultValue; } + final int keyLen = key.length(); boolean foundValue = false; int value = defaultValue; for (int i = 0; i < moreKeys.length; i++) { final String moreKeySpec = moreKeys[i]; - if (moreKeySpec == null || !moreKeySpec.startsWith(key)) { + if (moreKeySpec == null || !moreKeySpec.regionMatches(true, 0, key, 0, keyLen)) { continue; } moreKeys[i] = null; try { if (!foundValue) { - value = Integer.parseInt(moreKeySpec.substring(key.length())); + value = Integer.parseInt(moreKeySpec.substring(keyLen)); + foundValue = true; } } catch (NumberFormatException e) { throw new RuntimeException( @@ -469,7 +468,7 @@ public class KeySpecParser { boolean value = false; for (int i = 0; i < moreKeys.length; i++) { final String moreKeySpec = moreKeys[i]; - if (moreKeySpec == null || !moreKeySpec.equals(key)) { + if (moreKeySpec == null || !moreKeySpec.equalsIgnoreCase(key)) { continue; } moreKeys[i] = null; diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyStyles.java b/java/src/com/android/inputmethod/keyboard/internal/KeyStyles.java index 8e0b21607..b32172ebe 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/KeyStyles.java +++ b/java/src/com/android/inputmethod/keyboard/internal/KeyStyles.java @@ -35,19 +35,19 @@ public class KeyStyles { private final HashMap<String, DeclaredKeyStyle> mStyles = new HashMap<String, DeclaredKeyStyle>(); - private final KeyboardLabelsSet mLabelsSet; + private final KeyboardTextsSet mTextsSet; private final KeyStyle mEmptyKeyStyle; - public KeyStyles(KeyboardLabelsSet labelsSet) { - mLabelsSet = labelsSet; - mEmptyKeyStyle = new EmptyKeyStyle(labelsSet); + public KeyStyles(KeyboardTextsSet textsSet) { + mTextsSet = textsSet; + mEmptyKeyStyle = new EmptyKeyStyle(textsSet); } public static abstract class KeyStyle { - protected final KeyboardLabelsSet mLabelsSet; + protected final KeyboardTextsSet mTextsSet; - public KeyStyle(KeyboardLabelsSet labelsSet) { - mLabelsSet = labelsSet; + public KeyStyle(KeyboardTextsSet textsSet) { + mTextsSet = textsSet; } public abstract String[] getStringArray(TypedArray a, int index); @@ -57,22 +57,22 @@ public class KeyStyles { protected String parseString(TypedArray a, int index) { if (a.hasValue(index)) { - return KeySpecParser.resolveLabelReference(a.getString(index), mLabelsSet); + return KeySpecParser.resolveTextReference(a.getString(index), mTextsSet); } return null; } protected String[] parseStringArray(TypedArray a, int index) { if (a.hasValue(index)) { - return KeySpecParser.parseCsvString(a.getString(index), mLabelsSet); + return KeySpecParser.parseCsvString(a.getString(index), mTextsSet); } return null; } } private static class EmptyKeyStyle extends KeyStyle { - public EmptyKeyStyle(KeyboardLabelsSet labelsSet) { - super(labelsSet); + public EmptyKeyStyle(KeyboardTextsSet textsSet) { + super(textsSet); } @Override @@ -99,8 +99,8 @@ public class KeyStyles { private static class DeclaredKeyStyle extends KeyStyle { private final HashMap<Integer, Object> mStyleAttributes = new HashMap<Integer, Object>(); - public DeclaredKeyStyle(KeyboardLabelsSet labelsSet) { - super(labelsSet); + public DeclaredKeyStyle(KeyboardTextsSet textsSet) { + super(textsSet); } @Override @@ -145,9 +145,9 @@ public class KeyStyles { readStringArray(keyAttr, R.styleable.Keyboard_Key_moreKeys); readStringArray(keyAttr, R.styleable.Keyboard_Key_additionalMoreKeys); readFlag(keyAttr, R.styleable.Keyboard_Key_keyLabelFlags); - readInt(keyAttr, R.styleable.Keyboard_Key_keyIcon); - readInt(keyAttr, R.styleable.Keyboard_Key_keyIconDisabled); - readInt(keyAttr, R.styleable.Keyboard_Key_keyIconPreview); + readString(keyAttr, R.styleable.Keyboard_Key_keyIcon); + readString(keyAttr, R.styleable.Keyboard_Key_keyIconDisabled); + readString(keyAttr, R.styleable.Keyboard_Key_keyIconPreview); readInt(keyAttr, R.styleable.Keyboard_Key_maxMoreKeysColumn); readInt(keyAttr, R.styleable.Keyboard_Key_backgroundType); readFlag(keyAttr, R.styleable.Keyboard_Key_keyActionFlags); @@ -195,7 +195,7 @@ public class KeyStyles { } } - final DeclaredKeyStyle style = new DeclaredKeyStyle(mLabelsSet); + final DeclaredKeyStyle style = new DeclaredKeyStyle(mTextsSet); if (keyStyleAttr.hasValue(R.styleable.Keyboard_KeyStyle_parentStyle)) { final String parentStyle = keyStyleAttr.getString( R.styleable.Keyboard_KeyStyle_parentStyle); diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardCodesSet.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardCodesSet.java index 736a96c56..c10a394c1 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardCodesSet.java +++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardCodesSet.java @@ -33,7 +33,10 @@ public class KeyboardCodesSet { } public int getCode(final String name) { - final Integer id = sNameToIdMap.get(name); + Integer id = sNameToIdMap.get(name); + if (id == null) { + id = sNameToIdMap.get(name.toLowerCase()); + } if (id == null) throw new RuntimeException("Unknown key code: " + name); return mCodes[id]; } diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardIconsSet.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardIconsSet.java index ded89b1b8..a86a9577f 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardIconsSet.java +++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardIconsSet.java @@ -28,46 +28,52 @@ import java.util.HashMap; public class KeyboardIconsSet { private static final String TAG = KeyboardIconsSet.class.getSimpleName(); - // The value should be aligned with the enum value of Key.keyIcon. public static final int ICON_UNDEFINED = 0; - private static final int NUM_ICONS = 16; - - private final Drawable[] mIcons = new Drawable[NUM_ICONS + 1]; + private static final int ATTR_UNDEFINED = 0; private static final HashMap<Integer, Integer> ATTR_ID_TO_ICON_ID = new HashMap<Integer, Integer>(); - private static final HashMap<String, Integer> NAME_TO_ICON_ID = new HashMap<String, Integer>(); - private static final String[] ICON_NAMES = new String[NUM_ICONS + 1]; - private static final int ATTR_UNDEFINED = 0; - static { - // The key value should be aligned with the enum value of Key.keyIcon. - addIconIdMap(0, "undefined", ATTR_UNDEFINED); - addIconIdMap(1, "shiftKey", R.styleable.Keyboard_iconShiftKey); - addIconIdMap(2, "deleteKey", R.styleable.Keyboard_iconDeleteKey); - addIconIdMap(3, "settingsKey", R.styleable.Keyboard_iconSettingsKey); - addIconIdMap(4, "spaceKey", R.styleable.Keyboard_iconSpaceKey); - addIconIdMap(5, "returnKey", R.styleable.Keyboard_iconReturnKey); - addIconIdMap(6, "searchKey", R.styleable.Keyboard_iconSearchKey); - addIconIdMap(7, "tabKey", R.styleable.Keyboard_iconTabKey); - addIconIdMap(8, "shortcutKey", R.styleable.Keyboard_iconShortcutKey); - addIconIdMap(9, "shortcutForLabel", R.styleable.Keyboard_iconShortcutForLabel); - addIconIdMap(10, "spaceKeyForNumberLayout", - R.styleable.Keyboard_iconSpaceKeyForNumberLayout); - addIconIdMap(11, "shiftKeyShifted", R.styleable.Keyboard_iconShiftKeyShifted); - addIconIdMap(12, "disabledShortcurKey", R.styleable.Keyboard_iconDisabledShortcutKey); - addIconIdMap(13, "previewTabKey", R.styleable.Keyboard_iconPreviewTabKey); - addIconIdMap(14, "languageSwitchKey", R.styleable.Keyboard_iconLanguageSwitchKey); - addIconIdMap(15, "zwnjKey", R.styleable.Keyboard_iconZwnjKey); - addIconIdMap(16, "zwjKey", R.styleable.Keyboard_iconZwjKey); - } + // Lower case icon name to icon id map. + private static final HashMap<String, Integer> sLowerCaseNameToIdsMap = + new HashMap<String, Integer>(); + + private static final Object[] NAMES_AND_ATTR_IDS = { + "undefined", ATTR_UNDEFINED, + "shift_key", R.styleable.Keyboard_iconShiftKey, + "delete_key", R.styleable.Keyboard_iconDeleteKey, + "settings_key", R.styleable.Keyboard_iconSettingsKey, + "space_key", R.styleable.Keyboard_iconSpaceKey, + "enter_key", R.styleable.Keyboard_iconEnterKey, + "search_key", R.styleable.Keyboard_iconSearchKey, + "tab_key", R.styleable.Keyboard_iconTabKey, + "shortcut_key", R.styleable.Keyboard_iconShortcutKey, + "shortcut_for_label", R.styleable.Keyboard_iconShortcutForLabel, + "space_key_for_number_layout", R.styleable.Keyboard_iconSpaceKeyForNumberLayout, + "shift_key_shifted", R.styleable.Keyboard_iconShiftKeyShifted, + "shortcut_key_disabled", R.styleable.Keyboard_iconShortcutKeyDisabled, + "tab_key_preview", R.styleable.Keyboard_iconTabKeyPreview, + "language_switch_key", R.styleable.Keyboard_iconLanguageSwitchKey, + "zwnj_key", R.styleable.Keyboard_iconZwnjKey, + "zwj_key", R.styleable.Keyboard_iconZwjKey, + }; + + private static int NUM_ICONS = NAMES_AND_ATTR_IDS.length / 2; + private static final String[] ICON_NAMES = new String[NUM_ICONS]; + private final Drawable[] mIcons = new Drawable[NUM_ICONS]; - private static void addIconIdMap(int iconId, String name, int attrId) { - if (attrId != ATTR_UNDEFINED) { - ATTR_ID_TO_ICON_ID.put(attrId, iconId); + static { + int iconId = ICON_UNDEFINED; + for (int i = 0; i < NAMES_AND_ATTR_IDS.length; i += 2) { + final String name = (String)NAMES_AND_ATTR_IDS[i]; + final Integer attrId = (Integer)NAMES_AND_ATTR_IDS[i + 1]; + if (attrId != ATTR_UNDEFINED) { + ATTR_ID_TO_ICON_ID.put(attrId, iconId); + } + sLowerCaseNameToIdsMap.put(name, iconId); + ICON_NAMES[iconId] = name; + iconId++; } - NAME_TO_ICON_ID.put(name, iconId); - ICON_NAMES[iconId] = name; } public void loadIcons(final TypedArray keyboardAttrs) { @@ -93,8 +99,11 @@ public class KeyboardIconsSet { return isValidIconId(iconId) ? ICON_NAMES[iconId] : "unknown<" + iconId + ">"; } - public static int getIconId(final String name) { - final Integer iconId = NAME_TO_ICON_ID.get(name); + static int getIconId(final String name) { + Integer iconId = sLowerCaseNameToIdsMap.get(name); + if (iconId == null) { + iconId = sLowerCaseNameToIdsMap.get(name.toLowerCase()); + } if (iconId != null) { return iconId; } diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java index 6949c9d12..2d80a798d 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java +++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java @@ -141,9 +141,6 @@ public class KeyboardState { if (DEBUG_EVENT) { Log.d(TAG, "onSaveKeyboardState: saved=" + state + " " + this); } - if (ProductionFlag.IS_EXPERIMENTAL) { - ResearchLogger.keyboardState_onSaveKeyboardState(this, state.toString()); - } } private void onRestoreKeyboardState() { @@ -151,9 +148,6 @@ public class KeyboardState { if (DEBUG_EVENT) { Log.d(TAG, "onRestoreKeyboardState: saved=" + state + " " + this); } - if (ProductionFlag.IS_EXPERIMENTAL) { - ResearchLogger.keyboardState_onRestoreKeyboardState(this, state.toString()); - } if (!state.mIsValid || state.mIsAlphabetMode) { setAlphabetKeyboard(); } else { @@ -186,9 +180,6 @@ public class KeyboardState { if (DEBUG_ACTION) { Log.d(TAG, "setShifted: shiftMode=" + shiftModeToString(shiftMode) + " " + this); } - if (ProductionFlag.IS_EXPERIMENTAL) { - ResearchLogger.keyboardState_setShifted(this, shiftModeToString(shiftMode)); - } if (!mIsAlphabetMode) return; final int prevShiftMode; if (mAlphabetShiftState.isAutomaticShifted()) { @@ -228,9 +219,6 @@ public class KeyboardState { if (DEBUG_ACTION) { Log.d(TAG, "setShiftLocked: shiftLocked=" + shiftLocked + " " + this); } - if (ProductionFlag.IS_EXPERIMENTAL) { - ResearchLogger.keyboardState_setShiftLocked(this, shiftLocked); - } if (!mIsAlphabetMode) return; if (shiftLocked && (!mAlphabetShiftState.isShiftLocked() || mAlphabetShiftState.isShiftLockShifted())) { @@ -246,9 +234,6 @@ public class KeyboardState { if (DEBUG_ACTION) { Log.d(TAG, "toggleAlphabetAndSymbols: " + this); } - if (ProductionFlag.IS_EXPERIMENTAL) { - ResearchLogger.keyboardState_toggleAlphabetAndSymbols(this); - } if (mIsAlphabetMode) { mPrevMainKeyboardWasShiftLocked = mAlphabetShiftState.isShiftLocked(); if (mPrevSymbolsKeyboardWasShifted) { @@ -280,9 +265,6 @@ public class KeyboardState { Log.d(TAG, "setAlphabetKeyboard"); } - if (ProductionFlag.IS_EXPERIMENTAL) { - ResearchLogger.keyboardState_setAlphabetKeyboard(); - } mSwitchActions.setAlphabetKeyboard(); mIsAlphabetMode = true; mIsSymbolShifted = false; @@ -294,9 +276,6 @@ public class KeyboardState { if (DEBUG_ACTION) { Log.d(TAG, "setSymbolsKeyboard"); } - if (ProductionFlag.IS_EXPERIMENTAL) { - ResearchLogger.keyboardState_setSymbolsKeyboard(); - } mSwitchActions.setSymbolsKeyboard(); mIsAlphabetMode = false; mIsSymbolShifted = false; @@ -309,9 +288,6 @@ public class KeyboardState { if (DEBUG_ACTION) { Log.d(TAG, "setSymbolsShiftedKeyboard"); } - if (ProductionFlag.IS_EXPERIMENTAL) { - ResearchLogger.keyboardState_setSymbolsShiftedKeyboard(); - } mSwitchActions.setSymbolsShiftedKeyboard(); mIsAlphabetMode = false; mIsSymbolShifted = true; @@ -399,9 +375,6 @@ public class KeyboardState { if (DEBUG_EVENT) { Log.d(TAG, "onUpdateShiftState: autoCaps=" + autoCaps + " " + this); } - if (ProductionFlag.IS_EXPERIMENTAL) { - ResearchLogger.keyboardState_onUpdateShiftState(this, autoCaps); - } updateAlphabetShiftState(autoCaps); } diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardLabelsSet.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java index 3ade2dda7..d0f27a9a8 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardLabelsSet.java +++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java @@ -25,22 +25,23 @@ import java.util.HashMap; /** * !!!!! DO NOT EDIT THIS FILE !!!!! - * This file is generated by tools/makelabel. + * This file is generated by tools/maketext. */ -public final class KeyboardLabelsSet { - // Language to labels map. - private static final HashMap<String, String[]> sLocaleToLabelsMap = +public final class KeyboardTextsSet { + // Language to texts map. + private static final HashMap<String, String[]> sLocaleToTextsMap = new HashMap<String, String[]>(); - private static final HashMap<String, Integer> sNameToIdMap = new HashMap<String, Integer>(); + private static final HashMap<String, Integer> sLowerCaseNameToIdsMap = + new HashMap<String, Integer>(); - private String[] mLabels; - // Resource name to label map. - private HashMap<String, String> mResourceNameToLabelsMap = new HashMap<String, String>(); + private String[] mTexts; + // Resource name to text map. + private HashMap<String, String> mResourceNameToTextsMap = new HashMap<String, String>(); public void setLanguage(final String language) { - mLabels = sLocaleToLabelsMap.get(language); - if (mLabels == null) { - mLabels = LANGUAGE_DEFAULT; + mTexts = sLocaleToTextsMap.get(language); + if (mTexts == null) { + mTexts = LANGUAGE_DEFAULT; } } @@ -55,22 +56,31 @@ public final class KeyboardLabelsSet { final String packageName = res.getResourcePackageName(referenceId); for (final String resName : resourceNames) { final int resId = res.getIdentifier(resName, "string", packageName); - mResourceNameToLabelsMap.put(resName, res.getString(resId)); + mResourceNameToTextsMap.put(resName, res.getString(resId)); } } - public String getLabel(final String name) { - if (mResourceNameToLabelsMap.containsKey(name)) { - return mResourceNameToLabelsMap.get(name); + public String getText(final String name) { + String lowerCaseName = null; + String text = mResourceNameToTextsMap.get(name); + if (text == null) { + lowerCaseName = name.toLowerCase(); + text = mResourceNameToTextsMap.get(lowerCaseName); + } + if (text != null) { + return text; + } + Integer id = sLowerCaseNameToIdsMap.get(name); + if (id == null) { + id = sLowerCaseNameToIdsMap.get(lowerCaseName); // lowerCaseName != null } - final Integer id = sNameToIdMap.get(name); if (id == null) throw new RuntimeException("Unknown label: " + name); - final String label = (id < mLabels.length) ? mLabels[id] : null; - return (label == null) ? LANGUAGE_DEFAULT[id] : label; + text = (id < mTexts.length) ? mTexts[id] : null; + return (text == null) ? LANGUAGE_DEFAULT[id] : text; } private static final String[] RESOURCE_NAMES = { - // These labels' name should be aligned with the @string/<name> in values/strings.xml. + // These texts' name should be aligned with the @string/<name> in values/strings.xml. // Labels for action. "label_go_key", // "label_search_key", @@ -138,80 +148,81 @@ public final class KeyboardLabelsSet { /* 48 */ "more_keys_for_smiley", /* 49 */ "more_keys_for_punctuation", /* 50 */ "keyhintlabel_for_punctuation", - /* 51 */ "keylabel_for_popular_domain", - /* 52 */ "more_keys_for_popular_domain", - /* 53 */ "keylabel_for_symbols_1", - /* 54 */ "keylabel_for_symbols_2", - /* 55 */ "keylabel_for_symbols_3", - /* 56 */ "keylabel_for_symbols_4", - /* 57 */ "keylabel_for_symbols_5", - /* 58 */ "keylabel_for_symbols_6", - /* 59 */ "keylabel_for_symbols_7", - /* 60 */ "keylabel_for_symbols_8", - /* 61 */ "keylabel_for_symbols_9", - /* 62 */ "keylabel_for_symbols_0", - /* 63 */ "additional_more_keys_for_symbols_1", - /* 64 */ "additional_more_keys_for_symbols_2", - /* 65 */ "additional_more_keys_for_symbols_3", - /* 66 */ "additional_more_keys_for_symbols_4", - /* 67 */ "additional_more_keys_for_symbols_5", - /* 68 */ "additional_more_keys_for_symbols_6", - /* 69 */ "additional_more_keys_for_symbols_7", - /* 70 */ "additional_more_keys_for_symbols_8", - /* 71 */ "additional_more_keys_for_symbols_9", - /* 72 */ "additional_more_keys_for_symbols_0", - /* 73 */ "more_keys_for_symbols_1", - /* 74 */ "more_keys_for_symbols_2", - /* 75 */ "more_keys_for_symbols_3", - /* 76 */ "more_keys_for_symbols_4", - /* 77 */ "more_keys_for_symbols_5", - /* 78 */ "more_keys_for_symbols_6", - /* 79 */ "more_keys_for_symbols_7", - /* 80 */ "more_keys_for_symbols_8", - /* 81 */ "more_keys_for_symbols_9", - /* 82 */ "more_keys_for_symbols_0", - /* 83 */ "more_keys_for_am_pm", - /* 84 */ "settings_as_more_key", - /* 85 */ "keylabel_for_comma", - /* 86 */ "more_keys_for_comma", - /* 87 */ "action_next_as_more_key", - /* 88 */ "action_previous_as_more_key", - /* 89 */ "keylabel_for_symbols_question", - /* 90 */ "keylabel_for_symbols_semicolon", - /* 91 */ "keylabel_for_symbols_percent", - /* 92 */ "more_keys_for_symbols_question", - /* 93 */ "more_keys_for_symbols_semicolon", - /* 94 */ "more_keys_for_symbols_percent", - /* 95 */ "keylabel_for_tablet_comma", - /* 96 */ "keyhintlabel_for_tablet_comma", - /* 97 */ "more_keys_for_tablet_comma", - /* 98 */ "keyhintlabel_for_tablet_period", - /* 99 */ "more_keys_for_tablet_period", - /* 100 */ "keylabel_for_apostrophe", - /* 101 */ "keylabel_for_dash", - /* 102 */ "keyhintlabel_for_apostrophe", - /* 103 */ "keyhintlabel_for_dash", - /* 104 */ "more_keys_for_apostrophe", - /* 105 */ "more_keys_for_dash", - /* 106 */ "more_keys_for_bullet", - /* 107 */ "more_keys_for_star", - /* 108 */ "more_keys_for_plus", - /* 109 */ "more_keys_for_left_parenthesis", - /* 110 */ "more_keys_for_right_parenthesis", - /* 111 */ "more_keys_for_less_than", - /* 112 */ "more_keys_for_greater_than", - /* 113 */ "label_to_more_symbol_key", - /* 114 */ "label_to_more_symbol_for_tablet_key", - /* 115 */ "label_tab_key", - /* 116 */ "label_to_phone_numeric_key", - /* 117 */ "label_to_phone_symbols_key", - /* 118 */ "label_time_am", - /* 119 */ "label_time_pm", + /* 51 */ "more_keys_for_star", + /* 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 */ "keylabel_for_popular_domain", + /* 58 */ "more_keys_for_popular_domain", + /* 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 */ "additional_more_keys_for_symbols_1", + /* 70 */ "additional_more_keys_for_symbols_2", + /* 71 */ "additional_more_keys_for_symbols_3", + /* 72 */ "additional_more_keys_for_symbols_4", + /* 73 */ "additional_more_keys_for_symbols_5", + /* 74 */ "additional_more_keys_for_symbols_6", + /* 75 */ "additional_more_keys_for_symbols_7", + /* 76 */ "additional_more_keys_for_symbols_8", + /* 77 */ "additional_more_keys_for_symbols_9", + /* 78 */ "additional_more_keys_for_symbols_0", + /* 79 */ "more_keys_for_symbols_1", + /* 80 */ "more_keys_for_symbols_2", + /* 81 */ "more_keys_for_symbols_3", + /* 82 */ "more_keys_for_symbols_4", + /* 83 */ "more_keys_for_symbols_5", + /* 84 */ "more_keys_for_symbols_6", + /* 85 */ "more_keys_for_symbols_7", + /* 86 */ "more_keys_for_symbols_8", + /* 87 */ "more_keys_for_symbols_9", + /* 88 */ "more_keys_for_symbols_0", + /* 89 */ "keylabel_for_comma", + /* 90 */ "more_keys_for_comma", + /* 91 */ "keylabel_for_symbols_question", + /* 92 */ "keylabel_for_symbols_semicolon", + /* 93 */ "keylabel_for_symbols_percent", + /* 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 */ "keylabel_for_dash", + /* 104 */ "keyhintlabel_for_apostrophe", + /* 105 */ "keyhintlabel_for_dash", + /* 106 */ "more_keys_for_apostrophe", + /* 107 */ "more_keys_for_dash", + /* 108 */ "more_keys_for_bullet", + /* 109 */ "more_keys_for_am_pm", + /* 110 */ "settings_as_more_key", + /* 111 */ "shortcut_as_more_key", + /* 112 */ "action_next_as_more_key", + /* 113 */ "action_previous_as_more_key", + /* 114 */ "label_to_more_symbol_key", + /* 115 */ "label_to_more_symbol_for_tablet_key", + /* 116 */ "label_tab_key", + /* 117 */ "label_to_phone_numeric_key", + /* 118 */ "label_to_phone_symbols_key", + /* 119 */ "label_time_am", + /* 120 */ "label_time_pm", }; private static final String EMPTY = ""; - /* Default labels */ + /* Default texts */ private static final String[] LANGUAGE_DEFAULT = { /* 0~ */ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, @@ -220,9 +231,11 @@ public final class KeyboardLabelsSet { EMPTY, EMPTY, /* ~40 */ /* 41 */ "!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> + // 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> /* 42 */ "!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> + // 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> /* 43 */ "!fixedColumnOrder!4,\u201C,\u201D,\u00AB,\u00BB,\u2018,\u2019,\u201A,\u201B", // U+00A2: "¢" CENT SIGN // U+00A3: "£" POUND SIGN @@ -236,120 +249,122 @@ public final class KeyboardLabelsSet { /* 48 */ "!fixedColumnOrder!5,!hasLabels!,=-O|=-O ,:-P|:-P ,;-)|;-) ,:-(|:-( ,:-)|:-) ,:-!|:-! ,:-$|:-$ ,B-)|B-) ,:O|:O ,:-*|:-* ,:-D|:-D ,:\'(|:\'( ,:-\\\\|:-\\\\ ,O:-)|O:-) ,:-[|:-[ ", /* 49 */ "!fixedColumnOrder!8,\",\',#,-,:,!,\\,,?,@,&,\\%,+,;,/,(,)", /* 50 */ EMPTY, - /* 51 */ ".com", + // U+2020: "†" DAGGER + // U+2021: "‡" DOUBLE DAGGER + // U+2605: "★" BLACK STAR + /* 51 */ "\u2020,\u2021,\u2605", + // U+00B1: "±" PLUS-MINUS SIGN + /* 52 */ "\u00B1", + // The all letters need to be mirrored are found at + // http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt + /* 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 + // U+2265: "≥" GREATER-THAN EQUAL TO + // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK + // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK + // The following characters don't need BIDI mirroring. + // U+2018: "‘" LEFT SINGLE QUOTATION MARK + // U+2019: "’" RIGHT SINGLE QUOTATION MARK + // U+201A: "‚" SINGLE LOW-9 QUOTATION MARK + // U+201B: "‛" SINGLE HIGH-REVERSED-9 QUOTATION MARK + // U+201C: "“" LEFT DOUBLE QUOTATION MARK + // U+201D: "”" RIGHT DOUBLE QUOTATION MARK + // U+201E: "„" DOUBLE LOW-9 QUOTATION MARK + // U+201F: "‟" DOUBLE HIGH-REVERSED-9 QUOTATION MARK + /* 55 */ "!fixedColumnOrder!3,\u2039,\u2264,\u00AB", + /* 56 */ "!fixedColumnOrder!3,\u203A,\u2265,\u00BB", + /* 57 */ ".com", // popular web domains for the locale - most popular, displayed on the keyboard - /* 52 */ "!hasLabels!,.net,.org,.gov,.edu", - /* 53 */ "1", - /* 54 */ "2", - /* 55 */ "3", - /* 56 */ "4", - /* 57 */ "5", - /* 58 */ "6", - /* 59 */ "7", - /* 60 */ "8", - /* 61 */ "9", - /* 62 */ "0", - /* 63~ */ + /* 58 */ "!hasLabels!,.net,.org,.gov,.edu", + /* 59 */ "1", + /* 60 */ "2", + /* 61 */ "3", + /* 62 */ "4", + /* 63 */ "5", + /* 64 */ "6", + /* 65 */ "7", + /* 66 */ "8", + /* 67 */ "9", + /* 68 */ "0", + /* 69~ */ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, - /* ~72 */ + /* ~78 */ // 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 - /* 73 */ "\u00B9,\u00BD,\u2153,\u00BC,\u215B", + /* 79 */ "\u00B9,\u00BD,\u2153,\u00BC,\u215B", // U+00B2: "²" SUPERSCRIPT TWO // U+2154: "⅔" VULGAR FRACTION TWO THIRDS - /* 74 */ "\u00B2,\u2154", + /* 80 */ "\u00B2,\u2154", // U+00B3: "³" SUPERSCRIPT THREE // U+00BE: "¾" VULGAR FRACTION THREE QUARTERS // U+215C: "⅜" VULGAR FRACTION THREE EIGHTHS - /* 75 */ "\u00B3,\u00BE,\u215C", + /* 81 */ "\u00B3,\u00BE,\u215C", // U+2074: "⁴" SUPERSCRIPT FOUR - /* 76 */ "\u2074", + /* 82 */ "\u2074", // U+215D: "⅝" VULGAR FRACTION FIVE EIGHTHS - /* 77 */ "\u215D", - /* 78 */ EMPTY, + /* 83 */ "\u215D", + /* 84 */ EMPTY, // U+215E: "⅞" VULGAR FRACTION SEVEN EIGHTHS - /* 79 */ "\u215E", - /* 80 */ EMPTY, - /* 81 */ EMPTY, + /* 85 */ "\u215E", + /* 86 */ EMPTY, + /* 87 */ EMPTY, // U+207F: "ⁿ" SUPERSCRIPT LATIN SMALL LETTER N // U+2205: "∅" EMPTY SET - /* 82 */ "\u207F,\u2205", - /* 83 */ "!fixedColumnOrder!2,!hasLabels!,!label/label_time_am,!label/label_time_pm", - /* 84 */ "!icon/settingsKey|!code/key_settings", - /* 85 */ ",", - /* 86 */ EMPTY, - /* 87 */ "!hasLabels!,!label/label_next_key|!code/key_action_next", - /* 88 */ "!hasLabels!,!label/label_previous_key|!code/key_action_previous", - /* 89 */ "?", - /* 90 */ ";", - /* 91 */ "%", + /* 88 */ "\u207F,\u2205", + /* 89 */ ",", + /* 90 */ EMPTY, + /* 91 */ "?", + /* 92 */ ";", + /* 93 */ "%", // U+00BF: "¿" INVERTED QUESTION MARK - /* 92 */ "\u00BF", - /* 93 */ EMPTY, + /* 94 */ "\u00BF", + /* 95 */ EMPTY, // U+2030: "‰" PER MILLE SIGN - /* 94 */ "\u2030", - /* 95 */ ",", - /* 96 */ "!", - /* 97 */ "!", - /* 98 */ "?", - /* 99 */ "?", - /* 100 */ "\'", - /* 101 */ "-", - /* 102 */ "\"", - /* 103 */ "_", + /* 96 */ "\u2030", + /* 97 */ ",", + /* 98 */ "!", + /* 99 */ "!", + /* 100 */ "?", + /* 101 */ "?", + /* 102 */ "\'", + /* 103 */ "-", /* 104 */ "\"", /* 105 */ "_", + /* 106 */ "\"", + /* 107 */ "_", // U+266A: "♪" EIGHTH NOTE // U+2665: "♥" BLACK HEART SUIT // U+2660: "♠" BLACK SPADE SUIT // U+2666: "♦" BLACK DIAMOND SUIT // U+2663: "♣" BLACK CLUB SUIT - /* 106 */ "\u266A,\u2665,\u2660,\u2666,\u2663", - // U+2020: "†" DAGGER - // U+2021: "‡" DOUBLE DAGGER - // U+2605: "★" BLACK STAR - /* 107 */ "\u2020,\u2021,\u2605", - // U+00B1: "±" PLUS-MINUS SIGN - /* 108 */ "\u00B1", - // The all letters need to be mirrored are found at - // http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt - /* 109 */ "!fixedColumnOrder!3,<,{,[", - /* 110 */ "!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 - // U+2265: "≥" GREATER-THAN EQUAL TO - // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK - // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK - // The following characters don't need BIDI mirroring. - // U+2018: "‘" LEFT SINGLE QUOTATION MARK - // U+2019: "’" RIGHT SINGLE QUOTATION MARK - // U+201A: "‚" SINGLE LOW-9 QUOTATION MARK - // U+201B: "‛" SINGLE HIGH-REVERSED-9 QUOTATION MARK - // U+201C: "“" LEFT DOUBLE QUOTATION MARK - // U+201D: "”" RIGHT DOUBLE QUOTATION MARK - // U+201E: "„" DOUBLE LOW-9 QUOTATION MARK - // U+201F: "‟" DOUBLE HIGH-REVERSED-9 QUOTATION MARK - /* 111 */ "!fixedColumnOrder!3,\u2039,\u2264,\u00AB", - /* 112 */ "!fixedColumnOrder!3,\u203A,\u2265,\u00BB", + /* 108 */ "\u266A,\u2665,\u2660,\u2666,\u2663", + /* 109 */ "!fixedColumnOrder!2,!hasLabels!,!text/label_time_am,!text/label_time_pm", + /* 110 */ "!icon/settings_key|!code/key_settings", + /* 111 */ "!icon/shortcut_key|!code/key_shortcut", + /* 112 */ "!hasLabels!,!text/label_next_key|!code/key_action_next", + /* 113 */ "!hasLabels!,!text/label_previous_key|!code/key_action_previous", // Label for "switch to more symbol" modifier key. Must be short to fit on key! - /* 113 */ "= \\ <", + /* 114 */ "= \\ <", // Label for "switch to more symbol" modifier key on tablets. Must be short to fit on key! - /* 114 */ "~ \\ {", + /* 115 */ "~ \\ {", // Label for "Tab" key. Must be short to fit on key! - /* 115 */ "Tab", + /* 116 */ "Tab", // Label for "switch to phone numeric" key. Must be short to fit on key! - /* 116 */ "123", - // Label for "switch to phone symbols" key. Must be short to fit on key! U+FF0A: "*" FULLWIDTH ASTERISK + /* 117 */ "123", + // Label for "switch to phone symbols" key. Must be short to fit on key! + // U+FF0A: "*" FULLWIDTH ASTERISK // U+FF03: "#" FULLWIDTH NUMBER SIGN - /* 117 */ "\uFF0A\uFF03", + /* 118 */ "\uFF0A\uFF03", // Key label for "ante meridiem" - /* 118 */ "AM", + /* 119 */ "AM", // Key label for "post meridiem" - /* 119 */ "PM", + /* 120 */ "PM", }; /* Language ar: Arabic */ @@ -359,132 +374,141 @@ public final class KeyboardLabelsSet { null, null, null, 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 */ - // 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> + // 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> /* 42 */ "!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> + // 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> /* 43 */ "!fixedColumnOrder!4,\u201C,\u201D,\u00AB|\u00BB,\u00BB|\u00AB,\u2018,\u2019,\u201A,\u201B", /* 44~ */ null, null, null, null, null, /* ~48 */ // U+061F: "؟" ARABIC QUESTION MARK // U+060C: "،" ARABIC COMMA - // U+061B: "؛" ARABIC SEMICOLON U+0650: "ِ" ARABIC KASRA + // U+061B: "؛" ARABIC SEMICOLON + // U+0650: "ِ" ARABIC KASRA // U+064E: "َ" ARABIC FATHA // U+064D: "ٍ" ARABIC KASRATAN // U+064B: "ً" ARABIC FATHATAN // U+0656: "ٖ" ARABIC SUBSCRIPT ALEF // U+0670: "ٰ" ARABIC LETTER SUPERSCRIPT ALEF // U+0655: "ٕ" ARABIC HAMZA BELOW - // U+0654: "ٔ" ARABIC HAMZA ABOVE U+064F: "ُ" ARABIC DAMMA + // U+0654: "ٔ" ARABIC HAMZA ABOVE + // U+064F: "ُ" ARABIC DAMMA // U+064C: "ٌ" ARABIC DAMMATAN // U+0651: "ّ" ARABIC SHADDA // U+0652: "ْ" ARABIC SUKUN // U+0653: "ٓ" ARABIC MADDAH ABOVE - // U+0640: "ـ" ARABIC TATWEEL In order to make Tatweel easily distinguishable from other punctuations, we use consecutive Tatweels only for its displayed label. + // U+0640: "ـ" ARABIC TATWEEL + // In order to make Tatweel easily distinguishable from other punctuations, we use consecutive Tatweels only for its displayed label. /* 49 */ "!fixedColumnOrder!8,\",\',-,:,!,\u061F,\u060C,\u061B,\u0650,\u064E,\u064D,\u064B,\u0656,\u0670,\u0655,\u0654,\u064F,\u064C,\u0651,\u0652,\u0653,\u0640\u0640\u0640|\u0640,/", /* 50 */ "\u064B", - /* 51 */ null, + // U+2605: "★" BLACK STAR + // U+066D: "٭" ARABIC FIVE POINTED STAR + /* 51 */ "\u2605,\u066D", /* 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 + // TODO: DroidSansArabic lacks the glyph of U+FD3E ORNATE LEFT PARENTHESIS + // TODO: DroidSansArabic lacks the glyph of U+FD3F ORNATE RIGHT PARENTHESIS + /* 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 + // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK + // U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK + // U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK + // The following characters don't need BIDI mirroring. + // U+2018: "‘" LEFT SINGLE QUOTATION MARK + // U+2019: "’" RIGHT SINGLE QUOTATION MARK + // U+201A: "‚" SINGLE LOW-9 QUOTATION MARK + // U+201B: "‛" SINGLE HIGH-REVERSED-9 QUOTATION MARK + // U+201C: "“" LEFT DOUBLE QUOTATION MARK + // U+201D: "”" RIGHT DOUBLE QUOTATION MARK + // U+201E: "„" DOUBLE LOW-9 QUOTATION MARK + // U+201F: "‟" DOUBLE HIGH-REVERSED-9 QUOTATION MARK + /* 55 */ "!fixedColumnOrder!3,\u2039|\u203A,\u2264|\u2265,\u00AB|\u00BB", + /* 56 */ "!fixedColumnOrder!3,\u203A|\u2039,\u2265|\u2264,\u00BB|\u00AB", + /* 57 */ null, + /* 58 */ null, // U+0661: "١" ARABIC-INDIC DIGIT ONE - /* 53 */ "\u0661", + /* 59 */ "\u0661", // U+0662: "٢" ARABIC-INDIC DIGIT TWO - /* 54 */ "\u0662", + /* 60 */ "\u0662", // U+0663: "٣" ARABIC-INDIC DIGIT THREE - /* 55 */ "\u0663", + /* 61 */ "\u0663", // U+0664: "٤" ARABIC-INDIC DIGIT FOUR - /* 56 */ "\u0664", + /* 62 */ "\u0664", // U+0665: "٥" ARABIC-INDIC DIGIT FIVE - /* 57 */ "\u0665", + /* 63 */ "\u0665", // U+0666: "٦" ARABIC-INDIC DIGIT SIX - /* 58 */ "\u0666", + /* 64 */ "\u0666", // U+0667: "٧" ARABIC-INDIC DIGIT SEVEN - /* 59 */ "\u0667", + /* 65 */ "\u0667", // U+0668: "٨" ARABIC-INDIC DIGIT EIGHT - /* 60 */ "\u0668", + /* 66 */ "\u0668", // U+0669: "٩" ARABIC-INDIC DIGIT NINE - /* 61 */ "\u0669", + /* 67 */ "\u0669", // U+0660: "٠" ARABIC-INDIC DIGIT ZERO - /* 62 */ "\u0660", - /* 63 */ "1", - /* 64 */ "2", - /* 65 */ "3", - /* 66 */ "4", - /* 67 */ "5", - /* 68 */ "6", - /* 69 */ "7", - /* 70 */ "8", - /* 71 */ "9", + /* 68 */ "\u0660", + /* 69 */ "1", + /* 70 */ "2", + /* 71 */ "3", + /* 72 */ "4", + /* 73 */ "5", + /* 74 */ "6", + /* 75 */ "7", + /* 76 */ "8", + /* 77 */ "9", // U+066B: "٫" ARABIC DECIMAL SEPARATOR // U+066C: "٬" ARABIC THOUSANDS SEPARATOR - /* 72 */ "0,\u066B,\u066C", - /* 73~ */ - null, null, null, null, null, null, null, null, null, null, null, null, - /* ~84 */ + /* 78 */ "0,\u066B,\u066C", + /* 79~ */ + null, null, null, null, null, null, null, null, null, null, + /* ~88 */ // U+060C: "،" ARABIC COMMA - /* 85 */ "\u060C", - /* 86 */ "\\,", - /* 87 */ null, - /* 88 */ null, - /* 89 */ "\u061F", - /* 90 */ "\u061B", + /* 89 */ "\u060C", + /* 90 */ "\\,", + /* 91 */ "\u061F", + /* 92 */ "\u061B", // U+066A: "٪" ARABIC PERCENT SIGN - /* 91 */ "\u066A", - /* 92 */ "?", - /* 93 */ ";", + /* 93 */ "\u066A", + /* 94 */ "?", + /* 95 */ ";", // U+2030: "‰" PER MILLE SIGN - /* 94 */ "%,\u2030", - /* 95~ */ + /* 96 */ "%,\u2030", + /* 97~ */ null, null, null, null, null, - /* ~99 */ + /* ~101 */ // U+060C: "،" ARABIC COMMA // U+061B: "؛" ARABIC SEMICOLON // U+061F: "؟" ARABIC QUESTION MARK - /* 100 */ "\u060C", - /* 101 */ ".", - /* 102 */ "\u061F", - /* 103 */ "\u064B", - /* 104 */ "\u061F,\u061B,!,:,-,/,\',\"", + /* 102 */ "\u060C", + /* 103 */ ".", + /* 104 */ "\u061F", + /* 105 */ "\u064B", + /* 106 */ "\u061F,\u061B,!,:,-,/,\',\"", // U+0651: "ّ" ARABIC SHADDA // U+0652: "ْ" ARABIC SUKUN // U+064C: "ٌ" ARABIC DAMMATAN // U+0653: "ٓ" ARABIC MADDAH ABOVE - // U+064F: "ُ" ARABIC DAMMA U+0650: "ِ" ARABIC KASRA + // U+064F: "ُ" ARABIC DAMMA + // U+0650: "ِ" ARABIC KASRA // U+064E: "َ" ARABIC FATHA // U+064B: "ً" ARABIC FATHATAN // U+0640: "ـ" ARABIC TATWEEL - // U+064D: "ٍ" ARABIC KASRATAN U+0670: "ٰ" ARABIC LETTER SUPERSCRIPT ALEF + // U+064D: "ٍ" ARABIC KASRATAN + // U+0670: "ٰ" ARABIC LETTER SUPERSCRIPT ALEF // U+0656: "ٖ" ARABIC SUBSCRIPT ALEF // U+0654: "ٔ" ARABIC HAMZA ABOVE - // U+0655: "ٕ" ARABIC HAMZA BELOW In order to make Tatweel easily distinguishable from other punctuations, we use consecutive Tatweels only for its displayed label. - /* 105 */ "\u0651,\u0652,\u064C,\u0653,\u064F,\u0650,\u064E,\u064B,\u0640\u0640\u0640|\u0640,\u064D,\u0654,\u0656,\u0655,\u0670", + // U+0655: "ٕ" ARABIC HAMZA BELOW + // In order to make Tatweel easily distinguishable from other punctuations, we use consecutive Tatweels only for its displayed label. + /* 107 */ "\u0651,\u0652,\u064C,\u0653,\u064F,\u0650,\u064E,\u064B,\u0640\u0640\u0640|\u0640,\u064D,\u0654,\u0656,\u0655,\u0670", // U+266A: "♪" EIGHTH NOTE - /* 106 */ "\u266A", - // U+2605: "★" BLACK STAR - // U+066D: "٭" ARABIC FIVE POINTED STAR - /* 107 */ "\u2605,\u066D", - /* 108 */ 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 TODO: DroidSansArabic lacks the glyph of U+FD3E ORNATE LEFT PARENTHESIS TODO: DroidSansArabic lacks the glyph of U+FD3F ORNATE RIGHT PARENTHESIS - /* 109 */ "!fixedColumnOrder!4,\uFD3E|\uFD3F,<|>,{|},[|]", - /* 110 */ "!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 - // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK - // U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK - // U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK - // The following characters don't need BIDI mirroring. - // U+2018: "‘" LEFT SINGLE QUOTATION MARK - // U+2019: "’" RIGHT SINGLE QUOTATION MARK - // U+201A: "‚" SINGLE LOW-9 QUOTATION MARK - // U+201B: "‛" SINGLE HIGH-REVERSED-9 QUOTATION MARK - // U+201C: "“" LEFT DOUBLE QUOTATION MARK - // U+201D: "”" RIGHT DOUBLE QUOTATION MARK - // U+201E: "„" DOUBLE LOW-9 QUOTATION MARK - // U+201F: "‟" DOUBLE HIGH-REVERSED-9 QUOTATION MARK - /* 111 */ "!fixedColumnOrder!3,\u2039|\u203A,\u2264|\u2265,\u00AB|\u00BB", - /* 112 */ "!fixedColumnOrder!3,\u203A|\u2039,\u2265|\u2264,\u00BB|\u00AB", + /* 108 */ "\u266A", }; /* Language be: Belarusian */ @@ -954,134 +978,143 @@ public final class KeyboardLabelsSet { null, null, null, 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 */ - // 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> + // 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> /* 42 */ "!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> + // 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> /* 43 */ "!fixedColumnOrder!4,\u201C,\u201D,\u00AB|\u00BB,\u00BB|\u00AB,\u2018,\u2019,\u201A,\u201B", /* 44~ */ null, null, null, null, null, /* ~48 */ // U+061F: "؟" ARABIC QUESTION MARK // U+060C: "،" ARABIC COMMA - // U+061B: "؛" ARABIC SEMICOLON U+0650: "ِ" ARABIC KASRA + // U+061B: "؛" ARABIC SEMICOLON + // U+0650: "ِ" ARABIC KASRA // U+064E: "َ" ARABIC FATHA // U+064D: "ٍ" ARABIC KASRATAN // U+064B: "ً" ARABIC FATHATAN // U+0656: "ٖ" ARABIC SUBSCRIPT ALEF // U+0670: "ٰ" ARABIC LETTER SUPERSCRIPT ALEF // U+0655: "ٕ" ARABIC HAMZA BELOW - // U+0654: "ٔ" ARABIC HAMZA ABOVE U+064F: "ُ" ARABIC DAMMA + // U+0654: "ٔ" ARABIC HAMZA ABOVE + // U+064F: "ُ" ARABIC DAMMA // U+064C: "ٌ" ARABIC DAMMATAN // U+0651: "ّ" ARABIC SHADDA // U+0652: "ْ" ARABIC SUKUN // U+0653: "ٓ" ARABIC MADDAH ABOVE - // U+0640: "ـ" ARABIC TATWEEL In order to make Tatweel easily distinguishable from other punctuations, we use consecutive Tatweels only for its displayed label. + // U+0640: "ـ" ARABIC TATWEEL + // In order to make Tatweel easily distinguishable from other punctuations, we use consecutive Tatweels only for its displayed label. /* 49 */ "!fixedColumnOrder!8,\",\',-,:,!,\u061F,\u060C,\u061B,\u0650,\u064E,\u064D,\u064B,\u0656,\u0670,\u0655,\u0654,\u064F,\u064C,\u0651,\u0652,\u0653,\u0640\u0640\u0640|\u0640,/", /* 50 */ "\u064B", - /* 51 */ null, + // U+2605: "★" BLACK STAR + // U+066D: "٭" ARABIC FIVE POINTED STAR + /* 51 */ "\u2605,\u066D", /* 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 + // TODO: DroidSansArabic lacks the glyph of U+FD3E ORNATE LEFT PARENTHESIS + // TODO: DroidSansArabic lacks the glyph of U+FD3F ORNATE RIGHT PARENTHESIS + /* 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 + // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK + // U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK + // U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK + // The following characters don't need BIDI mirroring. + // U+2018: "‘" LEFT SINGLE QUOTATION MARK + // U+2019: "’" RIGHT SINGLE QUOTATION MARK + // U+201A: "‚" SINGLE LOW-9 QUOTATION MARK + // U+201B: "‛" SINGLE HIGH-REVERSED-9 QUOTATION MARK + // U+201C: "“" LEFT DOUBLE QUOTATION MARK + // U+201D: "”" RIGHT DOUBLE QUOTATION MARK + // U+201E: "„" DOUBLE LOW-9 QUOTATION MARK + // U+201F: "‟" DOUBLE HIGH-REVERSED-9 QUOTATION MARK + /* 55 */ "!fixedColumnOrder!3,\u2039|\u203A,\u2264|\u2265,\u00AB|\u00BB", + /* 56 */ "!fixedColumnOrder!3,\u203A|\u2039,\u2265|\u2264,\u00BB|\u00AB", + /* 57 */ null, + /* 58 */ null, // U+06F1: "۱" EXTENDED ARABIC-INDIC DIGIT ONE - /* 53 */ "\u06F1", + /* 59 */ "\u06F1", // U+06F2: "۲" EXTENDED ARABIC-INDIC DIGIT TWO - /* 54 */ "\u06F2", + /* 60 */ "\u06F2", // U+06F3: "۳" EXTENDED ARABIC-INDIC DIGIT THREE - /* 55 */ "\u06F3", + /* 61 */ "\u06F3", // U+06F4: "۴" EXTENDED ARABIC-INDIC DIGIT FOUR - /* 56 */ "\u06F4", + /* 62 */ "\u06F4", // U+06F5: "۵" EXTENDED ARABIC-INDIC DIGIT FIVE - /* 57 */ "\u06F5", + /* 63 */ "\u06F5", // U+06F6: "۶" EXTENDED ARABIC-INDIC DIGIT SIX - /* 58 */ "\u06F6", + /* 64 */ "\u06F6", // U+06F7: "۷" EXTENDED ARABIC-INDIC DIGIT SEVEN - /* 59 */ "\u06F7", + /* 65 */ "\u06F7", // U+06F8: "۸" EXTENDED ARABIC-INDIC DIGIT EIGHT - /* 60 */ "\u06F8", + /* 66 */ "\u06F8", // U+06F9: "۹" EXTENDED ARABIC-INDIC DIGIT NINE - /* 61 */ "\u06F9", + /* 67 */ "\u06F9", // U+06F0: "۰" EXTENDED ARABIC-INDIC DIGIT ZERO - /* 62 */ "\u06F0", - /* 63 */ "1", - /* 64 */ "2", - /* 65 */ "3", - /* 66 */ "4", - /* 67 */ "5", - /* 68 */ "6", - /* 69 */ "7", - /* 70 */ "8", - /* 71 */ "9", + /* 68 */ "\u06F0", + /* 69 */ "1", + /* 70 */ "2", + /* 71 */ "3", + /* 72 */ "4", + /* 73 */ "5", + /* 74 */ "6", + /* 75 */ "7", + /* 76 */ "8", + /* 77 */ "9", // U+066B: "٫" ARABIC DECIMAL SEPARATOR // U+066C: "٬" ARABIC THOUSANDS SEPARATOR - /* 72 */ "0,\u066B,\u066C", - /* 73~ */ - null, null, null, null, null, null, null, null, null, null, null, null, - /* ~84 */ + /* 78 */ "0,\u066B,\u066C", + /* 79~ */ + null, null, null, null, null, null, null, null, null, null, + /* ~88 */ // U+060C: "،" ARABIC COMMA - /* 85 */ "\u060C", - /* 86 */ "\\,", - /* 87 */ null, - /* 88 */ null, - /* 89 */ "\u061F", - /* 90 */ "\u061B", + /* 89 */ "\u060C", + /* 90 */ "\\,", + /* 91 */ "\u061F", + /* 92 */ "\u061B", // U+066A: "٪" ARABIC PERCENT SIGN - /* 91 */ "\u066A", - /* 92 */ "?", - /* 93 */ ";", + /* 93 */ "\u066A", + /* 94 */ "?", + /* 95 */ ";", // U+2030: "‰" PER MILLE SIGN - /* 94 */ "%,\u2030", + /* 96 */ "%,\u2030", // U+060C: "،" ARABIC COMMA // U+061B: "؛" ARABIC SEMICOLON // U+061F: "؟" ARABIC QUESTION MARK - /* 95 */ "\u060C", - /* 96 */ "!", - /* 97 */ "!,\\,", - /* 98 */ "\u061F", - /* 99 */ "\u061F,?", - /* 100~ */ + /* 97 */ "\u060C", + /* 98 */ "!", + /* 99 */ "!,\\,", + /* 100 */ "\u061F", + /* 101 */ "\u061F,?", + /* 102~ */ null, null, null, - /* ~102 */ - /* 103 */ "\u064B", - /* 104 */ "\u061F,\u061B,!,:,-,/,\',\"", + /* ~104 */ + /* 105 */ "\u064B", + /* 106 */ "\u061F,\u061B,!,:,-,/,\',\"", // U+0651: "ّ" ARABIC SHADDA // U+0652: "ْ" ARABIC SUKUN // U+064C: "ٌ" ARABIC DAMMATAN // U+0653: "ٓ" ARABIC MADDAH ABOVE - // U+064F: "ُ" ARABIC DAMMA U+0650: "ِ" ARABIC KASRA + // U+064F: "ُ" ARABIC DAMMA + // U+0650: "ِ" ARABIC KASRA // U+064E: "َ" ARABIC FATHA // U+064B: "ً" ARABIC FATHATAN // U+0640: "ـ" ARABIC TATWEEL - // U+064D: "ٍ" ARABIC KASRATAN U+0670: "ٰ" ARABIC LETTER SUPERSCRIPT ALEF + // U+064D: "ٍ" ARABIC KASRATAN + // U+0670: "ٰ" ARABIC LETTER SUPERSCRIPT ALEF // U+0656: "ٖ" ARABIC SUBSCRIPT ALEF // U+0654: "ٔ" ARABIC HAMZA ABOVE - // U+0655: "ٕ" ARABIC HAMZA BELOW In order to make Tatweel easily distinguishable from other punctuations, we use consecutive Tatweels only for its displayed label. - /* 105 */ "\u0651,\u0652,\u064C,\u0653,\u064F,\u0650,\u064E,\u064B,\u0640\u0640\u0640|\u0640,\u064D,\u0654,\u0656,\u0655,_,\u0670", + // U+0655: "ٕ" ARABIC HAMZA BELOW + // In order to make Tatweel easily distinguishable from other punctuations, we use consecutive Tatweels only for its displayed label. + /* 107 */ "\u0651,\u0652,\u064C,\u0653,\u064F,\u0650,\u064E,\u064B,\u0640\u0640\u0640|\u0640,\u064D,\u0654,\u0656,\u0655,_,\u0670", // U+266A: "♪" EIGHTH NOTE - /* 106 */ "\u266A", - // U+2605: "★" BLACK STAR - // U+066D: "٭" ARABIC FIVE POINTED STAR - /* 107 */ "\u2605,\u066D", - /* 108 */ 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 TODO: DroidSansArabic lacks the glyph of U+FD3E ORNATE LEFT PARENTHESIS TODO: DroidSansArabic lacks the glyph of U+FD3F ORNATE RIGHT PARENTHESIS - /* 109 */ "!fixedColumnOrder!4,\uFD3E|\uFD3F,<|>,{|},[|]", - /* 110 */ "!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 - // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK - // U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK - // U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK - // The following characters don't need BIDI mirroring. - // U+2018: "‘" LEFT SINGLE QUOTATION MARK - // U+2019: "’" RIGHT SINGLE QUOTATION MARK - // U+201A: "‚" SINGLE LOW-9 QUOTATION MARK - // U+201B: "‛" SINGLE HIGH-REVERSED-9 QUOTATION MARK - // U+201C: "“" LEFT DOUBLE QUOTATION MARK - // U+201D: "”" RIGHT DOUBLE QUOTATION MARK - // U+201E: "„" DOUBLE LOW-9 QUOTATION MARK - // U+201F: "‟" DOUBLE HIGH-REVERSED-9 QUOTATION MARK - /* 111 */ "!fixedColumnOrder!3,\u2039|\u203A,\u2264|\u2265,\u00AB|\u00BB", - /* 112 */ "!fixedColumnOrder!3,\u203A|\u2039,\u2265|\u2264,\u00BB|\u00AB", + /* 108 */ "\u266A", }; /* Language fi: Finnish */ @@ -1190,38 +1223,38 @@ public final class KeyboardLabelsSet { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, - /* ~52 */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, + /* ~58 */ // U+0967: "१" DEVANAGARI DIGIT ONE - /* 53 */ "\u0967", + /* 59 */ "\u0967", // U+0968: "२" DEVANAGARI DIGIT TWO - /* 54 */ "\u0968", + /* 60 */ "\u0968", // U+0969: "३" DEVANAGARI DIGIT THREE - /* 55 */ "\u0969", + /* 61 */ "\u0969", // U+096A: "४" DEVANAGARI DIGIT FOUR - /* 56 */ "\u096A", + /* 62 */ "\u096A", // U+096B: "५" DEVANAGARI DIGIT FIVE - /* 57 */ "\u096B", + /* 63 */ "\u096B", // U+096C: "६" DEVANAGARI DIGIT SIX - /* 58 */ "\u096C", + /* 64 */ "\u096C", // U+096D: "७" DEVANAGARI DIGIT SEVEN - /* 59 */ "\u096D", + /* 65 */ "\u096D", // U+096E: "८" DEVANAGARI DIGIT EIGHT - /* 60 */ "\u096E", + /* 66 */ "\u096E", // U+096F: "९" DEVANAGARI DIGIT NINE - /* 61 */ "\u096F", + /* 67 */ "\u096F", // U+0966: "०" DEVANAGARI DIGIT ZERO - /* 62 */ "\u0966", - /* 63 */ "1", - /* 64 */ "2", - /* 65 */ "3", - /* 66 */ "4", - /* 67 */ "5", - /* 68 */ "6", - /* 69 */ "7", - /* 70 */ "8", - /* 71 */ "9", - /* 72 */ "0", + /* 68 */ "\u0966", + /* 69 */ "1", + /* 70 */ "2", + /* 71 */ "3", + /* 72 */ "4", + /* 73 */ "5", + /* 74 */ "6", + /* 75 */ "7", + /* 76 */ "8", + /* 77 */ "9", + /* 78 */ "0", }; /* Language hr: Croatian */ @@ -1411,26 +1444,24 @@ public final class KeyboardLabelsSet { null, null, null, 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 */ - // 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> + // 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> /* 42 */ "!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> + // 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> /* 43 */ "!fixedColumnOrder!4,\u201C,\u201D,\u00AB|\u00BB,\u00BB|\u00AB,\u2018,\u2019,\u201A,\u201B", /* 44~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, - /* ~106 */ + null, null, null, null, null, null, null, + /* ~50 */ // U+2605: "★" BLACK STAR - /* 107 */ "\u2605", + /* 51 */ "\u2605", // U+00B1: "±" PLUS-MINUS SIGN // U+FB29: "﬩" HEBREW LETTER ALTERNATIVE PLUS SIGN - /* 108 */ "\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 - /* 109 */ "!fixedColumnOrder!3,<|>,{|},[|]", - /* 110 */ "!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 @@ -1446,8 +1477,8 @@ public final class KeyboardLabelsSet { // U+201D: "”" RIGHT DOUBLE QUOTATION MARK // U+201E: "„" DOUBLE LOW-9 QUOTATION MARK // U+201F: "‟" DOUBLE HIGH-REVERSED-9 QUOTATION MARK - /* 111 */ "!fixedColumnOrder!3,\u2039|\u203A,\u2264|\u2265,\u00AB|\u00BB", - /* 112 */ "!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 ky: Kirghiz */ @@ -1682,9 +1713,12 @@ public final class KeyboardLabelsSet { // U+201C: "“" LEFT DOUBLE QUOTATION MARK // U+201D: "”" RIGHT DOUBLE QUOTATION MARK // U+201E: "„" DOUBLE LOW-9 QUOTATION MARK - // 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> + // 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> /* 42 */ "!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> + // 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> /* 43 */ "!fixedColumnOrder!5,\u201E,\u201C,\u201D,\u00AB,\u00BB,\u2018,\u2019,\u201A,\u201B", }; @@ -2100,9 +2134,12 @@ public final class KeyboardLabelsSet { // U+201C: "“" LEFT DOUBLE QUOTATION MARK // U+201D: "”" RIGHT DOUBLE QUOTATION MARK // U+201E: "„" DOUBLE LOW-9 QUOTATION MARK - // 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> + // 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> /* 42 */ "!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> + // 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> /* 43 */ "!fixedColumnOrder!5,\u201E,\u201C,\u201D,\u00AB,\u00BB,\u2018,\u2019,\u201A,\u201B", }; @@ -2421,7 +2458,7 @@ public final class KeyboardLabelsSet { /* 19 */ "\u0175", }; - private static final Object[] LANGUAGES_AND_LABELS = { + private static final Object[] LANGUAGES_AND_TEXTS = { "DEFAULT", LANGUAGE_DEFAULT, /* default */ "ar", LANGUAGE_ar, /* Arabic */ "be", LANGUAGE_be, /* Belarusian */ @@ -2465,13 +2502,13 @@ public final class KeyboardLabelsSet { static { int id = 0; for (final String name : NAMES) { - sNameToIdMap.put(name, id++); + sLowerCaseNameToIdsMap.put(name, id++); } - for (int i = 0; i < LANGUAGES_AND_LABELS.length; i += 2) { - final String language = (String)LANGUAGES_AND_LABELS[i]; - final String[] labels = (String[])LANGUAGES_AND_LABELS[i + 1]; - sLocaleToLabelsMap.put(language, labels); + for (int i = 0; i < LANGUAGES_AND_TEXTS.length; i += 2) { + final String language = (String)LANGUAGES_AND_TEXTS[i]; + final String[] texts = (String[])LANGUAGES_AND_TEXTS[i + 1]; + sLocaleToTextsMap.put(language, texts); } } } diff --git a/java/src/com/android/inputmethod/latin/AdditionalSubtype.java b/java/src/com/android/inputmethod/latin/AdditionalSubtype.java index 28cec56e6..458d9ee14 100644 --- a/java/src/com/android/inputmethod/latin/AdditionalSubtype.java +++ b/java/src/com/android/inputmethod/latin/AdditionalSubtype.java @@ -22,27 +22,8 @@ import static com.android.inputmethod.latin.Constants.Subtype.ExtraValue.KEYBOAR import android.view.inputmethod.InputMethodSubtype; -import java.util.HashMap; public class AdditionalSubtype { - public static final String QWERTY = "qwerty"; - public static final String QWERTZ = "qwertz"; - public static final String AZERTY = "azerty"; - public static final String[] PREDEFINED_KEYBOARD_LAYOUT_SET = { - QWERTY, - QWERTZ, - AZERTY - }; - - // Keyboard layout to subtype name resource id map. - private static final HashMap<String, Integer> sKeyboardLayoutToNameIdsMap = - new HashMap<String, Integer>(); - - static { - sKeyboardLayoutToNameIdsMap.put(QWERTY, R.string.subtype_generic_qwerty); - sKeyboardLayoutToNameIdsMap.put(QWERTZ, R.string.subtype_generic_qwertz); - sKeyboardLayoutToNameIdsMap.put(AZERTY, R.string.subtype_generic_azerty); - } private AdditionalSubtype() { // This utility class is not publicly instantiable. @@ -60,7 +41,8 @@ public class AdditionalSubtype { final String layoutExtraValue = KEYBOARD_LAYOUT_SET + "=" + keyboardLayoutSetName; final String filteredExtraValue = StringUtils.appendToCsvIfNotExists( IS_ADDITIONAL_SUBTYPE, extraValue); - Integer nameId = sKeyboardLayoutToNameIdsMap.get(keyboardLayoutSetName); + Integer nameId = SubtypeLocale.getSubtypeNameIdFromKeyboardLayoutName( + keyboardLayoutSetName); if (nameId == null) nameId = R.string.subtype_generic; return new InputMethodSubtype(nameId, R.drawable.ic_subtype_keyboard, localeString, KEYBOARD_MODE, diff --git a/java/src/com/android/inputmethod/latin/AdditionalSubtypeSettings.java b/java/src/com/android/inputmethod/latin/AdditionalSubtypeSettings.java index 7a22c9742..613c20304 100644 --- a/java/src/com/android/inputmethod/latin/AdditionalSubtypeSettings.java +++ b/java/src/com/android/inputmethod/latin/AdditionalSubtypeSettings.java @@ -109,18 +109,15 @@ public class AdditionalSubtypeSettings extends PreferenceFragment { } static class KeyboardLayoutSetItem extends Pair<String, String> { - public KeyboardLayoutSetItem(String keyboardLayoutSetName) { - super(keyboardLayoutSetName, getDisplayName(keyboardLayoutSetName)); + public KeyboardLayoutSetItem(InputMethodSubtype subtype) { + super(SubtypeLocale.getKeyboardLayoutSetName(subtype), + SubtypeLocale.getKeyboardLayoutSetDisplayName(subtype)); } @Override public String toString() { return second; } - - private static String getDisplayName(String keyboardLayoutSetName) { - return keyboardLayoutSetName.toUpperCase(); - } } static class KeyboardLayoutSetAdapter extends ArrayAdapter<KeyboardLayoutSetItem> { @@ -129,8 +126,11 @@ public class AdditionalSubtypeSettings extends PreferenceFragment { setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // TODO: Should filter out already existing combinations of locale and layout. - for (final String layout : AdditionalSubtype.PREDEFINED_KEYBOARD_LAYOUT_SET) { - add(new KeyboardLayoutSetItem(layout)); + for (final String layout : SubtypeLocale.getPredefinedKeyboardLayoutSet()) { + // This is a dummy subtype with NO_LANGUAGE, only for display. + final InputMethodSubtype subtype = AdditionalSubtype.createAdditionalSubtype( + SubtypeLocale.NO_LANGUAGE, layout, null); + add(new KeyboardLayoutSetItem(subtype)); } } } @@ -196,8 +196,7 @@ public class AdditionalSubtypeSettings extends PreferenceFragment { .setNegativeButton(R.string.remove, this); final SubtypeLocaleItem localeItem = SubtypeLocaleAdapter.createItem( context, mSubtype.getLocale()); - final KeyboardLayoutSetItem layoutItem = new KeyboardLayoutSetItem( - SubtypeLocale.getKeyboardLayoutSetName(mSubtype)); + final KeyboardLayoutSetItem layoutItem = new KeyboardLayoutSetItem(mSubtype); setSpinnerPosition(mSubtypeLocaleSpinner, localeItem); setSpinnerPosition(mKeyboardLayoutSetSpinner, layoutItem); } diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java b/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java index e4d081b56..a4670daf2 100644 --- a/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java +++ b/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java @@ -49,7 +49,10 @@ public class BinaryDictionaryFileDumper { */ private static final int FILE_READ_BUFFER_SIZE = 1024; // TODO: make the following data common with the native code - private static final byte[] MAGIC_NUMBER = new byte[] { 0x78, (byte)0xB1 }; + private static final byte[] MAGIC_NUMBER_VERSION_1 = + new byte[] { (byte)0x78, (byte)0xB1, (byte)0x00, (byte)0x00 }; + private static final byte[] MAGIC_NUMBER_VERSION_2 = + new byte[] { (byte)0x9B, (byte)0xC1, (byte)0x3A, (byte)0xFE }; private static final String DICTIONARY_PROJECTION[] = { "id" }; @@ -268,15 +271,18 @@ public class BinaryDictionaryFileDumper { private static void checkMagicAndCopyFileTo(final BufferedInputStream input, final FileOutputStream output) throws FileNotFoundException, IOException { // Check the magic number - final byte[] magicNumberBuffer = new byte[MAGIC_NUMBER.length]; - final int readMagicNumberSize = input.read(magicNumberBuffer, 0, MAGIC_NUMBER.length); - if (readMagicNumberSize < MAGIC_NUMBER.length) { + final int length = MAGIC_NUMBER_VERSION_2.length; + final byte[] magicNumberBuffer = new byte[length]; + final int readMagicNumberSize = input.read(magicNumberBuffer, 0, length); + if (readMagicNumberSize < length) { throw new IOException("Less bytes to read than the magic number length"); } - if (!Arrays.equals(MAGIC_NUMBER, magicNumberBuffer)) { - throw new IOException("Wrong magic number for downloaded file"); + if (!Arrays.equals(MAGIC_NUMBER_VERSION_2, magicNumberBuffer)) { + if (!Arrays.equals(MAGIC_NUMBER_VERSION_1, magicNumberBuffer)) { + throw new IOException("Wrong magic number for downloaded file"); + } } - output.write(MAGIC_NUMBER); + output.write(magicNumberBuffer); // Actually copy the file final byte[] buffer = new byte[FILE_READ_BUFFER_SIZE]; diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java b/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java index 072dec9d1..5acd62904 100644 --- a/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java +++ b/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java @@ -24,6 +24,7 @@ import android.util.Log; import java.io.File; import java.util.ArrayList; +import java.util.HashMap; import java.util.Locale; /** @@ -46,6 +47,10 @@ class BinaryDictionaryGetter { */ private static final String COMMON_PREFERENCES_NAME = "LatinImeDictPrefs"; + // Name of the category for the main dictionary + private static final String MAIN_DICTIONARY_CATEGORY = "main"; + public static final String ID_CATEGORY_SEPARATOR = ":"; + // Prevents this from being instantiated private BinaryDictionaryGetter() {} @@ -206,7 +211,40 @@ class BinaryDictionaryGetter { } /** - * Returns the list of cached files for a specific locale. + * Returns the category for a given file name. + * + * This parses the file name, extracts the category, and returns it. See + * {@link #getMainDictId(Locale)} and {@link #isMainWordListId(String)}. + * @return The category as a string or null if it can't be found in the file name. + */ + private static String getCategoryFromFileName(final String fileName) { + final String id = getWordListIdFromFileName(fileName); + final String[] idArray = id.split(ID_CATEGORY_SEPARATOR); + if (2 != idArray.length) return null; + return idArray[0]; + } + + /** + * Utility class for the {@link #getCachedWordLists} method + */ + private static class FileAndMatchLevel { + final File mFile; + final int mMatchLevel; + public FileAndMatchLevel(final File file, final int matchLevel) { + mFile = file; + mMatchLevel = matchLevel; + } + } + + /** + * Returns the list of cached files for a specific locale, one for each category. + * + * This will return exactly one file for each word list category that matches + * the passed locale. If several files match the locale for any given category, + * this returns the file with the closest match to the locale. For example, if + * the passed word list is en_US, and for a category we have an en and an en_US + * word list available, we'll return only the en_US one. + * Thus, the list will contain as many files as there are categories. * * @param locale the locale to find the dictionary files for, as a string. * @param context the context on which to open the files upon. @@ -216,21 +254,32 @@ class BinaryDictionaryGetter { final Context context) { final File[] directoryList = getCachedDirectoryList(context); if (null == directoryList) return EMPTY_FILE_ARRAY; - final ArrayList<File> cacheFiles = new ArrayList<File>(); + final HashMap<String, FileAndMatchLevel> cacheFiles = + new HashMap<String, FileAndMatchLevel>(); for (File directory : directoryList) { if (!directory.isDirectory()) continue; final String dirLocale = getWordListIdFromFileName(directory.getName()); - if (LocaleUtils.isMatch(LocaleUtils.getMatchLevel(dirLocale, locale))) { + final int matchLevel = LocaleUtils.getMatchLevel(dirLocale, locale); + if (LocaleUtils.isMatch(matchLevel)) { final File[] wordLists = directory.listFiles(); if (null != wordLists) { for (File wordList : wordLists) { - cacheFiles.add(wordList); + final String category = getCategoryFromFileName(wordList.getName()); + final FileAndMatchLevel currentBestMatch = cacheFiles.get(category); + if (null == currentBestMatch || currentBestMatch.mMatchLevel < matchLevel) { + cacheFiles.put(category, new FileAndMatchLevel(wordList, matchLevel)); + } } } } } if (cacheFiles.isEmpty()) return EMPTY_FILE_ARRAY; - return cacheFiles.toArray(EMPTY_FILE_ARRAY); + final File[] result = new File[cacheFiles.size()]; + int index = 0; + for (final FileAndMatchLevel entry : cacheFiles.values()) { + result[index++] = entry.mFile; + } + return result; } /** @@ -245,7 +294,13 @@ class BinaryDictionaryGetter { // This works because we don't include by default different dictionaries for // different countries. This actually needs to return the id that we would // like to use for word lists included in resources, and the following is okay. - return locale.getLanguage().toString(); + return MAIN_DICTIONARY_CATEGORY + ID_CATEGORY_SEPARATOR + locale.getLanguage().toString(); + } + + private static boolean isMainWordListId(final String id) { + final String[] idArray = id.split(ID_CATEGORY_SEPARATOR); + if (2 != idArray.length) return false; + return MAIN_DICTIONARY_CATEGORY.equals(idArray[0]); } /** @@ -270,9 +325,7 @@ class BinaryDictionaryGetter { BinaryDictionaryFileDumper.cacheWordListsFromContentProvider(locale, context, hasDefaultWordList); final File[] cachedWordLists = getCachedWordLists(locale.toString(), context); - final String mainDictId = getMainDictId(locale); - final DictPackSettings dictPackSettings = new DictPackSettings(context); boolean foundMainDict = false; @@ -280,7 +333,7 @@ class BinaryDictionaryGetter { // cachedWordLists may not be null, see doc for getCachedDictionaryList for (final File f : cachedWordLists) { final String wordListId = getWordListIdFromFileName(f.getName()); - if (wordListId.equals(mainDictId)) { + if (isMainWordListId(wordListId)) { foundMainDict = true; } if (!dictPackSettings.isWordListActive(wordListId)) continue; diff --git a/java/src/com/android/inputmethod/latin/EditingUtils.java b/java/src/com/android/inputmethod/latin/EditingUtils.java index b3f613bae..7d673175e 100644 --- a/java/src/com/android/inputmethod/latin/EditingUtils.java +++ b/java/src/com/android/inputmethod/latin/EditingUtils.java @@ -16,7 +16,6 @@ package com.android.inputmethod.latin; -import android.text.TextUtils; import android.view.inputmethod.ExtractedText; import android.view.inputmethod.ExtractedTextRequest; import android.view.inputmethod.InputConnection; @@ -37,30 +36,6 @@ public class EditingUtils { // Unintentional empty constructor for singleton. } - /** - * Append newText to the text field represented by connection. - * The new text becomes selected. - */ - public static void appendText(InputConnection connection, String newText) { - if (connection == null) { - return; - } - - // Commit the composing text - connection.finishComposingText(); - - // Add a space if the field already has text. - String text = newText; - CharSequence charBeforeCursor = connection.getTextBeforeCursor(1, 0); - if (charBeforeCursor != null - && !charBeforeCursor.equals(" ") - && (charBeforeCursor.length() > 0)) { - text = " " + text; - } - - connection.setComposingText(text, 1); - } - private static int getCursorPosition(InputConnection connection) { if (null == connection) return INVALID_CURSOR_POSITION; ExtractedText extracted = connection.getExtractedText( @@ -146,7 +121,6 @@ public class EditingUtils { private static final Pattern spaceRegex = Pattern.compile("\\s+"); - public static CharSequence getPreviousWord(InputConnection connection, String sentenceSeperators) { //TODO: Should fix this. This could be slow! @@ -205,77 +179,4 @@ public class EditingUtils { return w[w.length - 1]; } - - public static class SelectedWord { - public final int mStart; - public final int mEnd; - public final CharSequence mWord; - - public SelectedWord(int start, int end, CharSequence word) { - mStart = start; - mEnd = end; - mWord = word; - } - } - - /** - * Takes a character sequence with a single character and checks if the character occurs - * in a list of word separators or is empty. - * @param singleChar A CharSequence with null, zero or one character - * @param wordSeparators A String containing the word separators - * @return true if the character is at a word boundary, false otherwise - */ - private static boolean isWordBoundary(CharSequence singleChar, String wordSeparators) { - return TextUtils.isEmpty(singleChar) || wordSeparators.contains(singleChar); - } - - /** - * Checks if the cursor is inside a word or the current selection is a whole word. - * @param ic the InputConnection for accessing the text field - * @param selStart the start position of the selection within the text field - * @param selEnd the end position of the selection within the text field. This could be - * the same as selStart, if there's no selection. - * @param wordSeparators the word separator characters for the current language - * @return an object containing the text and coordinates of the selected/touching word, - * null if the selection/cursor is not marking a whole word. - */ - public static SelectedWord getWordAtCursorOrSelection(final InputConnection ic, - int selStart, int selEnd, String wordSeparators) { - if (selStart == selEnd) { - // There is just a cursor, so get the word at the cursor - // getWordRangeAtCursor returns null if the connection is null - final EditingUtils.Range range = getWordRangeAtCursor(ic, wordSeparators); - if (range != null && !TextUtils.isEmpty(range.mWord)) { - return new SelectedWord(selStart - range.mCharsBefore, selEnd + range.mCharsAfter, - range.mWord); - } - } else { - if (null == ic) return null; - // Is the previous character empty or a word separator? If not, return null. - final CharSequence charsBefore = ic.getTextBeforeCursor(1, 0); - if (!isWordBoundary(charsBefore, wordSeparators)) { - return null; - } - - // Is the next character empty or a word separator? If not, return null. - final CharSequence charsAfter = ic.getTextAfterCursor(1, 0); - if (!isWordBoundary(charsAfter, wordSeparators)) { - return null; - } - - // Extract the selection alone - final CharSequence touching = ic.getSelectedText(0); - if (TextUtils.isEmpty(touching)) return null; - // Is any part of the selection a separator? If so, return null. - final int length = touching.length(); - for (int i = 0; i < length; i++) { - if (wordSeparators.contains(touching.subSequence(i, i + 1))) { - return null; - } - } - // Prepare the selected word - return new SelectedWord(selStart, selEnd, touching); - } - return null; - } } diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java index 31c832c31..e1978fca1 100644 --- a/java/src/com/android/inputmethod/latin/LatinIME.java +++ b/java/src/com/android/inputmethod/latin/LatinIME.java @@ -154,6 +154,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen private final SubtypeSwitcher mSubtypeSwitcher; private boolean mShouldSwitchToLastSubtype = true; + private boolean mIsMainDictionaryAvailable; private UserDictionary mUserDictionary; private UserHistoryDictionary mUserHistoryDictionary; private boolean mIsUserDictionaryAvailable; @@ -449,14 +450,14 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen return new SettingsValues(mPrefs, LatinIME.this); } }; - mSettingsValues = job.runInLocale(mResources, mSubtypeSwitcher.getInputLocale()); + mSettingsValues = job.runInLocale(mResources, mSubtypeSwitcher.getCurrentSubtypeLocale()); mFeedbackManager = new AudioAndHapticFeedbackManager(this, mSettingsValues); resetContactsDictionary(null == mSuggest ? null : mSuggest.getContactsDictionary()); } private void initSuggest() { - final String localeStr = mSubtypeSwitcher.getInputLocaleStr(); - final Locale keyboardLocale = mSubtypeSwitcher.getInputLocale(); + final Locale subtypeLocale = mSubtypeSwitcher.getCurrentSubtypeLocale(); + final String localeStr = subtypeLocale.toString(); final Dictionary oldContactsDictionary; if (mSuggest != null) { @@ -465,11 +466,13 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen } else { oldContactsDictionary = null; } - mSuggest = new Suggest(this, keyboardLocale); + mSuggest = new Suggest(this, subtypeLocale); if (mSettingsValues.mAutoCorrectEnabled) { mSuggest.setAutoCorrectionThreshold(mSettingsValues.mAutoCorrectionThreshold); } + mIsMainDictionaryAvailable = DictionaryFactory.isDictionaryAvailable(this, subtypeLocale); + mUserDictionary = new UserDictionary(this, localeStr); mSuggest.setUserDictionary(mUserDictionary); mIsUserDictionaryAvailable = mUserDictionary.isEnabled(); @@ -511,7 +514,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen } else { if (USE_BINARY_CONTACTS_DICTIONARY) { dictionaryToUse = new ContactsBinaryDictionary(this, Suggest.DIC_CONTACTS, - mSubtypeSwitcher.getInputLocale()); + mSubtypeSwitcher.getCurrentSubtypeLocale()); } else { dictionaryToUse = new ContactsDictionary(this, Suggest.DIC_CONTACTS); } @@ -523,7 +526,9 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen } /* package private */ void resetSuggestMainDict() { - mSuggest.resetMainDict(this, mSubtypeSwitcher.getInputLocale()); + final Locale subtypeLocale = mSubtypeSwitcher.getCurrentSubtypeLocale(); + mSuggest.resetMainDict(this, subtypeLocale); + mIsMainDictionaryAvailable = DictionaryFactory.isDictionaryAvailable(this, subtypeLocale); } @Override @@ -603,7 +608,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen @Override public void onCurrentInputMethodSubtypeChanged(InputMethodSubtype subtype) { - SubtypeSwitcher.getInstance().updateSubtype(subtype); + mSubtypeSwitcher.updateSubtype(subtype); } private void onStartInputInternal(EditorInfo editorInfo, boolean restarting) { @@ -629,7 +634,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen editorInfo.inputType, editorInfo.imeOptions)); } if (ProductionFlag.IS_EXPERIMENTAL) { - ResearchLogger.latinIME_onStartInputViewInternal(editorInfo); + ResearchLogger.latinIME_onStartInputViewInternal(editorInfo, mPrefs); } if (InputAttributes.inPrivateImeOptions(null, NO_MICROPHONE_COMPAT, editorInfo)) { Log.w(TAG, "Deprecated private IME option specified: " @@ -1843,6 +1848,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen mExpectingUpdateSelection = true; commitChosenWord(suggestion, LastComposedWord.COMMIT_TYPE_MANUAL_PICK, LastComposedWord.NOT_A_SEPARATOR); + // Don't allow cancellation of manual pick + mLastComposedWord.deactivate(); // Add the word to the user history dictionary addToUserHistoryDictionary(suggestion); mSpaceState = SPACE_STATE_PHANTOM; @@ -1894,7 +1901,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen if (mSettingsValues.mEnableSuggestionSpanInsertion) { final SuggestedWords suggestedWords = mSuggestionsView.getSuggestions(); ic.commitText(SuggestionSpanUtils.getTextWithSuggestionSpan( - this, bestWord, suggestedWords, mSubtypeSwitcher.isDictionaryAvailable()), + this, bestWord, suggestedWords, mIsMainDictionaryAvailable), 1); if (ProductionFlag.IS_EXPERIMENTAL) { ResearchLogger.latinIME_commitText(bestWord); @@ -1972,7 +1979,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen } final String secondWord; if (mWordComposer.isAutoCapitalized() && !mWordComposer.isMostlyCaps()) { - secondWord = suggestion.toString().toLowerCase(mSubtypeSwitcher.getInputLocale()); + secondWord = suggestion.toString().toLowerCase( + mSubtypeSwitcher.getCurrentSubtypeLocale()); } else { secondWord = suggestion.toString(); } @@ -2300,8 +2308,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen } private void showOptionDialogInternal(AlertDialog dialog) { - final IBinder windowToken = KeyboardSwitcher.getInstance().getKeyboardView() - .getWindowToken(); + final IBinder windowToken = mKeyboardSwitcher.getKeyboardView().getWindowToken(); if (windowToken == null) return; dialog.setCancelable(true); diff --git a/java/src/com/android/inputmethod/latin/ResearchLogger.java b/java/src/com/android/inputmethod/latin/ResearchLogger.java index 7072dda23..566af7061 100644 --- a/java/src/com/android/inputmethod/latin/ResearchLogger.java +++ b/java/src/com/android/inputmethod/latin/ResearchLogger.java @@ -18,10 +18,12 @@ package com.android.inputmethod.latin; import android.content.SharedPreferences; import android.inputmethodservice.InputMethodService; +import android.os.Build; import android.os.Handler; import android.os.HandlerThread; import android.os.Process; import android.os.SystemClock; +import android.preference.PreferenceManager; import android.text.TextUtils; import android.util.Log; import android.view.MotionEvent; @@ -31,7 +33,6 @@ import android.view.inputmethod.EditorInfo; import com.android.inputmethod.keyboard.Key; import com.android.inputmethod.keyboard.KeyDetector; import com.android.inputmethod.keyboard.Keyboard; -import com.android.inputmethod.keyboard.internal.AlphabetShiftState; import com.android.inputmethod.keyboard.internal.KeyboardState; import com.android.inputmethod.latin.define.ProductionFlag; @@ -45,6 +46,7 @@ import java.nio.ByteBuffer; import java.nio.CharBuffer; import java.nio.channels.FileChannel; import java.nio.charset.Charset; +import java.util.Map; /** * Logs the use of the LatinIME keyboard. @@ -68,7 +70,7 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang * Isolates management of files. This variable should never be null, but can be changed * to support testing. */ - private LogFileManager mLogFileManager; + /* package */ LogFileManager mLogFileManager; /** * Manages the file(s) that stores the logs. @@ -93,63 +95,53 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang mIms = ims; } - public synchronized boolean createLogFile() { - try { - return createLogFile(DEFAULT_FILENAME); - } catch (IOException e) { - e.printStackTrace(); - Log.w(TAG, e); - return false; - } + public synchronized void createLogFile() throws IOException { + createLogFile(DEFAULT_FILENAME); } - public synchronized boolean createLogFile(final SharedPreferences prefs) { - try { - final String filename = - prefs.getString(RESEARCH_LOG_FILENAME_KEY, DEFAULT_FILENAME); - return createLogFile(filename); - } catch (IOException e) { - Log.w(TAG, e); - e.printStackTrace(); - } - return false; + public synchronized void createLogFile(final SharedPreferences prefs) + throws IOException { + final String filename = + prefs.getString(RESEARCH_LOG_FILENAME_KEY, DEFAULT_FILENAME); + createLogFile(filename); } - public synchronized boolean createLogFile(final String filename) + public synchronized void createLogFile(final String filename) throws IOException { if (mIms == null) { - Log.w(TAG, "InputMethodService is not configured. Logging is off."); - return false; + final String msg = "InputMethodService is not configured. Logging is off."; + Log.w(TAG, msg); + throw new IOException(msg); } final File filesDir = mIms.getFilesDir(); if (filesDir == null || !filesDir.exists()) { - Log.w(TAG, "Storage directory does not exist. Logging is off."); - return false; + final String msg = "Storage directory does not exist. Logging is off."; + Log.w(TAG, msg); + throw new IOException(msg); } close(); final File file = new File(filesDir, filename); mFile = file; - file.setReadable(false, false); boolean append = true; if (file.exists() && file.lastModified() + LOGFILE_PURGE_INTERVAL < System.currentTimeMillis()) { append = false; } mPrintWriter = new PrintWriter(new BufferedWriter(new FileWriter(file, append)), true); - return true; } public synchronized boolean append(final String s) { - final PrintWriter printWriter = mPrintWriter; - if (printWriter == null) { + PrintWriter printWriter = mPrintWriter; + if (printWriter == null || !mFile.exists()) { if (DEBUG) { Log.w(TAG, "PrintWriter is null... attempting to create default log file"); } - if (!createLogFile()) { - if (DEBUG) { - Log.w(TAG, "Failed to create log file. Not logging."); - return false; - } + try { + createLogFile(); + printWriter = mPrintWriter; + } catch (IOException e) { + Log.w(TAG, "Failed to create log file. Not logging."); + return false; } } printWriter.print(s); @@ -161,9 +153,15 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang if (mPrintWriter != null) { mPrintWriter.close(); mPrintWriter = null; + if (DEBUG) { + Log.d(TAG, "logfile closed"); + } } if (mFile != null) { mFile.delete(); + if (DEBUG) { + Log.d(TAG, "logfile deleted"); + } mFile = null; } } @@ -173,6 +171,9 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang mPrintWriter.close(); mPrintWriter = null; mFile = null; + if (DEBUG) { + Log.d(TAG, "logfile closed"); + } } } @@ -240,12 +241,16 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang sInstance.initInternal(ims, prefs); } - public void initInternal(final InputMethodService ims, final SharedPreferences prefs) { + /* package */ void initInternal(final InputMethodService ims, final SharedPreferences prefs) { mIms = ims; final LogFileManager logFileManager = mLogFileManager; if (logFileManager != null) { logFileManager.init(ims); - logFileManager.createLogFile(prefs); + try { + logFileManager.createLogFile(prefs); + } catch (IOException e) { + e.printStackTrace(); + } } if (prefs != null) { sIsLogging = prefs.getBoolean(PREF_USABILITY_STUDY_MODE, false); @@ -254,19 +259,6 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang } /** - * Change to a different logFileManager. - * - * @throws IllegalArgumentException if logFileManager is null - */ - void setLogFileManager(final LogFileManager manager) { - if (manager == null) { - throw new IllegalArgumentException("warning: trying to set null logFileManager"); - } else { - mLogFileManager = manager; - } - } - - /** * Represents a category of logging events that share the same subfield structure. */ private static enum LogGroup { @@ -334,26 +326,11 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang public static class UnsLogGroup { private static final boolean DEFAULT_ENABLED = true; - private static final boolean ALPHABETSHIFTSTATE_SETSHIFTED_ENABLED = DEFAULT_ENABLED; - private static final boolean ALPHABETSHIFTSTATE_SETSHIFTLOCKED_ENABLED = DEFAULT_ENABLED; - private static final boolean ALPHABETSHIFTSTATE_SETAUTOMATICSHIFTED_ENABLED - = DEFAULT_ENABLED; private static final boolean KEYBOARDSTATE_ONCANCELINPUT_ENABLED = DEFAULT_ENABLED; private static final boolean KEYBOARDSTATE_ONCODEINPUT_ENABLED = DEFAULT_ENABLED; private static final boolean KEYBOARDSTATE_ONLONGPRESSTIMEOUT_ENABLED = DEFAULT_ENABLED; private static final boolean KEYBOARDSTATE_ONPRESSKEY_ENABLED = DEFAULT_ENABLED; private static final boolean KEYBOARDSTATE_ONRELEASEKEY_ENABLED = DEFAULT_ENABLED; - private static final boolean KEYBOARDSTATE_ONRESTOREKEYBOARDSTATE_ENABLED = DEFAULT_ENABLED; - private static final boolean KEYBOARDSTATE_ONSAVEKEYBOARDSTATE_ENABLED = DEFAULT_ENABLED; - private static final boolean KEYBOARDSTATE_ONUPDATESHIFTSTATE_ENABLED = DEFAULT_ENABLED; - private static final boolean KEYBOARDSTATE_SETALPHABETKEYBOARD_ENABLED = DEFAULT_ENABLED; - private static final boolean KEYBOARDSTATE_SETSHIFTED_ENABLED = DEFAULT_ENABLED; - private static final boolean KEYBOARDSTATE_SETSHIFTLOCKED_ENABLED = DEFAULT_ENABLED; - private static final boolean KEYBOARDSTATE_SETSYMBOLSKEYBOARD_ENABLED = DEFAULT_ENABLED; - private static final boolean KEYBOARDSTATE_SETSYMBOLSSHIFTEDKEYBOARD_ENABLED - = DEFAULT_ENABLED; - private static final boolean KEYBOARDSTATE_TOGGLEALPHABETANDSYMBOLS_ENABLED - = DEFAULT_ENABLED; private static final boolean LATINIME_COMMITCURRENTAUTOCORRECTION_ENABLED = DEFAULT_ENABLED; private static final boolean LATINIME_COMMITTEXT_ENABLED = DEFAULT_ENABLED; private static final boolean LATINIME_DELETESURROUNDINGTEXT_ENABLED = DEFAULT_ENABLED; @@ -377,6 +354,7 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang private static final boolean LATINKEYBOARDVIEW_ONLONGPRESS_ENABLED = DEFAULT_ENABLED; private static final boolean LATINKEYBOARDVIEW_ONPROCESSMOTIONEVENT_ENABLED = DEFAULT_ENABLED; + private static final boolean LATINKEYBOARDVIEW_SETKEYBOARD_ENABLED = DEFAULT_ENABLED; private static final boolean POINTERTRACKER_CALLLISTENERONCANCELINPUT_ENABLED = DEFAULT_ENABLED; private static final boolean POINTERTRACKER_CALLLISTENERONCODEINPUT_ENABLED @@ -413,12 +391,21 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang if (DEBUG) { Log.d(TAG, "Write: " + '[' + logGroup.mLogString + ']' + log); } - if (mLogFileManager.append(builder.toString())) { + final String s = builder.toString(); + if (mLogFileManager.append(s)) { // success } else { if (DEBUG) { Log.w(TAG, "Unable to write to log."); } + // perhaps logfile was deleted. try to recreate and relog. + try { + mLogFileManager.createLogFile(PreferenceManager + .getDefaultSharedPreferences(mIms)); + mLogFileManager.append(s); + } catch (IOException e) { + e.printStackTrace(); + } } } }); @@ -448,32 +435,6 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang sIsLogging = prefs.getBoolean(PREF_USABILITY_STUDY_MODE, false); } - public static void alphabetShiftState_setShifted(final boolean newShiftState, - final int oldState, final AlphabetShiftState alphabetShiftState) { - if (UnsLogGroup.ALPHABETSHIFTSTATE_SETSHIFTED_ENABLED) { - final String s = "setShifted(" + newShiftState + "): " + oldState - + " > " + alphabetShiftState; - logUnstructured("AlphabetShiftState_setShifted", s); - } - } - - public static void alphabetShiftState_setShiftLocked(final boolean newShiftLockState, - final int oldState, final AlphabetShiftState alphabetShiftState) { - if (UnsLogGroup.ALPHABETSHIFTSTATE_SETSHIFTLOCKED_ENABLED) { - final String s = "setShiftLocked(" + newShiftLockState + "): " - + oldState + " > " + alphabetShiftState; - logUnstructured("AlphabetShiftState_setShiftLocked", s); - } - } - - public static void alphabetShiftState_setAutomaticShifted(final int oldState, - final AlphabetShiftState alphabetShiftState) { - if (UnsLogGroup.ALPHABETSHIFTSTATE_SETAUTOMATICSHIFTED_ENABLED) { - final String s = "setAutomaticShifted: " + oldState + " > " + alphabetShiftState; - logUnstructured("AlphabetShiftState_setAutomaticShifted", s); - } - } - public static void keyboardState_onCancelInput(final boolean isSinglePointer, final KeyboardState keyboardState) { if (UnsLogGroup.KEYBOARDSTATE_ONCANCELINPUT_ENABLED) { @@ -520,76 +481,6 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang } } - public static void keyboardState_onRestoreKeyboardState(final KeyboardState keyboardState, - final String savedKeyboardState) { - if (UnsLogGroup.KEYBOARDSTATE_ONRESTOREKEYBOARDSTATE_ENABLED) { - final String s = "onRestoreKeyboardState: saved=" + savedKeyboardState + " " - + keyboardState; - logUnstructured("KeyboardState_onRestoreKeyboardState", s); - } - } - - public static void keyboardState_onSaveKeyboardState(final KeyboardState keyboardState, - final String savedKeyboardState) { - if (UnsLogGroup.KEYBOARDSTATE_ONSAVEKEYBOARDSTATE_ENABLED) { - final String s = "onSaveKeyboardState: saved=" + savedKeyboardState + " " - + keyboardState; - logUnstructured("KeyboardState_onSaveKeyboardState", s); - } - } - - public static void keyboardState_onUpdateShiftState(final KeyboardState keyboardState, - final boolean autoCaps) { - if (UnsLogGroup.KEYBOARDSTATE_ONUPDATESHIFTSTATE_ENABLED) { - final String s = "onUpdateShiftState: autoCaps=" + autoCaps + " " + keyboardState; - logUnstructured("KeyboardState_onUpdateShiftState", s); - } - } - - public static void keyboardState_setAlphabetKeyboard() { - if (UnsLogGroup.KEYBOARDSTATE_SETALPHABETKEYBOARD_ENABLED) { - final String s = "setAlphabetKeyboard"; - logUnstructured("KeyboardState_setAlphabetKeyboard", s); - } - } - - public static void keyboardState_setShifted(final KeyboardState keyboardState, - final String shiftMode) { - if (UnsLogGroup.KEYBOARDSTATE_SETSHIFTED_ENABLED) { - final String s = "setShifted: shiftMode=" + shiftMode + " " + keyboardState; - logUnstructured("KeyboardState_setShifted", s); - } - } - - public static void keyboardState_setShiftLocked(final KeyboardState keyboardState, - final boolean shiftLocked) { - if (UnsLogGroup.KEYBOARDSTATE_SETSHIFTLOCKED_ENABLED) { - final String s = "setShiftLocked: shiftLocked=" + shiftLocked + " " + keyboardState; - logUnstructured("KeyboardState_setShiftLocked", s); - } - } - - public static void keyboardState_setSymbolsKeyboard() { - if (UnsLogGroup.KEYBOARDSTATE_SETSYMBOLSKEYBOARD_ENABLED) { - final String s = "setSymbolsKeyboard"; - logUnstructured("KeyboardState_setSymbolsKeyboard", s); - } - } - - public static void keyboardState_setSymbolsShiftedKeyboard() { - if (UnsLogGroup.KEYBOARDSTATE_SETSYMBOLSSHIFTEDKEYBOARD_ENABLED) { - final String s = "setSymbolsShiftedKeyboard"; - logUnstructured("KeyboardState_setSymbolsShiftedKeyboard", s); - } - } - - public static void keyboardState_toggleAlphabetAndSymbols(final KeyboardState keyboardState) { - if (UnsLogGroup.KEYBOARDSTATE_TOGGLEALPHABETANDSYMBOLS_ENABLED) { - final String s = "toggleAlphabetAndSymbols: " + keyboardState; - logUnstructured("KeyboardState_toggleAlphabetAndSymbols", s); - } - } - public static void latinIME_commitCurrentAutoCorrection(final String typedWord, final String autoCorrection) { if (UnsLogGroup.LATINIME_COMMITCURRENTAUTOCORRECTION_ENABLED) { @@ -637,14 +528,22 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang } } - public static void latinIME_onStartInputViewInternal(final EditorInfo editorInfo) { + public static void latinIME_onStartInputViewInternal(final EditorInfo editorInfo, + final SharedPreferences prefs) { if (UnsLogGroup.LATINIME_ONSTARTINPUTVIEWINTERNAL_ENABLED) { final StringBuilder builder = new StringBuilder(); builder.append("onStartInputView: editorInfo:"); - builder.append("inputType="); - builder.append(editorInfo.inputType); - builder.append("imeOptions="); - builder.append(editorInfo.imeOptions); + builder.append("\tinputType="); + builder.append(Integer.toHexString(editorInfo.inputType)); + builder.append("\timeOptions="); + builder.append(Integer.toHexString(editorInfo.imeOptions)); + builder.append("\tdisplay="); builder.append(Build.DISPLAY); + builder.append("\tmodel="); builder.append(Build.MODEL); + for (Map.Entry<String,?> entry : prefs.getAll().entrySet()) { + builder.append("\t" + entry.getKey()); + Object value = entry.getValue(); + builder.append("=" + ((value == null) ? "<null>" : value.toString())); + } logUnstructured("LatinIME_onStartInputViewInternal", builder.toString()); } } @@ -745,6 +644,42 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang } } + public static void latinKeyboardView_setKeyboard(final Keyboard keyboard) { + if (UnsLogGroup.LATINKEYBOARDVIEW_SETKEYBOARD_ENABLED) { + StringBuilder builder = new StringBuilder(); + builder.append("id="); + builder.append(keyboard.mId); + builder.append("\tw="); + builder.append(keyboard.mOccupiedWidth); + builder.append("\th="); + builder.append(keyboard.mOccupiedHeight); + builder.append("\tkeys=["); + boolean first = true; + for (Key key : keyboard.mKeys) { + if (first) { + first = false; + } else { + builder.append(","); + } + builder.append("{code:"); + builder.append(key.mCode); + builder.append(",altCode:"); + builder.append(key.mAltCode); + builder.append(",x:"); + builder.append(key.mX); + builder.append(",y:"); + builder.append(key.mY); + builder.append(",w:"); + builder.append(key.mWidth); + builder.append(",h:"); + builder.append(key.mHeight); + builder.append("}"); + } + builder.append("]"); + logUnstructured("LatinKeyboardView_setKeyboard", builder.toString()); + } + } + public static void latinIME_revertCommit(final String originallyTypedWord) { if (UnsLogGroup.LATINIME_REVERTCOMMIT_ENABLED) { logUnstructured("LatinIME_revertCommit", originallyTypedWord); diff --git a/java/src/com/android/inputmethod/latin/SubtypeLocale.java b/java/src/com/android/inputmethod/latin/SubtypeLocale.java index fc6193287..33ad23a60 100644 --- a/java/src/com/android/inputmethod/latin/SubtypeLocale.java +++ b/java/src/com/android/inputmethod/latin/SubtypeLocale.java @@ -27,10 +27,23 @@ import java.util.Locale; public class SubtypeLocale { private static final String TAG = SubtypeLocale.class.getSimpleName(); + // This class must be located in the same package as LatinIME.java. + private static final String RESOURCE_PACKAGE_NAME = + DictionaryFactory.class.getPackage().getName(); // Special language code to represent "no language". public static final String NO_LANGUAGE = "zz"; + public static final String QWERTY = "qwerty"; + + private static String[] sPredefinedKeyboardLayoutSet; + // Keyboard layout to its display name map. + private static final HashMap<String, String> sKeyboardKayoutToDisplayNameMap = + new HashMap<String, String>(); + // Keyboard layout to subtype name resource id map. + private static final HashMap<String, Integer> sKeyboardLayoutToNameIdsMap = + new HashMap<String, Integer>(); + private static final String SUBTYPE_RESOURCE_GENERIC_NAME_PREFIX = "string/subtype_generic_"; // Exceptional locales to display name map. private static final HashMap<String, String> sExceptionalDisplayNamesMap = new HashMap<String, String>(); @@ -41,13 +54,36 @@ public class SubtypeLocale { public static void init(Context context) { final Resources res = context.getResources(); - final String[] locales = res.getStringArray(R.array.subtype_locale_exception_keys); - final String[] displayNames = res.getStringArray(R.array.subtype_locale_exception_values); - for (int i = 0; i < locales.length; i++) { - sExceptionalDisplayNamesMap.put(locales[i], displayNames[i]); + + final String[] predefinedLayoutSet = res.getStringArray(R.array.predefined_layouts); + sPredefinedKeyboardLayoutSet = predefinedLayoutSet; + final String[] layoutDisplayNames = res.getStringArray( + R.array.predefined_layout_display_names); + for (int i = 0; i < predefinedLayoutSet.length; i++) { + final String layoutName = predefinedLayoutSet[i]; + sKeyboardKayoutToDisplayNameMap.put(layoutName, layoutDisplayNames[i]); + final String resourceName = SUBTYPE_RESOURCE_GENERIC_NAME_PREFIX + layoutName; + final int resId = res.getIdentifier(resourceName, null, RESOURCE_PACKAGE_NAME); + sKeyboardLayoutToNameIdsMap.put(layoutName, resId); + } + + final String[] exceptionalLocales = res.getStringArray( + R.array.subtype_locale_exception_keys); + final String[] exceptionalDisplayNames = res.getStringArray( + R.array.subtype_locale_exception_values); + for (int i = 0; i < exceptionalLocales.length; i++) { + sExceptionalDisplayNamesMap.put(exceptionalLocales[i], exceptionalDisplayNames[i]); } } + public static String[] getPredefinedKeyboardLayoutSet() { + return sPredefinedKeyboardLayoutSet; + } + + public static int getSubtypeNameIdFromKeyboardLayoutName(String keyboardLayoutName) { + return sKeyboardLayoutToNameIdsMap.get(keyboardLayoutName); + } + // Get InputMethodSubtype's display name in its locale. // isAdditionalSubtype (T=true, F=false) // locale layout | Short Middle Full @@ -115,7 +151,8 @@ public class SubtypeLocale { } public static String getKeyboardLayoutSetDisplayName(InputMethodSubtype subtype) { - return getKeyboardLayoutSetName(subtype).toUpperCase(); + final String layoutName = getKeyboardLayoutSetName(subtype); + return sKeyboardKayoutToDisplayNameMap.get(layoutName); } public static String getKeyboardLayoutSetName(InputMethodSubtype subtype) { @@ -125,7 +162,7 @@ public class SubtypeLocale { if (keyboardLayoutSet == null) { android.util.Log.w(TAG, "KeyboardLayoutSet not found, use QWERTY: " + "locale=" + subtype.getLocale() + " extraValue=" + subtype.getExtraValue()); - return AdditionalSubtype.QWERTY; + return QWERTY; } return keyboardLayoutSet; } diff --git a/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java b/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java index 1a9f373a1..804287309 100644 --- a/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java +++ b/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java @@ -16,19 +16,16 @@ package com.android.inputmethod.latin; -import static com.android.inputmethod.latin.Constants.Subtype.KEYBOARD_MODE; import static com.android.inputmethod.latin.Constants.Subtype.ExtraValue.REQ_NETWORK_CONNECTIVITY; import android.content.Context; import android.content.Intent; -import android.content.pm.PackageManager.NameNotFoundException; import android.content.res.Configuration; import android.content.res.Resources; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.os.AsyncTask; import android.os.IBinder; -import android.text.TextUtils; import android.util.Log; import android.view.inputmethod.InputMethodInfo; import android.view.inputmethod.InputMethodManager; @@ -36,7 +33,6 @@ import android.view.inputmethod.InputMethodSubtype; import com.android.inputmethod.keyboard.KeyboardSwitcher; -import java.util.ArrayList; import java.util.List; import java.util.Locale; import java.util.Map; @@ -45,37 +41,42 @@ public class SubtypeSwitcher { private static boolean DBG = LatinImeLogger.sDBG; private static final String TAG = SubtypeSwitcher.class.getSimpleName(); - private static final char LOCALE_SEPARATOR = '_'; - private final TextUtils.SimpleStringSplitter mLocaleSplitter = - new TextUtils.SimpleStringSplitter(LOCALE_SEPARATOR); - private static final SubtypeSwitcher sInstance = new SubtypeSwitcher(); private /* final */ LatinIME mService; private /* final */ InputMethodManager mImm; private /* final */ Resources mResources; private /* final */ ConnectivityManager mConnectivityManager; - private final ArrayList<InputMethodSubtype> mEnabledKeyboardSubtypesOfCurrentInputMethod = - new ArrayList<InputMethodSubtype>(); - private final ArrayList<String> mEnabledLanguagesOfCurrentInputMethod = new ArrayList<String>(); /*-----------------------------------------------------------*/ // Variants which should be changed only by reload functions. - private boolean mNeedsToDisplayLanguage; - private boolean mIsDictionaryAvailable; - private boolean mIsSystemLanguageSameAsInputLanguage; + private NeedsToDisplayLanguage mNeedsToDisplayLanguage = new NeedsToDisplayLanguage(); private InputMethodInfo mShortcutInputMethodInfo; private InputMethodSubtype mShortcutSubtype; - private List<InputMethodSubtype> mAllEnabledSubtypesOfCurrentInputMethod; private InputMethodSubtype mNoLanguageSubtype; // Note: This variable is always non-null after {@link #initialize(LatinIME)}. private InputMethodSubtype mCurrentSubtype; - private Locale mSystemLocale; - private Locale mInputLocale; - private String mInputLocaleStr; + private Locale mCurrentSystemLocale; /*-----------------------------------------------------------*/ private boolean mIsNetworkConnected; + static class NeedsToDisplayLanguage { + private int mEnabledSubtypeCount; + private boolean mIsSystemLanguageSameAsInputLanguage; + + public boolean getValue() { + return mEnabledSubtypeCount >= 2 || !mIsSystemLanguageSameAsInputLanguage; + } + + public void updateEnabledSubtypeCount(int count) { + mEnabledSubtypeCount = count; + } + + public void updateIsSystemLanguageSameAsInputLanguage(boolean isSame) { + mIsSystemLanguageSameAsInputLanguage = isSame; + } + } + public static SubtypeSwitcher getInstance() { return sInstance; } @@ -96,15 +97,10 @@ public class SubtypeSwitcher { mImm = ImfUtils.getInputMethodManager(service); mConnectivityManager = (ConnectivityManager) service.getSystemService( Context.CONNECTIVITY_SERVICE); - mEnabledKeyboardSubtypesOfCurrentInputMethod.clear(); - mEnabledLanguagesOfCurrentInputMethod.clear(); - mSystemLocale = null; - mInputLocale = null; - mInputLocaleStr = null; + mCurrentSystemLocale = mResources.getConfiguration().locale; mCurrentSubtype = mImm.getCurrentInputMethodSubtype(); - mAllEnabledSubtypesOfCurrentInputMethod = null; mNoLanguageSubtype = ImfUtils.findSubtypeByLocaleAndKeyboardLayoutSet( - service, SubtypeLocale.NO_LANGUAGE, AdditionalSubtype.QWERTY); + service, SubtypeLocale.NO_LANGUAGE, SubtypeLocale.QWERTY); final NetworkInfo info = mConnectivityManager.getActiveNetworkInfo(); mIsNetworkConnected = (info != null && info.isConnected()); @@ -113,7 +109,7 @@ public class SubtypeSwitcher { // Update all parameters stored in SubtypeSwitcher. // Only configuration changed event is allowed to call this because this is heavy. private void updateAllParameters() { - mSystemLocale = mResources.getConfiguration().locale; + mCurrentSystemLocale = mResources.getConfiguration().locale; updateSubtype(mImm.getCurrentInputMethodSubtype()); updateParametersOnStartInputView(); } @@ -127,31 +123,20 @@ public class SubtypeSwitcher { // Reload enabledSubtypes from the framework. private void updateEnabledSubtypes() { - final String currentMode = mCurrentSubtype.getMode(); + final InputMethodSubtype currentSubtype = mCurrentSubtype; boolean foundCurrentSubtypeBecameDisabled = true; - mAllEnabledSubtypesOfCurrentInputMethod = mImm.getEnabledInputMethodSubtypeList( - null, true); - mEnabledLanguagesOfCurrentInputMethod.clear(); - mEnabledKeyboardSubtypesOfCurrentInputMethod.clear(); - for (InputMethodSubtype ims : mAllEnabledSubtypesOfCurrentInputMethod) { - final String locale = ims.getLocale(); - final String mode = ims.getMode(); - mLocaleSplitter.setString(locale); - if (mLocaleSplitter.hasNext()) { - mEnabledLanguagesOfCurrentInputMethod.add(mLocaleSplitter.next()); - } - if (locale.equals(mInputLocaleStr) && mode.equals(currentMode)) { + final List<InputMethodSubtype> enabledSubtypesOfThisIme = + mImm.getEnabledInputMethodSubtypeList(null, true); + for (InputMethodSubtype ims : enabledSubtypesOfThisIme) { + if (ims.equals(currentSubtype)) { foundCurrentSubtypeBecameDisabled = false; } - if (KEYBOARD_MODE.equals(ims.getMode())) { - mEnabledKeyboardSubtypesOfCurrentInputMethod.add(ims); - } } - mNeedsToDisplayLanguage = !(getEnabledKeyboardLocaleCount() <= 1 - && mIsSystemLanguageSameAsInputLanguage); + mNeedsToDisplayLanguage.updateEnabledSubtypeCount(enabledSubtypesOfThisIme.size()); if (foundCurrentSubtypeBecameDisabled) { if (DBG) { - Log.w(TAG, "Current subtype: " + mInputLocaleStr + ", " + currentMode); + Log.w(TAG, "Last subtype: " + + currentSubtype.getLocale() + "/" + currentSubtype.getExtraValue()); Log.w(TAG, "Last subtype was disabled. Update to the current one."); } updateSubtype(mImm.getCurrentInputMethodSubtype()); @@ -192,70 +177,20 @@ public class SubtypeSwitcher { // Update the current subtype. LatinIME.onCurrentInputMethodSubtypeChanged calls this function. public void updateSubtype(InputMethodSubtype newSubtype) { - final String newLocale = newSubtype.getLocale(); - final String newMode = newSubtype.getMode(); - final String oldMode = mCurrentSubtype.getMode(); if (DBG) { - Log.w(TAG, "Update subtype to:" + newLocale + "," + newMode - + ", from: " + mInputLocaleStr + ", " + oldMode); + Log.w(TAG, "onCurrentInputMethodSubtypeChanged: to: " + + newSubtype.getLocale() + "/" + newSubtype.getExtraValue() + ", from: " + + mCurrentSubtype.getLocale() + "/" + mCurrentSubtype.getExtraValue()); } - boolean languageChanged = false; - if (!newLocale.equals(mInputLocaleStr)) { - if (mInputLocaleStr != null) { - languageChanged = true; - } - updateInputLocale(newLocale); - } - boolean modeChanged = false; - if (!newMode.equals(oldMode)) { - if (oldMode != null) { - modeChanged = true; - } - } - mCurrentSubtype = newSubtype; + if (newSubtype.equals(mCurrentSubtype)) return; - if (KEYBOARD_MODE.equals(mCurrentSubtype.getMode())) { - if (modeChanged || languageChanged) { - updateShortcutIME(); - mService.onRefreshKeyboard(); - } - } else { - final String packageName = mService.getPackageName(); - int version = -1; - try { - version = mService.getPackageManager().getPackageInfo( - packageName, 0).versionCode; - } catch (NameNotFoundException e) { - } - Log.w(TAG, "Unknown subtype mode: " + newMode + "," + version + ", " + packageName - + ". IME is already changed to other IME."); - Log.w(TAG, "Subtype mode:" + newSubtype.getMode()); - Log.w(TAG, "Subtype locale:" + newSubtype.getLocale()); - Log.w(TAG, "Subtype extra value:" + newSubtype.getExtraValue()); - Log.w(TAG, "Subtype is auxiliary:" + newSubtype.isAuxiliary()); - } - } + final Locale newLocale = SubtypeLocale.getSubtypeLocale(newSubtype); + mNeedsToDisplayLanguage.updateIsSystemLanguageSameAsInputLanguage( + mCurrentSystemLocale.equals(newLocale)); - // Update the current input locale from Locale string. - private void updateInputLocale(String inputLocaleStr) { - // example: inputLocaleStr = "en_US" "en" "" - // "en_US" --> language: en & country: US - // "en" --> language: en - // "" --> the system locale - if (!TextUtils.isEmpty(inputLocaleStr)) { - mInputLocale = LocaleUtils.constructLocaleFromString(inputLocaleStr); - mInputLocaleStr = inputLocaleStr; - } else { - mInputLocale = mSystemLocale; - String country = mSystemLocale.getCountry(); - mInputLocaleStr = mSystemLocale.getLanguage() - + (TextUtils.isEmpty(country) ? "" : "_" + mSystemLocale.getLanguage()); - } - mIsSystemLanguageSameAsInputLanguage = getSystemLocale().getLanguage().equalsIgnoreCase( - getInputLocale().getLanguage()); - mNeedsToDisplayLanguage = !(getEnabledKeyboardLocaleCount() <= 1 - && mIsSystemLanguageSameAsInputLanguage); - mIsDictionaryAvailable = DictionaryFactory.isDictionaryAvailable(mService, mInputLocale); + mCurrentSubtype = newSubtype; + updateShortcutIME(); + mService.onRefreshKeyboard(); } //////////////////////////// @@ -323,62 +258,31 @@ public class SubtypeSwitcher { } ////////////////////////////////// - // Language Switching functions // + // Subtype Switching functions // ////////////////////////////////// - public int getEnabledKeyboardLocaleCount() { - return mEnabledKeyboardSubtypesOfCurrentInputMethod.size(); - } - public boolean needsToDisplayLanguage(Locale keyboardLocale) { if (keyboardLocale.toString().equals(SubtypeLocale.NO_LANGUAGE)) { return true; } - if (!keyboardLocale.equals(mInputLocale)) { + if (!keyboardLocale.equals(getCurrentSubtypeLocale())) { return false; } - return mNeedsToDisplayLanguage; - } - - public Locale getInputLocale() { - return mInputLocale; - } - - public String getInputLocaleStr() { - return mInputLocaleStr; - } - - public String[] getEnabledLanguages() { - int enabledLanguageCount = mEnabledLanguagesOfCurrentInputMethod.size(); - // Workaround for explicitly specifying the voice language - if (enabledLanguageCount == 1) { - mEnabledLanguagesOfCurrentInputMethod.add(mEnabledLanguagesOfCurrentInputMethod - .get(0)); - ++enabledLanguageCount; - } - return mEnabledLanguagesOfCurrentInputMethod.toArray(new String[enabledLanguageCount]); + return mNeedsToDisplayLanguage.getValue(); } - public Locale getSystemLocale() { - return mSystemLocale; - } - - public boolean isSystemLanguageSameAsInputLanguage() { - return mIsSystemLanguageSameAsInputLanguage; + public Locale getCurrentSubtypeLocale() { + return SubtypeLocale.getSubtypeLocale(mCurrentSubtype); } public void onConfigurationChanged(Configuration conf) { final Locale systemLocale = conf.locale; // If system configuration was changed, update all parameters. - if (!TextUtils.equals(systemLocale.toString(), mSystemLocale.toString())) { + if (!systemLocale.equals(mCurrentSystemLocale)) { updateAllParameters(); } } - public boolean isDictionaryAvailable() { - return mIsDictionaryAvailable; - } - public InputMethodSubtype getCurrentSubtype() { return mCurrentSubtype; } diff --git a/java/src/com/android/inputmethod/latin/makedict/BinaryDictInputOutput.java b/java/src/com/android/inputmethod/latin/makedict/BinaryDictInputOutput.java index d22332116..97df98e34 100644 --- a/java/src/com/android/inputmethod/latin/makedict/BinaryDictInputOutput.java +++ b/java/src/com/android/inputmethod/latin/makedict/BinaryDictInputOutput.java @@ -21,6 +21,7 @@ import com.android.inputmethod.latin.makedict.FusionDictionary.DictionaryOptions import com.android.inputmethod.latin.makedict.FusionDictionary.Node; import com.android.inputmethod.latin.makedict.FusionDictionary.WeightedString; +import java.io.ByteArrayOutputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.OutputStream; @@ -272,6 +273,29 @@ public class BinaryDictInputOutput { } /** + * Writes a string with our character format to a ByteArrayOutputStream. + * + * This will also write the terminator byte. + * + * @param buffer the ByteArrayOutputStream to write to. + * @param word the string to write. + */ + private static void writeString(ByteArrayOutputStream buffer, final String word) { + final int length = word.length(); + for (int i = 0; i < length; i = word.offsetByCodePoints(i, 1)) { + final int codePoint = word.codePointAt(i); + if (1 == getCharSize(codePoint)) { + buffer.write((byte) codePoint); + } else { + buffer.write((byte) (0xFF & (codePoint >> 16))); + buffer.write((byte) (0xFF & (codePoint >> 8))); + buffer.write((byte) (0xFF & codePoint)); + } + } + buffer.write(GROUP_CHARACTERS_TERMINATOR); + } + + /** * Reads a string from a RandomAccessFile. This is the converse of the above method. */ private static String readString(final RandomAccessFile source) throws IOException { @@ -894,15 +918,11 @@ public class BinaryDictInputOutput { final FusionDictionary dict, final int version) throws IOException, UnsupportedFormatException { - // Addresses are limited to 3 bytes, so we'll just make a 16MB buffer. Since addresses - // can be relative to each node, the structure itself is not limited to 16MB at all, but - // I doubt this will ever be shot. If it is, deciding the order of the nodes becomes - // a quite complicated problem, because though the dictionary itself does not have a - // size limit, each node must still be within 16MB of all its children and parents. - // As long as this is ensured, the dictionary file may grow to any size. - // Anyway, to make a dictionary bigger than 16MB just increase the size of this buffer. - final byte[] buffer = new byte[1 << 24]; - int index = 0; + // Addresses are limited to 3 bytes, but since addresses can be relative to each node, the + // structure itself is not limited to 16MB. However, if it is over 16MB deciding the order + // of the nodes becomes a quite complicated problem, because though the dictionary itself + // does not have a size limit, each node must still be within 16MB of all its children and + // parents. As long as this is ensured, the dictionary file may grow to any size. if (version < MINIMUM_SUPPORTED_VERSION || version > MAXIMUM_SUPPORTED_VERSION) { throw new UnsupportedFormatException("Requested file format version " + version @@ -910,47 +930,54 @@ public class BinaryDictInputOutput { + MINIMUM_SUPPORTED_VERSION + " through " + MAXIMUM_SUPPORTED_VERSION); } + ByteArrayOutputStream headerBuffer = new ByteArrayOutputStream(256); + // The magic number in big-endian order. if (version >= FIRST_VERSION_WITH_HEADER_SIZE) { // Magic number for version 2+. - buffer[index++] = (byte) (0xFF & (VERSION_2_MAGIC_NUMBER >> 24)); - buffer[index++] = (byte) (0xFF & (VERSION_2_MAGIC_NUMBER >> 16)); - buffer[index++] = (byte) (0xFF & (VERSION_2_MAGIC_NUMBER >> 8)); - buffer[index++] = (byte) (0xFF & VERSION_2_MAGIC_NUMBER); + headerBuffer.write((byte) (0xFF & (VERSION_2_MAGIC_NUMBER >> 24))); + headerBuffer.write((byte) (0xFF & (VERSION_2_MAGIC_NUMBER >> 16))); + headerBuffer.write((byte) (0xFF & (VERSION_2_MAGIC_NUMBER >> 8))); + headerBuffer.write((byte) (0xFF & VERSION_2_MAGIC_NUMBER)); // Dictionary version. - buffer[index++] = (byte) (0xFF & (version >> 8)); - buffer[index++] = (byte) (0xFF & version); + headerBuffer.write((byte) (0xFF & (version >> 8))); + headerBuffer.write((byte) (0xFF & version)); } else { // Magic number for version 1. - buffer[index++] = (byte) (0xFF & (VERSION_1_MAGIC_NUMBER >> 8)); - buffer[index++] = (byte) (0xFF & VERSION_1_MAGIC_NUMBER); + headerBuffer.write((byte) (0xFF & (VERSION_1_MAGIC_NUMBER >> 8))); + headerBuffer.write((byte) (0xFF & VERSION_1_MAGIC_NUMBER)); // Dictionary version. - buffer[index++] = (byte) (0xFF & version); + headerBuffer.write((byte) (0xFF & version)); } // Options flags final int options = makeOptionsValue(dict.mOptions); - buffer[index++] = (byte) (0xFF & (options >> 8)); - buffer[index++] = (byte) (0xFF & options); + headerBuffer.write((byte) (0xFF & (options >> 8))); + headerBuffer.write((byte) (0xFF & options)); if (version >= FIRST_VERSION_WITH_HEADER_SIZE) { - final int headerSizeOffset = index; - index += 4; // Size of the header size - + final int headerSizeOffset = headerBuffer.size(); + // Placeholder to be written later with header size. + for (int i = 0; i < 4; ++i) { + headerBuffer.write(0); + } // Write out the options. for (final String key : dict.mOptions.mAttributes.keySet()) { final String value = dict.mOptions.mAttributes.get(key); - index += CharEncoding.writeString(buffer, index, key); - index += CharEncoding.writeString(buffer, index, value); + CharEncoding.writeString(headerBuffer, key); + CharEncoding.writeString(headerBuffer, value); } - + final int size = headerBuffer.size(); + final byte[] bytes = headerBuffer.toByteArray(); // Write out the header size. - buffer[headerSizeOffset] = (byte) (0xFF & (index >> 24)); - buffer[headerSizeOffset + 1] = (byte) (0xFF & (index >> 16)); - buffer[headerSizeOffset + 2] = (byte) (0xFF & (index >> 8)); - buffer[headerSizeOffset + 3] = (byte) (0xFF & (index >> 0)); + bytes[headerSizeOffset] = (byte) (0xFF & (size >> 24)); + bytes[headerSizeOffset + 1] = (byte) (0xFF & (size >> 16)); + bytes[headerSizeOffset + 2] = (byte) (0xFF & (size >> 8)); + bytes[headerSizeOffset + 3] = (byte) (0xFF & (size >> 0)); + destination.write(bytes); + } else { + headerBuffer.writeTo(destination); } - destination.write(buffer, 0, index); - index = 0; + headerBuffer.close(); // Leave the choice of the optimal node order to the flattenTree function. MakedictLog.i("Flattening the tree..."); @@ -961,6 +988,12 @@ public class BinaryDictInputOutput { MakedictLog.i("Checking array..."); checkFlatNodeArray(flatNodes); + // Create a buffer that matches the final dictionary size. + final Node lastNode = flatNodes.get(flatNodes.size() - 1); + final int bufferSize =(lastNode.mCachedAddress + lastNode.mCachedSize); + final byte[] buffer = new byte[bufferSize]; + int index = 0; + MakedictLog.i("Writing file..."); int dataEndOffset = 0; for (Node n : flatNodes) { |