diff options
Diffstat (limited to 'java')
101 files changed, 1930 insertions, 2025 deletions
diff --git a/java/res/drawable-hdpi/sym_keyboard_feedback_tab.png b/java/res/drawable-hdpi/sym_keyboard_feedback_tab.png Binary files differindex d75fcacd5..d85663bf3 100644 --- a/java/res/drawable-hdpi/sym_keyboard_feedback_tab.png +++ b/java/res/drawable-hdpi/sym_keyboard_feedback_tab.png diff --git a/java/res/drawable-hdpi/sym_keyboard_space.png b/java/res/drawable-hdpi/sym_keyboard_space.png Binary files differindex 780733ec5..78cd6b7bf 100644 --- a/java/res/drawable-hdpi/sym_keyboard_space.png +++ b/java/res/drawable-hdpi/sym_keyboard_space.png diff --git a/java/res/drawable-mdpi/more_keys_divider.png b/java/res/drawable-mdpi/more_keys_divider.png Binary files differindex a46284f21..0f71c6172 100644 --- a/java/res/drawable-mdpi/more_keys_divider.png +++ b/java/res/drawable-mdpi/more_keys_divider.png diff --git a/java/res/drawable-mdpi/more_suggestions_divider.png b/java/res/drawable-mdpi/more_suggestions_divider.png Binary files differindex a46284f21..0f71c6172 100644 --- a/java/res/drawable-mdpi/more_suggestions_divider.png +++ b/java/res/drawable-mdpi/more_suggestions_divider.png diff --git a/java/res/drawable-mdpi/sym_keyboard_feedback_tab.png b/java/res/drawable-mdpi/sym_keyboard_feedback_tab.png Binary files differindex a10dc8fa2..fee15807c 100644 --- a/java/res/drawable-mdpi/sym_keyboard_feedback_tab.png +++ b/java/res/drawable-mdpi/sym_keyboard_feedback_tab.png diff --git a/java/res/drawable-mdpi/sym_keyboard_space.png b/java/res/drawable-mdpi/sym_keyboard_space.png Binary files differindex cbe4a88d6..6d03e6347 100644 --- a/java/res/drawable-mdpi/sym_keyboard_space.png +++ b/java/res/drawable-mdpi/sym_keyboard_space.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_feedback_tab.png b/java/res/drawable-xhdpi/sym_keyboard_feedback_tab.png Binary files differindex 0650e01cb..b0ee35d59 100644 --- a/java/res/drawable-xhdpi/sym_keyboard_feedback_tab.png +++ b/java/res/drawable-xhdpi/sym_keyboard_feedback_tab.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_space.png b/java/res/drawable-xhdpi/sym_keyboard_space.png Binary files differindex 66fc3e9d3..3691280e3 100644 --- a/java/res/drawable-xhdpi/sym_keyboard_space.png +++ b/java/res/drawable-xhdpi/sym_keyboard_space.png diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_left_background_klp.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_left_background_klp.9.png Binary files differindex 2079e0462..3ab79007e 100644 --- a/java/res/drawable-xxhdpi/keyboard_key_feedback_left_background_klp.9.png +++ b/java/res/drawable-xxhdpi/keyboard_key_feedback_left_background_klp.9.png diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_left_more_background_klp.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_left_more_background_klp.9.png Binary files differindex c4178d9a8..99543a1e0 100644 --- a/java/res/drawable-xxhdpi/keyboard_key_feedback_left_more_background_klp.9.png +++ b/java/res/drawable-xxhdpi/keyboard_key_feedback_left_more_background_klp.9.png diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_right_background_klp.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_right_background_klp.9.png Binary files differindex d3d8733fd..e9e379287 100644 --- a/java/res/drawable-xxhdpi/keyboard_key_feedback_right_background_klp.9.png +++ b/java/res/drawable-xxhdpi/keyboard_key_feedback_right_background_klp.9.png diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_right_more_background_klp.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_right_more_background_klp.9.png Binary files differindex d7ec8bcb2..6c1143aeb 100644 --- a/java/res/drawable-xxhdpi/keyboard_key_feedback_right_more_background_klp.9.png +++ b/java/res/drawable-xxhdpi/keyboard_key_feedback_right_more_background_klp.9.png diff --git a/java/res/values-ar-sw600dp/config-spacing-and-punctuations.xml b/java/res/values-ar-sw600dp/donottranslate-config-spacing-and-punctuations.xml index 56296361f..d7aca6fb4 100644 --- a/java/res/values-ar-sw600dp/config-spacing-and-punctuations.xml +++ b/java/res/values-ar-sw600dp/donottranslate-config-spacing-and-punctuations.xml @@ -23,5 +23,5 @@ <!-- Symbols that are suggested between words --> <!-- U+061F: "؟" ARABIC QUESTION MARK U+061B: "؛" ARABIC SEMICOLON --> - <string name="suggested_punctuations" translatable="false">!,؟,:,؛,\",\',(|),)|(,-,/,@,_</string> + <string name="suggested_punctuations">!,؟,:,؛,\",\',(|),)|(,-,/,@,_</string> </resources> diff --git a/java/res/values-ar/config-spacing-and-punctuations.xml b/java/res/values-ar/donottranslate-config-spacing-and-punctuations.xml index d33a104df..21bb3318f 100644 --- a/java/res/values-ar/config-spacing-and-punctuations.xml +++ b/java/res/values-ar/donottranslate-config-spacing-and-punctuations.xml @@ -24,5 +24,5 @@ <!-- U+061F: "؟" ARABIC QUESTION MARK U+060C: "،" ARABIC COMMA U+061B: "؛" ARABIC SEMICOLON --> - <string name="suggested_punctuations" translatable="false">!,؟,،,:,؛,\",(|),)|(,\',-,/,@,_</string> + <string name="suggested_punctuations">!,؟,،,:,؛,\",(|),)|(,\',-,/,@,_</string> </resources> diff --git a/java/res/values-da/strings.xml b/java/res/values-da/strings.xml index 7c0af04db..4dccbbf61 100644 --- a/java/res/values-da/strings.xml +++ b/java/res/values-da/strings.xml @@ -22,8 +22,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="english_ime_input_options" msgid="3909945612939668554">"Indstillinger for input"</string> <string name="english_ime_research_log" msgid="8492602295696577851">"Forskningslogkommandoer"</string> - <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Slå kontaktnavne op"</string> - <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Stavekontrollen bruger poster fra listen over kontaktpersoner"</string> + <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Anvend kontaktnavne"</string> + <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Stavekontrollen bruger ord fra dine kontaktpersondata"</string> <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibration ved tastetryk"</string> <string name="sound_on_keypress" msgid="6093592297198243644">"Lyd ved tastetryk"</string> <string name="popup_on_keypress" msgid="123894815723512944">"Pop op ved tastetryk"</string> @@ -35,7 +35,7 @@ <string name="advanced_settings_summary" msgid="4487980456152830271">"Indstillinger for øvede"</string> <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Skift inputmetode"</string> <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Tasten til sprogskift gælder også for andre inputmetoder"</string> - <string name="show_language_switch_key" msgid="5915478828318774384">"Tast til sprogskift"</string> + <string name="show_language_switch_key" msgid="5915478828318774384">"Knap til sprogskift"</string> <string name="show_language_switch_key_summary" msgid="7343403647474265713">"Vis, når der er aktiveret flere inputsprog"</string> <string name="sliding_key_input_preview" msgid="6604262359510068370">"Vis indikator ved glidning"</string> <string name="sliding_key_input_preview_summary" msgid="6340524345729093886">"Vis et visuelt tip, når du glider fra Shift eller symboltaster"</string> @@ -49,15 +49,15 @@ <string name="use_personalized_dicts" msgid="5167396352105467626">"Tilpassede forslag"</string> <string name="use_double_space_period" msgid="8781529969425082860">"To mellemrum for punktum"</string> <string name="use_double_space_period_summary" msgid="6532892187247952799">"To tryk på mellemrumstasten indsætter et punktum og et mellemrum"</string> - <string name="auto_cap" msgid="1719746674854628252">"Skriv aut. med stort"</string> + <string name="auto_cap" msgid="1719746674854628252">"Skriv automatisk med stort"</string> <string name="auto_cap_summary" msgid="7934452761022946874">"Skriv det første ord i hver sætning med stort"</string> <string name="edit_personal_dictionary" msgid="3996910038952940420">"Personlig ordbog"</string> - <string name="configure_dictionaries_title" msgid="4238652338556902049">"Tillægsordbøger"</string> + <string name="configure_dictionaries_title" msgid="4238652338556902049">"Ekstra ordbøger"</string> <string name="main_dictionary" msgid="4798763781818361168">"Hovedordbog"</string> <string name="prefs_show_suggestions" msgid="8026799663445531637">"Vis rettelsesforslag"</string> <string name="prefs_show_suggestions_summary" msgid="1583132279498502825">"Vis ordforslag under indtastning"</string> <string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Vis altid"</string> - <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Vis i portræt"</string> + <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Vis i oprejst format"</string> <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Skjul altid"</string> <string name="prefs_block_potentially_offensive_title" msgid="5078480071057408934">"Bloker stødende ord"</string> <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"Foreslå ikke potentielt stødende ord"</string> @@ -92,7 +92,7 @@ <string name="spoken_description_settings" msgid="4627462689603838099">"Indstillinger"</string> <string name="spoken_description_tab" msgid="2667716002663482248">"Tabulatortast"</string> <string name="spoken_description_space" msgid="2582521050049860859">"Mellemrum"</string> - <string name="spoken_description_mic" msgid="615536748882611950">"Stemmeinput"</string> + <string name="spoken_description_mic" msgid="615536748882611950">"Taleinput"</string> <string name="spoken_description_smiley" msgid="2256309826200113918">"Smiley"</string> <string name="spoken_description_return" msgid="8178083177238315647">"Tilbage"</string> <string name="spoken_description_search" msgid="1247236163755920808">"Søg"</string> @@ -118,7 +118,7 @@ <string name="keyboard_mode_text" msgid="6479436687899701619">"tekst"</string> <string name="keyboard_mode_time" msgid="4381856885582143277">"klokkeslæt"</string> <string name="keyboard_mode_url" msgid="1519819835514911218">"Webadresse"</string> - <string name="voice_input" msgid="3583258583521397548">"Nøgle til stemmeinput"</string> + <string name="voice_input" msgid="3583258583521397548">"Knap til taleinput"</string> <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Der er ingen aktiverede stemmeinputmetoder. Kontrollér Indstillinger for sprog og input."</string> <string name="configure_input_method" msgid="373356270290742459">"Konfigurer inputmetoder"</string> <string name="language_selection_title" msgid="1651299598555326750">"Inputsprog"</string> @@ -194,7 +194,7 @@ <string name="dictionary_provider_name" msgid="3027315045397363079">"Dictionary Provider"</string> <string name="dictionary_service_name" msgid="6237472350693511448">"Ordbogstjeneste"</string> <string name="download_description" msgid="6014835283119198591">"Opdateringsoplysninger for ordbøger"</string> - <string name="dictionary_settings_title" msgid="8091417676045693313">"Tillægsordbøger"</string> + <string name="dictionary_settings_title" msgid="8091417676045693313">"Ekstra ordbøger"</string> <string name="dictionary_install_over_metered_network_prompt" msgid="3587517870006332980">"Ordbog er tilgængelig"</string> <string name="dictionary_settings_summary" msgid="5305694987799824349">"Indstillinger for ordbøger"</string> <string name="user_dictionaries" msgid="3582332055892252845">"Brugerordbøger"</string> diff --git a/java/res/values-fa-sw600dp/config-spacing-and-punctuations.xml b/java/res/values-fa-sw600dp/donottranslate-config-spacing-and-punctuations.xml index 56296361f..d7aca6fb4 100644 --- a/java/res/values-fa-sw600dp/config-spacing-and-punctuations.xml +++ b/java/res/values-fa-sw600dp/donottranslate-config-spacing-and-punctuations.xml @@ -23,5 +23,5 @@ <!-- Symbols that are suggested between words --> <!-- U+061F: "؟" ARABIC QUESTION MARK U+061B: "؛" ARABIC SEMICOLON --> - <string name="suggested_punctuations" translatable="false">!,؟,:,؛,\",\',(|),)|(,-,/,@,_</string> + <string name="suggested_punctuations">!,؟,:,؛,\",\',(|),)|(,-,/,@,_</string> </resources> diff --git a/java/res/values-fa/config-spacing-and-punctuations.xml b/java/res/values-fa/donottranslate-config-spacing-and-punctuations.xml index d33a104df..21bb3318f 100644 --- a/java/res/values-fa/config-spacing-and-punctuations.xml +++ b/java/res/values-fa/donottranslate-config-spacing-and-punctuations.xml @@ -24,5 +24,5 @@ <!-- U+061F: "؟" ARABIC QUESTION MARK U+060C: "،" ARABIC COMMA U+061B: "؛" ARABIC SEMICOLON --> - <string name="suggested_punctuations" translatable="false">!,؟,،,:,؛,\",(|),)|(,\',-,/,@,_</string> + <string name="suggested_punctuations">!,؟,،,:,؛,\",(|),)|(,\',-,/,@,_</string> </resources> diff --git a/java/res/values-fr-rCA/config-spacing-and-punctuations.xml b/java/res/values-fr-rCA/donottranslate-config-spacing-and-punctuations.xml index ff9144920..e4c30c4d7 100644 --- a/java/res/values-fr-rCA/config-spacing-and-punctuations.xml +++ b/java/res/values-fr-rCA/donottranslate-config-spacing-and-punctuations.xml @@ -20,12 +20,12 @@ <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <!-- Symbols that are normally preceded by a space (used to add an auto-space before these) --> <!-- This is similar to French with the exception of "!" "?" and ";" which do not take a space before in Canadian French. Note that ":" does take a space before according to Canadian rules. --> - <string name="symbols_preceded_by_space" translatable="false">([{&:</string> + <string name="symbols_preceded_by_space">([{&:</string> <!-- Symbols that are normally followed by a space (used to add an auto-space after these) --> - <string name="symbols_followed_by_space" translatable="false">.,;:!?)]}&</string> + <string name="symbols_followed_by_space">.,;:!?)]}&</string> <!-- Symbols that separate words --> <!-- Don't remove the enclosing double quotes, they protect whitespace (not just U+0020) --> - <string name="symbols_word_separators" translatable="false">"	 
 "()[]{}*&<>+=|.,;:!?/_\"</string> + <string name="symbols_word_separators">"	 
 "()[]{}*&<>+=|.,;:!?/_\"</string> <!-- Word connectors --> - <string name="symbols_word_connectors" translatable="false">\'-</string> + <string name="symbols_word_connectors">\'-</string> </resources> diff --git a/java/res/values-fr/config-spacing-and-punctuations.xml b/java/res/values-fr/donottranslate-config-spacing-and-punctuations.xml index d09b0c011..d72f72b92 100644 --- a/java/res/values-fr/config-spacing-and-punctuations.xml +++ b/java/res/values-fr/donottranslate-config-spacing-and-punctuations.xml @@ -19,12 +19,12 @@ --> <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <!-- Symbols that are normally preceded by a space (used to add an auto-space before these) --> - <string name="symbols_preceded_by_space" translatable="false">([{&;:!?</string> + <string name="symbols_preceded_by_space">([{&;:!?</string> <!-- Symbols that are normally followed by a space (used to add an auto-space after these) --> - <string name="symbols_followed_by_space" translatable="false">.,;:!?)]}&</string> + <string name="symbols_followed_by_space">.,;:!?)]}&</string> <!-- Symbols that separate words --> <!-- Don't remove the enclosing double quotes, they protect whitespace (not just U+0020) --> - <string name="symbols_word_separators" translatable="false">"	 
 "()[]{}*&<>+=|.,;:!?/_\"</string> + <string name="symbols_word_separators">"	 
 "()[]{}*&<>+=|.,;:!?/_\"</string> <!-- Word connectors --> - <string name="symbols_word_connectors" translatable="false">\'-</string> + <string name="symbols_word_connectors">\'-</string> </resources> diff --git a/java/res/values-hy-rAM/config-spacing-and-punctuations.xml b/java/res/values-hy-rAM/donottranslate-config-spacing-and-punctuations.xml index 792762dd7..ed35365a2 100644 --- a/java/res/values-hy-rAM/config-spacing-and-punctuations.xml +++ b/java/res/values-hy-rAM/donottranslate-config-spacing-and-punctuations.xml @@ -22,11 +22,11 @@ <!-- U+055D: "՝" ARMENIAN COMMA --> <!-- U+0589: "։" ARMENIAN FULL STOP --> <!-- Symbols that are normally followed by a space (used to add an auto-space after these) --> - <string name="symbols_followed_by_space" translatable="false">.,;:!?)]}&։՝</string> + <string name="symbols_followed_by_space">.,;:!?)]}&։՝</string> <!-- Symbols that separate words. Adding armenian period and comma. --> <!-- Don't remove the enclosing double quotes, they protect whitespace (not just U+0020) --> - <string name="symbols_word_separators" translatable="false">"	 
 "()[]{}*&<>+=|.,;:!?/_\"։՝</string> + <string name="symbols_word_separators">"	 
 "()[]{}*&<>+=|.,;:!?/_\"։՝</string> <!-- The sentence separator code point, for capitalization --> <!-- U+0589: "։" ARMENIAN FULL STOP ; 589h = 1417d --> - <integer name="sentence_separator" translatable="false">1417</integer> + <integer name="sentence_separator">1417</integer> </resources> diff --git a/java/res/values-is/strings.xml b/java/res/values-is/strings.xml index 1137fd09d..a6507f631 100644 --- a/java/res/values-is/strings.xml +++ b/java/res/values-is/strings.xml @@ -126,8 +126,6 @@ <skip /> <!-- no translation found for gesture_floating_preview_text_summary (4472696213996203533) --> <skip /> - <!-- no translation found for added_word (8993883354622484372) --> - <skip /> <!-- no translation found for spoken_use_headphones (896961781287283493) --> <skip /> <!-- no translation found for spoken_current_text_is (2485723011272583845) --> diff --git a/java/res/values-iw-sw600dp/config-spacing-and-punctuations.xml b/java/res/values-iw-sw600dp/donottranslate-config-spacing-and-punctuations.xml index b562b18db..22f0353ff 100644 --- a/java/res/values-iw-sw600dp/config-spacing-and-punctuations.xml +++ b/java/res/values-iw-sw600dp/donottranslate-config-spacing-and-punctuations.xml @@ -21,5 +21,5 @@ <!-- The all letters need to be mirrored are found at http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt --> <!-- Symbols that are suggested between words --> - <string name="suggested_punctuations" translatable="false">:,;,\",(|),)|(,\',-,/,@,_</string> + <string name="suggested_punctuations">:,;,\",(|),)|(,\',-,/,@,_</string> </resources> diff --git a/java/res/values-iw/config-spacing-and-punctuations.xml b/java/res/values-iw/donottranslate-config-spacing-and-punctuations.xml index 9a9e6ee7a..d30720811 100644 --- a/java/res/values-iw/config-spacing-and-punctuations.xml +++ b/java/res/values-iw/donottranslate-config-spacing-and-punctuations.xml @@ -21,5 +21,5 @@ <!-- The all letters need to be mirrored are found at http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt --> <!-- Symbols that are suggested between words --> - <string name="suggested_punctuations" translatable="false">!,?,\\,,:,;,\",(|),)|(,\',-,/,@,_</string> + <string name="suggested_punctuations">!,?,\\,,:,;,\",(|),)|(,\',-,/,@,_</string> </resources> diff --git a/java/res/values-kk/strings.xml b/java/res/values-kk/strings.xml index d39c2d4d2..eda3e5233 100644 --- a/java/res/values-kk/strings.xml +++ b/java/res/values-kk/strings.xml @@ -75,7 +75,6 @@ <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Қимылдау кезінде ұсынылған сөзді көру"</string> <string name="gesture_space_aware" msgid="8244483979855138643">"Фраза қимылы"</string> <string name="gesture_space_aware_summary" msgid="3226298212755100667">"Бос орын пернесін жанау арқылы қимылдар барысында бос орындарды енгізу"</string> - <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Сақталды"</string> <string name="spoken_use_headphones" msgid="896961781287283493">"Дауыспен айтылатын құпия сөз кілттерін есту үшін құлақаспап қосыңыз."</string> <string name="spoken_current_text_is" msgid="2485723011272583845">"Ағымдағы мәтін - %s"</string> <string name="spoken_no_text_entered" msgid="7479685225597344496">"Мәтін енгізілмеген"</string> diff --git a/java/res/values-km-rKH/config-spacing-and-punctuations.xml b/java/res/values-km-rKH/donottranslate-config-spacing-and-punctuations.xml index a9893feec..a9893feec 100644 --- a/java/res/values-km-rKH/config-spacing-and-punctuations.xml +++ b/java/res/values-km-rKH/donottranslate-config-spacing-and-punctuations.xml diff --git a/java/res/values-ky/strings.xml b/java/res/values-ky/strings.xml index c3aab7858..905eee059 100644 --- a/java/res/values-ky/strings.xml +++ b/java/res/values-ky/strings.xml @@ -110,8 +110,6 @@ <skip /> <!-- no translation found for bigram_prediction_summary (1747261921174300098) --> <skip /> - <!-- no translation found for added_word (8993883354622484372) --> - <skip /> <!-- no translation found for label_to_symbol_key (8516904117128967293) --> <skip /> <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) --> diff --git a/java/res/values-lo-rLA/config-spacing-and-punctuations.xml b/java/res/values-lo-rLA/donottranslate-config-spacing-and-punctuations.xml index a9893feec..a9893feec 100644 --- a/java/res/values-lo-rLA/config-spacing-and-punctuations.xml +++ b/java/res/values-lo-rLA/donottranslate-config-spacing-and-punctuations.xml diff --git a/java/res/values-mk/strings.xml b/java/res/values-mk/strings.xml index 1137fd09d..a6507f631 100644 --- a/java/res/values-mk/strings.xml +++ b/java/res/values-mk/strings.xml @@ -126,8 +126,6 @@ <skip /> <!-- no translation found for gesture_floating_preview_text_summary (4472696213996203533) --> <skip /> - <!-- no translation found for added_word (8993883354622484372) --> - <skip /> <!-- no translation found for spoken_use_headphones (896961781287283493) --> <skip /> <!-- no translation found for spoken_current_text_is (2485723011272583845) --> diff --git a/java/res/values-ms-rMY/strings.xml b/java/res/values-ms-rMY/strings.xml index 33ec0651e..eef792ef7 100644 --- a/java/res/values-ms-rMY/strings.xml +++ b/java/res/values-ms-rMY/strings.xml @@ -80,7 +80,7 @@ <string name="spoken_current_text_is" msgid="2485723011272583845">"Teks semasa adalah %s"</string> <string name="spoken_no_text_entered" msgid="7479685225597344496">"Tiada teks dimasukkan"</string> <string name="spoken_auto_correct" msgid="5150455215290003221">"<xliff:g id="KEY_NAME">%1$s</xliff:g> membetulkan <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> menjadi <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string> - <string name="spoken_auto_correct_obscured" msgid="2309828861778711939">"<xliff:g id="KEY_NAME">%1$s</xliff:g> melakukan auto pembetulan"</string> + <string name="spoken_auto_correct_obscured" msgid="2309828861778711939">"<xliff:g id="KEY_NAME">%1$s</xliff:g> melakukan autopembetulan"</string> <string name="spoken_description_unknown" msgid="3197434010402179157">"Kod kunci %d"</string> <string name="spoken_description_shift" msgid="244197883292549308">"Shift"</string> <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Kunci anjak dihidupkan (ketik untuk melumpuhkan)"</string> diff --git a/java/res/values-rm/strings.xml b/java/res/values-rm/strings.xml index 378c25426..27bfd82bf 100644 --- a/java/res/values-rm/strings.xml +++ b/java/res/values-rm/strings.xml @@ -122,7 +122,6 @@ <skip /> <!-- no translation found for gesture_floating_preview_text_summary (4472696213996203533) --> <skip /> - <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Memorisà"</string> <!-- no translation found for spoken_use_headphones (896961781287283493) --> <skip /> <!-- no translation found for spoken_current_text_is (2485723011272583845) --> diff --git a/java/res/values-sw600dp/config-spacing-and-punctuations.xml b/java/res/values-sw600dp/donottranslate-config-spacing-and-punctuations.xml index 4d19412a3..9cc555fbc 100644 --- a/java/res/values-sw600dp/config-spacing-and-punctuations.xml +++ b/java/res/values-sw600dp/donottranslate-config-spacing-and-punctuations.xml @@ -19,5 +19,5 @@ --> <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <!-- Symbols that are suggested between words --> - <string name="suggested_punctuations" translatable="false">:,;,\",(,),\',-,/,@,_</string> + <string name="suggested_punctuations">:,;,\",(,),\',-,/,@,_</string> </resources> diff --git a/java/res/values-th/config-spacing-and-punctuations.xml b/java/res/values-th/donottranslate-config-spacing-and-punctuations.xml index a9893feec..a9893feec 100644 --- a/java/res/values-th/config-spacing-and-punctuations.xml +++ b/java/res/values-th/donottranslate-config-spacing-and-punctuations.xml diff --git a/java/res/values/config-spacing-and-punctuations.xml b/java/res/values/donottranslate-config-spacing-and-punctuations.xml index ad5663d9b..1be5cf888 100644 --- a/java/res/values/config-spacing-and-punctuations.xml +++ b/java/res/values/donottranslate-config-spacing-and-punctuations.xml @@ -21,19 +21,19 @@ <!-- TODO: these settings depend on the language. They should be put either in the dictionary header, or in the subtype maybe? --> <!-- Symbols that are suggested between words --> - <string name="suggested_punctuations" translatable="false">!,?,\\,,:,;,\",(,),\',-,/,@,_</string> + <string name="suggested_punctuations">!,?,\\,,:,;,\",(,),\',-,/,@,_</string> <!-- Symbols that are normally preceded by a space (used to add an auto-space before these) --> - <string name="symbols_preceded_by_space" translatable="false">([{&</string> + <string name="symbols_preceded_by_space">([{&</string> <!-- Symbols that are normally followed by a space (used to add an auto-space after these) --> - <string name="symbols_followed_by_space" translatable="false">.,;:!?)]}&</string> + <string name="symbols_followed_by_space">.,;:!?)]}&</string> <!-- Symbols that separate words --> <!-- Don't remove the enclosing double quotes, they protect whitespace (not just U+0020) --> - <string name="symbols_word_separators" translatable="false">"	 
 "()[]{}*&<>+=|.,;:!?/_\"</string> + <string name="symbols_word_separators">"	 
 "()[]{}*&<>+=|.,;:!?/_\"</string> <!-- Word connectors --> - <string name="symbols_word_connectors" translatable="false">\'-</string> + <string name="symbols_word_connectors">\'-</string> <!-- The sentence separator code point, for capitalization --> <!-- U+002E: "." FULL STOP ; 2Eh = 46d --> - <integer name="sentence_separator" translatable="false">46</integer> + <integer name="sentence_separator">46</integer> <!-- Whether this language uses spaces between words --> <bool name="current_language_has_spaces">true</bool> </resources> diff --git a/java/res/xml-sw600dp/key_shortcut.xml b/java/res/xml-sw600dp/key_shortcut.xml index c869e745b..d24e81f73 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="!text/settings_as_more_key" /> + latin:moreKeys="!text/keyspec_settings" /> </case> <case latin:supportsSwitchingToShortcutIme="true" diff --git a/java/res/xml-sw600dp/key_styles_common.xml b/java/res/xml-sw600dp/key_styles_common.xml index aa64f85b3..3d5556fe5 100644 --- a/java/res/xml-sw600dp/key_styles_common.xml +++ b/java/res/xml-sw600dp/key_styles_common.xml @@ -145,23 +145,23 @@ latin:backgroundType="functional" /> <key-style latin:styleName="toSymbolKeyStyle" - latin:keySpec="!text/label_to_symbol_key|!code/key_switch_alpha_symbol" + latin:keySpec="!text/keylabel_to_symbol|!code/key_switch_alpha_symbol" latin:parentStyle="baseForLayoutSwitchKeyStyle" /> <key-style latin:styleName="toAlphaKeyStyle" - latin:keySpec="!text/label_to_alpha_key|!code/key_switch_alpha_symbol" + latin:keySpec="!text/keylabel_to_alpha|!code/key_switch_alpha_symbol" latin:parentStyle="baseForLayoutSwitchKeyStyle" /> <key-style latin:styleName="toMoreSymbolKeyStyle" - latin:keySpec="!text/label_to_more_symbol_for_tablet_key|!code/key_shift" + latin:keySpec="!text/keylabel_tablet_to_more_symbol|!code/key_shift" latin:parentStyle="baseForLayoutSwitchKeyStyle" /> <key-style latin:styleName="backFromMoreSymbolKeyStyle" - latin:keySpec="!text/label_to_symbol_key|!code/key_shift" + latin:keySpec="!text/keylabel_to_symbol|!code/key_shift" latin:parentStyle="baseForLayoutSwitchKeyStyle" /> <key-style latin:styleName="comKeyStyle" - latin:keySpec="!text/keylabel_for_popular_domain" + latin:keySpec="!text/keyspec_popular_domain" latin:keyLabelFlags="autoXScale|fontNormal|hasPopupHint|preserveCase" - latin:moreKeys="!text/more_keys_for_popular_domain" /> + latin:moreKeys="!text/morekeys_popular_domain" /> </merge> diff --git a/java/res/xml-sw600dp/key_styles_enter.xml b/java/res/xml-sw600dp/key_styles_enter.xml index 05762ad14..0699e4527 100644 --- a/java/res/xml-sw600dp/key_styles_enter.xml +++ b/java/res/xml-sw600dp/key_styles_enter.xml @@ -21,7 +21,7 @@ <merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > - <!-- TODO: Stop using many conditional cases for emoji_key_as_more_key. There are way too many to maintain. --> + <!-- TODO: Stop using many conditional cases for keyspec_emoji_key. There are way too many to maintain. --> <!-- Navigate more keys style --> <switch> <!-- latin:passwordInput="true" --> @@ -32,7 +32,7 @@ <key-style latin:styleName="navigateMoreKeysStyle" latin:keyLabelFlags="hasPopupHint|preserveCase" - latin:moreKeys="!text/action_previous_as_more_key" /> + latin:moreKeys="!text/keyspec_action_previous" /> </case> <case latin:imeAction="actionNext" @@ -48,7 +48,7 @@ <key-style latin:styleName="navigateMoreKeysStyle" latin:keyLabelFlags="hasPopupHint|preserveCase" - latin:moreKeys="!text/action_next_as_more_key" /> + latin:moreKeys="!text/keyspec_action_next" /> </case> <case latin:imeAction="actionPrevious" @@ -64,7 +64,7 @@ <key-style latin:styleName="navigateMoreKeysStyle" latin:keyLabelFlags="hasPopupHint|preserveCase" - latin:moreKeys="!fixedColumnOrder!2,!needsDividers!,!text/action_previous_as_more_key,!text/action_next_as_more_key" /> + latin:moreKeys="!fixedColumnOrder!2,!needsDividers!,!text/keyspec_action_previous,!text/keyspec_action_next" /> </case> <case latin:navigateNext="true" @@ -73,7 +73,7 @@ <key-style latin:styleName="navigateMoreKeysStyle" latin:keyLabelFlags="hasPopupHint|preserveCase" - latin:moreKeys="!text/action_next_as_more_key" /> + latin:moreKeys="!text/keyspec_action_next" /> </case> <case latin:navigateNext="false" @@ -82,7 +82,7 @@ <key-style latin:styleName="navigateMoreKeysStyle" latin:keyLabelFlags="hasPopupHint|preserveCase" - latin:moreKeys="!text/action_previous_as_more_key" /> + latin:moreKeys="!text/keyspec_action_previous" /> </case> <case latin:navigateNext="false" diff --git a/java/res/xml-sw600dp/keys_comma_period.xml b/java/res/xml-sw600dp/keys_comma_period.xml index eda96b288..ab987334a 100644 --- a/java/res/xml-sw600dp/keys_comma_period.xml +++ b/java/res/xml-sw600dp/keys_comma_period.xml @@ -22,17 +22,17 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Key - latin:keySpec="!text/keylabel_for_tablet_comma" - latin:keyHintLabel="!text/keyhintlabel_for_tablet_comma" + latin:keySpec="!text/keyspec_tablet_comma" + latin:keyHintLabel="!text/keyhintlabel_tablet_comma" latin:keyLabelFlags="hasPopupHint" - latin:moreKeys="!text/more_keys_for_tablet_comma" + latin:moreKeys="!text/morekeys_tablet_comma" latin:backgroundType="functional" latin:keyStyle="hasShiftedLetterHintStyle" /> <Key - latin:keySpec="!text/keylabel_for_tablet_period" - latin:keyHintLabel="!text/keyhintlabel_for_tablet_period" + latin:keySpec="!text/keyspec_tablet_period" + latin:keyHintLabel="!text/keyhintlabel_tablet_period" latin:keyLabelFlags="hasPopupHint" - latin:moreKeys="!text/more_keys_for_tablet_period" + latin:moreKeys="!text/morekeys_tablet_period" latin:backgroundType="functional" latin:keyStyle="hasShiftedLetterHintStyle" /> </merge> diff --git a/java/res/xml-sw600dp/keys_exclamation_question.xml b/java/res/xml-sw600dp/keys_exclamation_question.xml index 116bef2be..97bd95d6a 100644 --- a/java/res/xml-sw600dp/keys_exclamation_question.xml +++ b/java/res/xml-sw600dp/keys_exclamation_question.xml @@ -23,8 +23,8 @@ > <Key latin:keySpec="!" - latin:moreKeys="!text/more_keys_for_exclamation" /> + latin:moreKeys="!text/morekeys_exclamation" /> <Key latin:keySpec="\?" - latin:moreKeys="!text/more_keys_for_question" /> + latin:moreKeys="!text/morekeys_question" /> </merge> diff --git a/java/res/xml-sw600dp/keys_pcqwerty4_right3.xml b/java/res/xml-sw600dp/keys_pcqwerty4_right3.xml index ff1a2c85c..9ac718cd8 100644 --- a/java/res/xml-sw600dp/keys_pcqwerty4_right3.xml +++ b/java/res/xml-sw600dp/keys_pcqwerty4_right3.xml @@ -40,7 +40,7 @@ latin:keyHintLabel="\?" latin:additionalMoreKeys="\?" latin:keyStyle="hasShiftedLetterHintStyle" - latin:moreKeys="!text/more_keys_for_question" /> + latin:moreKeys="!text/morekeys_question" /> </case> <!-- keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted" --> <default> @@ -58,7 +58,7 @@ latin:moreKeys="!fixedColumnOrder!3,›,≥,»" /> <Key latin:keySpec="\?" - latin:moreKeys="!text/more_keys_for_question" /> + latin:moreKeys="!text/morekeys_question" /> </default> </switch> </merge> diff --git a/java/res/xml-sw600dp/rowkeys_dvorak3.xml b/java/res/xml-sw600dp/rowkeys_dvorak3.xml index edc68a3af..e58d6dbef 100644 --- a/java/res/xml-sw600dp/rowkeys_dvorak3.xml +++ b/java/res/xml-sw600dp/rowkeys_dvorak3.xml @@ -25,10 +25,10 @@ latin:keySpec="q" /> <Key latin:keySpec="j" - latin:moreKeys="!text/more_keys_for_j" /> + latin:moreKeys="!text/morekeys_j" /> <Key latin:keySpec="k" - latin:moreKeys="!text/more_keys_for_k" /> + latin:moreKeys="!text/morekeys_k" /> <Key latin:keySpec="x" /> <Key @@ -37,11 +37,11 @@ latin:keySpec="m" /> <Key latin:keySpec="w" - latin:moreKeys="!text/more_keys_for_w" /> + latin:moreKeys="!text/morekeys_w" /> <Key latin:keySpec="v" - latin:moreKeys="!text/more_keys_for_v" /> + latin:moreKeys="!text/morekeys_v" /> <Key latin:keySpec="z" - latin:moreKeys="!text/more_keys_for_z" /> + latin:moreKeys="!text/morekeys_z" /> </merge> diff --git a/java/res/xml-sw600dp/rowkeys_pcqwerty1.xml b/java/res/xml-sw600dp/rowkeys_pcqwerty1.xml index 5c7506ea6..e4b824f80 100644 --- a/java/res/xml-sw600dp/rowkeys_pcqwerty1.xml +++ b/java/res/xml-sw600dp/rowkeys_pcqwerty1.xml @@ -35,61 +35,61 @@ latin:keyHintLabel="!" latin:additionalMoreKeys="!" latin:keyStyle="hasShiftedLetterHintStyle" - latin:moreKeys="!text/more_keys_for_exclamation,!text/more_keys_for_symbols_1" /> + latin:moreKeys="!text/morekeys_exclamation,!text/morekeys_symbols_1" /> <Key latin:keySpec="2" latin:keyHintLabel="\@" latin:additionalMoreKeys="\@" latin:keyStyle="hasShiftedLetterHintStyle" - latin:moreKeys="!text/more_keys_for_symbols_2" /> + latin:moreKeys="!text/morekeys_symbols_2" /> <Key latin:keySpec="3" latin:keyHintLabel="\#" latin:additionalMoreKeys="\#" latin:keyStyle="hasShiftedLetterHintStyle" - latin:moreKeys="!text/more_keys_for_symbols_3" /> + latin:moreKeys="!text/morekeys_symbols_3" /> <Key latin:keySpec="4" latin:keyHintLabel="$" latin:additionalMoreKeys="$" latin:keyStyle="hasShiftedLetterHintStyle" - latin:moreKeys="!text/more_keys_for_symbols_4" /> + latin:moreKeys="!text/morekeys_symbols_4" /> <Key latin:keySpec="5" latin:keyHintLabel="%" latin:additionalMoreKeys="\\%" latin:keyStyle="hasShiftedLetterHintStyle" - latin:moreKeys="!text/more_keys_for_symbols_5" /> + latin:moreKeys="!text/morekeys_symbols_5" /> <Key latin:keySpec="6" latin:keyHintLabel="^" latin:additionalMoreKeys="^" latin:keyStyle="hasShiftedLetterHintStyle" - latin:moreKeys="!text/more_keys_for_symbols_6" /> + latin:moreKeys="!text/morekeys_symbols_6" /> <Key latin:keySpec="7" latin:keyHintLabel="&" latin:additionalMoreKeys="&" latin:keyStyle="hasShiftedLetterHintStyle" - latin:moreKeys="!text/more_keys_for_symbols_7" /> + latin:moreKeys="!text/morekeys_symbols_7" /> <Key latin:keySpec="8" latin:keyHintLabel="*" latin:additionalMoreKeys="*" latin:keyStyle="hasShiftedLetterHintStyle" - latin:moreKeys="!text/more_keys_for_symbols_8" /> + latin:moreKeys="!text/morekeys_symbols_8" /> <Key latin:keySpec="9" latin:keyHintLabel="(" latin:additionalMoreKeys="(" latin:keyStyle="hasShiftedLetterHintStyle" - latin:moreKeys="!text/more_keys_for_symbols_9" /> + latin:moreKeys="!text/morekeys_symbols_9" /> <Key latin:keySpec="0" latin:keyHintLabel=")" latin:additionalMoreKeys=")" latin:keyStyle="hasShiftedLetterHintStyle" - latin:moreKeys="!text/more_keys_for_symbols_0" /> + latin:moreKeys="!text/morekeys_symbols_0" /> <!-- U+2013: "–" EN DASH U+2014: "—" EM DASH U+00B7: "·" MIDDLE DOT --> diff --git a/java/res/xml-sw600dp/rows_number_normal.xml b/java/res/xml-sw600dp/rows_number_normal.xml index 15f4cde08..757e77933 100644 --- a/java/res/xml-sw600dp/rows_number_normal.xml +++ b/java/res/xml-sw600dp/rows_number_normal.xml @@ -69,7 +69,7 @@ <Key latin:keySpec="," latin:keyLabelFlags="hasPopupHint" - latin:moreKeys="!text/more_keys_for_am_pm" + latin:moreKeys="!text/morekeys_am_pm" latin:keyStyle="numKeyStyle" latin:keyWidth="10%p" latin:backgroundType="functional" /> diff --git a/java/res/xml/key_f1.xml b/java/res/xml/key_f1.xml index 0a89fe3fb..c96ddcac1 100644 --- a/java/res/xml/key_f1.xml +++ b/java/res/xml/key_f1.xml @@ -40,7 +40,7 @@ latin:supportsSwitchingToShortcutIme="false" > <Key - latin:keySpec="!text/keylabel_for_comma" + latin:keySpec="!text/keyspec_comma" latin:keyLabelFlags="hasPopupHint" latin:keyStyle="f1MoreKeysStyle" /> </case> @@ -54,9 +54,9 @@ <!-- latin:hasShortcutKey="false" --> <default> <Key - latin:keySpec="!text/keylabel_for_comma" + latin:keySpec="!text/keyspec_comma" latin:keyLabelFlags="hasPopupHint" - latin:additionalMoreKeys="!text/shortcut_as_more_key" + latin:additionalMoreKeys="!text/keyspec_shortcut" latin:keyStyle="f1MoreKeysStyle" /> </default> </switch> diff --git a/java/res/xml/key_period.xml b/java/res/xml/key_period.xml index edb4f9456..ce23e2256 100644 --- a/java/res/xml/key_period.xml +++ b/java/res/xml/key_period.xml @@ -34,15 +34,15 @@ <Key latin:keyStyle="baseKeyDevanagariSignVirama" latin:keyLabelFlags="hasPopupHint" - latin:moreKeys="!text/more_keys_for_punctuation" + latin:moreKeys="!text/morekeys_punctuation" latin:backgroundType="functional" /> </case> <default> <Key - latin:keySpec="!text/keylabel_for_period" - latin:keyHintLabel="!text/keyhintlabel_for_period" + latin:keySpec="!text/keyspec_period" + latin:keyHintLabel="!text/keyhintlabel_period" latin:keyLabelFlags="hasPopupHint|hasShiftedLetterHint" - latin:moreKeys="!text/more_keys_for_period" + latin:moreKeys="!text/morekeys_period" latin:backgroundType="functional" /> </default> </switch> diff --git a/java/res/xml/key_styles_common.xml b/java/res/xml/key_styles_common.xml index 2330ecb7f..78e030132 100644 --- a/java/res/xml/key_styles_common.xml +++ b/java/res/xml/key_styles_common.xml @@ -133,24 +133,24 @@ latin:backgroundType="functional" /> <key-style latin:styleName="toSymbolKeyStyle" - latin:keySpec="!text/label_to_symbol_key|!code/key_switch_alpha_symbol" + latin:keySpec="!text/keylabel_to_symbol|!code/key_switch_alpha_symbol" latin:parentStyle="baseForLayoutSwitchKeyStyle" /> <key-style latin:styleName="toAlphaKeyStyle" - latin:keySpec="!text/label_to_alpha_key|!code/key_switch_alpha_symbol" + latin:keySpec="!text/keylabel_to_alpha|!code/key_switch_alpha_symbol" latin:parentStyle="baseForLayoutSwitchKeyStyle" /> <key-style latin:styleName="toMoreSymbolKeyStyle" - latin:keySpec="!text/label_to_more_symbol_key|!code/key_shift" + latin:keySpec="!text/keylabel_to_more_symbol|!code/key_shift" latin:parentStyle="baseForLayoutSwitchKeyStyle" /> <key-style latin:styleName="backFromMoreSymbolKeyStyle" - latin:keySpec="!text/label_to_symbol_key|!code/key_shift" + latin:keySpec="!text/keylabel_to_symbol|!code/key_shift" latin:parentStyle="baseForLayoutSwitchKeyStyle" /> <key-style latin:styleName="comKeyStyle" - latin:keySpec="!text/keylabel_for_popular_domain" + latin:keySpec="!text/keyspec_popular_domain" latin:keyLabelFlags="autoXScale|fontNormal|hasPopupHint|preserveCase" - latin:moreKeys="!text/more_keys_for_popular_domain" + latin:moreKeys="!text/morekeys_popular_domain" latin:backgroundType="functional" /> </merge> diff --git a/java/res/xml/key_styles_currency.xml b/java/res/xml/key_styles_currency.xml index 0888cc357..29e2eae3d 100644 --- a/java/res/xml/key_styles_currency.xml +++ b/java/res/xml/key_styles_currency.xml @@ -113,8 +113,8 @@ U+00A2: "¢" CENT SIGN --> <key-style latin:styleName="currencyKeyStyle" - latin:keySpec="!text/keylabel_for_currency" - latin:moreKeys="!text/more_keys_for_currency" /> + latin:keySpec="!text/keyspec_currency" + latin:moreKeys="!text/morekeys_currency" /> <key-style latin:styleName="moreCurrency1KeyStyle" latin:keySpec="£" /> diff --git a/java/res/xml/key_styles_currency_dollar.xml b/java/res/xml/key_styles_currency_dollar.xml index a02c9bfa1..d3211bd69 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:keySpec="$" - latin:moreKeys="!text/more_keys_for_currency_dollar" /> + latin:moreKeys="!text/morekeys_currency_dollar" /> <key-style latin:styleName="moreCurrency1KeyStyle" latin:keySpec="£" /> diff --git a/java/res/xml/key_styles_enter.xml b/java/res/xml/key_styles_enter.xml index 64d09b107..acb27abb1 100644 --- a/java/res/xml/key_styles_enter.xml +++ b/java/res/xml/key_styles_enter.xml @@ -21,7 +21,7 @@ <merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > - <!-- TODO: Stop using many conditional cases for emoji_key_as_more_key. There are way too many to maintain. --> + <!-- TODO: Stop using many conditional cases for keyspec_emoji_key. There are way too many to maintain. --> <!-- Navigate more keys style --> <switch> <!-- latin:passwordInput="true" --> @@ -33,7 +33,7 @@ <key-style latin:styleName="navigateMoreKeysStyle" latin:keyLabelFlags="hasPopupHint|preserveCase" - latin:moreKeys="!text/action_previous_as_more_key" /> + latin:moreKeys="!text/keyspec_action_previous" /> </case> <case latin:imeAction="actionNext" @@ -51,7 +51,7 @@ <key-style latin:styleName="navigateMoreKeysStyle" latin:keyLabelFlags="hasPopupHint|preserveCase" - latin:moreKeys="!text/action_next_as_more_key" /> + latin:moreKeys="!text/keyspec_action_next" /> </case> <case latin:imeAction="actionPrevious" @@ -69,7 +69,7 @@ <key-style latin:styleName="navigateMoreKeysStyle" latin:keyLabelFlags="hasPopupHint|preserveCase" - latin:moreKeys="!fixedColumnOrder!2,!needsDividers!,!text/action_previous_as_more_key,!text/action_next_as_more_key" /> + latin:moreKeys="!fixedColumnOrder!2,!needsDividers!,!text/keyspec_action_previous,!text/keyspec_action_next" /> </case> <case latin:navigateNext="true" @@ -79,7 +79,7 @@ <key-style latin:styleName="navigateMoreKeysStyle" latin:keyLabelFlags="hasPopupHint|preserveCase" - latin:moreKeys="!text/action_next_as_more_key" /> + latin:moreKeys="!text/keyspec_action_next" /> </case> <case latin:navigateNext="false" @@ -89,7 +89,7 @@ <key-style latin:styleName="navigateMoreKeysStyle" latin:keyLabelFlags="hasPopupHint|preserveCase" - latin:moreKeys="!text/action_previous_as_more_key" /> + latin:moreKeys="!text/keyspec_action_previous" /> </case> <case latin:navigateNext="false" @@ -108,7 +108,7 @@ <key-style latin:styleName="navigateMoreKeysStyle" latin:keyLabelFlags="hasPopupHint|preserveCase" - latin:moreKeys="!text/action_previous_as_more_key" /> + latin:moreKeys="!text/keyspec_action_previous" /> </case> <case latin:imeAction="actionNext" @@ -126,7 +126,7 @@ <key-style latin:styleName="navigateMoreKeysStyle" latin:keyLabelFlags="hasPopupHint|preserveCase" - latin:moreKeys="!text/action_next_as_more_key" /> + latin:moreKeys="!text/keyspec_action_next" /> </case> <case latin:imeAction="actionPrevious" @@ -144,7 +144,7 @@ <key-style latin:styleName="navigateMoreKeysStyle" latin:keyLabelFlags="hasPopupHint|preserveCase" - latin:moreKeys="!fixedColumnOrder!2,!needsDividers!,!text/action_previous_as_more_key,!text/action_next_as_more_key" /> + latin:moreKeys="!fixedColumnOrder!2,!needsDividers!,!text/keyspec_action_previous,!text/keyspec_action_next" /> </case> <case latin:navigateNext="true" @@ -154,7 +154,7 @@ <key-style latin:styleName="navigateMoreKeysStyle" latin:keyLabelFlags="hasPopupHint|preserveCase" - latin:moreKeys="!text/action_next_as_more_key" /> + latin:moreKeys="!text/keyspec_action_next" /> </case> <case latin:navigateNext="false" @@ -164,7 +164,7 @@ <key-style latin:styleName="navigateMoreKeysStyle" latin:keyLabelFlags="hasPopupHint|preserveCase" - latin:moreKeys="!text/action_previous_as_more_key" /> + latin:moreKeys="!text/keyspec_action_previous" /> </case> <case latin:navigateNext="false" @@ -182,7 +182,7 @@ <key-style latin:styleName="navigateMoreKeysStyle" latin:keyLabelFlags="hasPopupHint|preserveCase" - latin:moreKeys="!fixedColumnOrder!2,!needsDividers!,!text/emoji_key_as_more_key,!text/action_previous_as_more_key" /> + latin:moreKeys="!fixedColumnOrder!2,!needsDividers!,!text/keyspec_emoji_key,!text/keyspec_action_previous" /> </case> <case latin:imeAction="actionNext" @@ -191,7 +191,7 @@ <key-style latin:styleName="navigateMoreKeysStyle" latin:keyLabelFlags="hasPopupHint|preserveCase" - latin:moreKeys="!text/emoji_key_as_more_key" /> + latin:moreKeys="!text/keyspec_emoji_key" /> </case> <case latin:imeAction="actionPrevious" @@ -200,7 +200,7 @@ <key-style latin:styleName="navigateMoreKeysStyle" latin:keyLabelFlags="hasPopupHint|preserveCase" - latin:moreKeys="!fixedColumnOrder!2,!needsDividers!,!text/emoji_key_as_more_key,!text/action_next_as_more_key" /> + latin:moreKeys="!fixedColumnOrder!2,!needsDividers!,!text/keyspec_emoji_key,!text/keyspec_action_next" /> </case> <case latin:imeAction="actionPrevious" @@ -209,7 +209,7 @@ <key-style latin:styleName="navigateMoreKeysStyle" latin:keyLabelFlags="hasPopupHint|preserveCase" - latin:moreKeys="!text/emoji_key_as_more_key" /> + latin:moreKeys="!text/keyspec_emoji_key" /> </case> <case latin:navigateNext="true" @@ -218,7 +218,7 @@ <key-style latin:styleName="navigateMoreKeysStyle" latin:keyLabelFlags="hasPopupHint|preserveCase" - latin:moreKeys="!fixedColumnOrder!3,!needsDividers!,!text/emoji_key_as_more_key,!text/action_previous_as_more_key,!text/action_next_as_more_key" /> + latin:moreKeys="!fixedColumnOrder!3,!needsDividers!,!text/keyspec_emoji_key,!text/keyspec_action_previous,!text/keyspec_action_next" /> </case> <case latin:navigateNext="true" @@ -227,7 +227,7 @@ <key-style latin:styleName="navigateMoreKeysStyle" latin:keyLabelFlags="hasPopupHint|preserveCase" - latin:moreKeys="!fixedColumnOrder!2,!needsDividers!,!text/emoji_key_as_more_key,!text/action_next_as_more_key" /> + latin:moreKeys="!fixedColumnOrder!2,!needsDividers!,!text/keyspec_emoji_key,!text/keyspec_action_next" /> </case> <case latin:navigateNext="false" @@ -236,7 +236,7 @@ <key-style latin:styleName="navigateMoreKeysStyle" latin:keyLabelFlags="hasPopupHint|preserveCase" - latin:moreKeys="!fixedColumnOrder!2,!needsDividers!,!text/emoji_key_as_more_key,!text/action_previous_as_more_key" /> + latin:moreKeys="!fixedColumnOrder!2,!needsDividers!,!text/keyspec_emoji_key,!text/keyspec_action_previous" /> </case> <case latin:navigateNext="false" @@ -245,7 +245,7 @@ <key-style latin:styleName="navigateMoreKeysStyle" latin:keyLabelFlags="hasPopupHint|preserveCase" - latin:moreKeys="!text/emoji_key_as_more_key" /> + latin:moreKeys="!text/keyspec_emoji_key" /> </case> <default> <key-style diff --git a/java/res/xml/key_styles_f1.xml b/java/res/xml/key_styles_f1.xml index 8dfc3cb84..8a07827fa 100644 --- a/java/res/xml/key_styles_f1.xml +++ b/java/res/xml/key_styles_f1.xml @@ -36,7 +36,7 @@ <key-style latin:styleName="f1MoreKeysStyle" latin:keyLabelFlags="hasPopupHint" - latin:moreKeys="!text/settings_as_more_key" + latin:moreKeys="!text/keyspec_settings" latin:backgroundType="functional" /> </default> </switch> diff --git a/java/res/xml/key_styles_number.xml b/java/res/xml/key_styles_number.xml index 7136e1070..5c108cf58 100644 --- a/java/res/xml/key_styles_number.xml +++ b/java/res/xml/key_styles_number.xml @@ -97,11 +97,11 @@ <!-- Only for non-tablet device --> <key-style latin:styleName="numPhoneToSymbolKeyStyle" - latin:keySpec="!text/label_to_phone_symbols_key|!code/key_switch_alpha_symbol" + latin:keySpec="!text/keylabel_to_phone_symbols|!code/key_switch_alpha_symbol" latin:parentStyle="numModeKeyStyle" /> <key-style latin:styleName="numPhoneToNumericKeyStyle" - latin:keySpec="!text/label_to_phone_numeric_key|!code/key_switch_alpha_symbol" + latin:keySpec="!text/keylabel_to_phone_numeric|!code/key_switch_alpha_symbol" latin:parentStyle="numModeKeyStyle" /> <key-style latin:styleName="numPauseKeyStyle" diff --git a/java/res/xml/keys_comma_period_symbols.xml b/java/res/xml/keys_comma_period_symbols.xml index 53c3343da..843595c27 100644 --- a/java/res/xml/keys_comma_period_symbols.xml +++ b/java/res/xml/keys_comma_period_symbols.xml @@ -22,7 +22,7 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Key - latin:keySpec="!text/keylabel_for_comma" /> + latin:keySpec="!text/keyspec_comma" /> <!-- U+2026: "…" HORIZONTAL ELLIPSIS --> <Key latin:keySpec="." diff --git a/java/res/xml/keys_less_greater.xml b/java/res/xml/keys_less_greater.xml index 46f4e4b4c..778de02a1 100644 --- a/java/res/xml/keys_less_greater.xml +++ b/java/res/xml/keys_less_greater.xml @@ -28,21 +28,21 @@ <Key latin:keySpec="!text/keyspec_left_double_angle_quote" latin:backgroundType="functional" - latin:moreKeys="!text/more_keys_for_less_than" /> + latin:moreKeys="!text/morekeys_less_than" /> <Key latin:keySpec="!text/keyspec_right_double_angle_quote" latin:backgroundType="functional" - latin:moreKeys="!text/more_keys_for_greater_than" /> + latin:moreKeys="!text/morekeys_greater_than" /> </case> <default> <Key latin:keySpec="!text/keyspec_less_than" latin:backgroundType="functional" - latin:moreKeys="!text/more_keys_for_less_than" /> + latin:moreKeys="!text/morekeys_less_than" /> <Key latin:keySpec="!text/keyspec_greater_than" latin:backgroundType="functional" - latin:moreKeys="!text/more_keys_for_greater_than" /> + latin:moreKeys="!text/morekeys_greater_than" /> </default> </switch> </merge> diff --git a/java/res/xml/keys_parentheses.xml b/java/res/xml/keys_parentheses.xml index 73105d837..320b109a8 100644 --- a/java/res/xml/keys_parentheses.xml +++ b/java/res/xml/keys_parentheses.xml @@ -23,8 +23,8 @@ > <Key latin:keySpec="!text/keyspec_left_parenthesis" - latin:moreKeys="!text/more_keys_for_left_parenthesis" /> + latin:moreKeys="!text/morekeys_left_parenthesis" /> <Key latin:keySpec="!text/keyspec_right_parenthesis" - latin:moreKeys="!text/more_keys_for_right_parenthesis" /> + latin:moreKeys="!text/morekeys_right_parenthesis" /> </merge> diff --git a/java/res/xml/keys_pcqwerty4_right3.xml b/java/res/xml/keys_pcqwerty4_right3.xml index 6beba2041..a87f550f7 100644 --- a/java/res/xml/keys_pcqwerty4_right3.xml +++ b/java/res/xml/keys_pcqwerty4_right3.xml @@ -34,7 +34,7 @@ <Key latin:keySpec="/" latin:additionalMoreKeys="\?" - latin:moreKeys="!text/more_keys_for_question" /> + latin:moreKeys="!text/morekeys_question" /> </case> <!-- keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted" --> <default> @@ -52,7 +52,7 @@ latin:moreKeys="!fixedColumnOrder!3,›,≥,»" /> <Key latin:keySpec="\?" - latin:moreKeys="!text/more_keys_for_question" /> + latin:moreKeys="!text/morekeys_question" /> </default> </switch> </merge> diff --git a/java/res/xml/row_dvorak4.xml b/java/res/xml/row_dvorak4.xml index 0658079b2..91462cb9c 100644 --- a/java/res/xml/row_dvorak4.xml +++ b/java/res/xml/row_dvorak4.xml @@ -30,7 +30,7 @@ <Key latin:keySpec="q" latin:backgroundType="normal" - latin:additionalMoreKeys="!text/shortcut_as_more_key" + latin:additionalMoreKeys="!text/keyspec_shortcut" latin:keyStyle="f1MoreKeysStyle" /> <include latin:keyXPos="25%p" @@ -38,7 +38,7 @@ <Key latin:keySpec="z" latin:keyLabelFlags="hasPopupHint" - latin:moreKeys="!text/more_keys_for_punctuation,!text/more_keys_for_z" /> + latin:moreKeys="!text/morekeys_punctuation,!text/morekeys_z" /> <Key latin:keyStyle="enterKeyStyle" latin:keyWidth="fillRight" /> diff --git a/java/res/xml/rowkeys_azerty1.xml b/java/res/xml/rowkeys_azerty1.xml index adb66b70f..67be342c0 100644 --- a/java/res/xml/rowkeys_azerty1.xml +++ b/java/res/xml/rowkeys_azerty1.xml @@ -25,47 +25,47 @@ latin:keySpec="a" latin:keyHintLabel="1" latin:additionalMoreKeys="1" - latin:moreKeys="!text/more_keys_for_a" /> + latin:moreKeys="!text/morekeys_a" /> <Key latin:keySpec="z" latin:keyHintLabel="2" latin:additionalMoreKeys="2" - latin:moreKeys="!text/more_keys_for_z" /> + latin:moreKeys="!text/morekeys_z" /> <Key latin:keySpec="e" latin:keyHintLabel="3" latin:additionalMoreKeys="3" - latin:moreKeys="!text/more_keys_for_e" /> + latin:moreKeys="!text/morekeys_e" /> <Key latin:keySpec="r" latin:keyHintLabel="4" latin:additionalMoreKeys="4" - latin:moreKeys="!text/more_keys_for_r" /> + latin:moreKeys="!text/morekeys_r" /> <Key latin:keySpec="t" latin:keyHintLabel="5" latin:additionalMoreKeys="5" - latin:moreKeys="!text/more_keys_for_t" /> + latin:moreKeys="!text/morekeys_t" /> <Key latin:keySpec="y" latin:keyHintLabel="6" latin:additionalMoreKeys="6" - latin:moreKeys="!text/more_keys_for_y" /> + latin:moreKeys="!text/morekeys_y" /> <Key latin:keySpec="u" latin:keyHintLabel="7" latin:additionalMoreKeys="7" - latin:moreKeys="!text/more_keys_for_u" /> + latin:moreKeys="!text/morekeys_u" /> <Key latin:keySpec="i" latin:keyHintLabel="8" latin:additionalMoreKeys="8" - latin:moreKeys="!text/more_keys_for_i" /> + latin:moreKeys="!text/morekeys_i" /> <Key latin:keySpec="o" latin:keyHintLabel="9" latin:additionalMoreKeys="9" - latin:moreKeys="!text/more_keys_for_o" /> + latin:moreKeys="!text/morekeys_o" /> <Key latin:keySpec="p" latin:keyHintLabel="0" diff --git a/java/res/xml/rowkeys_azerty2.xml b/java/res/xml/rowkeys_azerty2.xml index db0686721..116417f08 100644 --- a/java/res/xml/rowkeys_azerty2.xml +++ b/java/res/xml/rowkeys_azerty2.xml @@ -25,27 +25,27 @@ latin:keySpec="q" /> <Key latin:keySpec="s" - latin:moreKeys="!text/more_keys_for_s" /> + latin:moreKeys="!text/morekeys_s" /> <Key latin:keySpec="d" - latin:moreKeys="!text/more_keys_for_d" /> + latin:moreKeys="!text/morekeys_d" /> <Key latin:keySpec="f" /> <Key latin:keySpec="g" - latin:moreKeys="!text/more_keys_for_g" /> + latin:moreKeys="!text/morekeys_g" /> <Key latin:keySpec="h" - latin:moreKeys="!text/more_keys_for_h" /> + latin:moreKeys="!text/morekeys_h" /> <Key latin:keySpec="j" - latin:moreKeys="!text/more_keys_for_j" /> + latin:moreKeys="!text/morekeys_j" /> <Key latin:keySpec="k" - latin:moreKeys="!text/more_keys_for_k" /> + latin:moreKeys="!text/morekeys_k" /> <Key latin:keySpec="l" - latin:moreKeys="!text/more_keys_for_l" /> + latin:moreKeys="!text/morekeys_l" /> <Key latin:keySpec="m" /> </merge> diff --git a/java/res/xml/rowkeys_azerty3.xml b/java/res/xml/rowkeys_azerty3.xml index c955e237c..48d3a5280 100644 --- a/java/res/xml/rowkeys_azerty3.xml +++ b/java/res/xml/rowkeys_azerty3.xml @@ -23,20 +23,20 @@ > <Key latin:keySpec="w" - latin:moreKeys="!text/more_keys_for_w" /> + latin:moreKeys="!text/morekeys_w" /> <Key latin:keySpec="x" /> <Key latin:keySpec="c" - latin:moreKeys="!text/more_keys_for_c" /> + latin:moreKeys="!text/morekeys_c" /> <Key latin:keySpec="v" - latin:moreKeys="!text/more_keys_for_v" /> + latin:moreKeys="!text/morekeys_v" /> <Key latin:keySpec="b" /> <Key latin:keySpec="n" - latin:moreKeys="!text/more_keys_for_n" /> + latin:moreKeys="!text/morekeys_n" /> <switch> <case latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLockShifted" @@ -47,7 +47,7 @@ <default> <Key latin:keySpec="\'" - latin:moreKeys="!text/more_keys_for_single_quote" /> + latin:moreKeys="!text/morekeys_single_quote" /> </default> </switch> </merge> diff --git a/java/res/xml/rowkeys_colemak1.xml b/java/res/xml/rowkeys_colemak1.xml index 2f2ade4d3..199d285f9 100644 --- a/java/res/xml/rowkeys_colemak1.xml +++ b/java/res/xml/rowkeys_colemak1.xml @@ -29,7 +29,7 @@ latin:keySpec="w" latin:keyHintLabel="2" latin:additionalMoreKeys="2" - latin:moreKeys="!text/more_keys_for_w" /> + latin:moreKeys="!text/morekeys_w" /> <Key latin:keySpec="f" latin:keyHintLabel="3" @@ -42,27 +42,27 @@ latin:keySpec="g" latin:keyHintLabel="5" latin:additionalMoreKeys="5" - latin:moreKeys="!text/more_keys_for_g" /> + latin:moreKeys="!text/morekeys_g" /> <Key latin:keySpec="j" latin:keyHintLabel="6" latin:additionalMoreKeys="6" - latin:moreKeys="!text/more_keys_for_j" /> + latin:moreKeys="!text/morekeys_j" /> <Key latin:keySpec="l" latin:keyHintLabel="7" latin:additionalMoreKeys="7" - latin:moreKeys="!text/more_keys_for_l" /> + latin:moreKeys="!text/morekeys_l" /> <Key latin:keySpec="u" latin:keyHintLabel="8" latin:additionalMoreKeys="8" - latin:moreKeys="!text/more_keys_for_u" /> + latin:moreKeys="!text/morekeys_u" /> <Key latin:keySpec="y" latin:keyHintLabel="9" latin:additionalMoreKeys="9" - latin:moreKeys="!text/more_keys_for_y" /> + latin:moreKeys="!text/morekeys_y" /> <switch> <case latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLockShifted" diff --git a/java/res/xml/rowkeys_colemak2.xml b/java/res/xml/rowkeys_colemak2.xml index 644d845bf..a8e93bf0e 100644 --- a/java/res/xml/rowkeys_colemak2.xml +++ b/java/res/xml/rowkeys_colemak2.xml @@ -23,32 +23,32 @@ > <Key latin:keySpec="a" - latin:moreKeys="!text/more_keys_for_a" /> + latin:moreKeys="!text/morekeys_a" /> <Key latin:keySpec="r" - latin:moreKeys="!text/more_keys_for_r" /> + latin:moreKeys="!text/morekeys_r" /> <Key latin:keySpec="s" - latin:moreKeys="!text/more_keys_for_s" /> + latin:moreKeys="!text/morekeys_s" /> <Key latin:keySpec="t" - latin:moreKeys="!text/more_keys_for_t" /> + latin:moreKeys="!text/morekeys_t" /> <Key latin:keySpec="d" - latin:moreKeys="!text/more_keys_for_d" /> + latin:moreKeys="!text/morekeys_d" /> <Key latin:keySpec="h" - latin:moreKeys="!text/more_keys_for_h" /> + latin:moreKeys="!text/morekeys_h" /> <Key latin:keySpec="n" - latin:moreKeys="!text/more_keys_for_n" /> + latin:moreKeys="!text/morekeys_n" /> <Key latin:keySpec="e" - latin:moreKeys="!text/more_keys_for_e" /> + latin:moreKeys="!text/morekeys_e" /> <Key latin:keySpec="i" - latin:moreKeys="!text/more_keys_for_i" /> + latin:moreKeys="!text/morekeys_i" /> <Key latin:keySpec="o" - latin:moreKeys="!text/more_keys_for_o" /> + latin:moreKeys="!text/morekeys_o" /> </merge> diff --git a/java/res/xml/rowkeys_colemak3.xml b/java/res/xml/rowkeys_colemak3.xml index 946910cb5..df4d9936e 100644 --- a/java/res/xml/rowkeys_colemak3.xml +++ b/java/res/xml/rowkeys_colemak3.xml @@ -23,20 +23,20 @@ > <Key latin:keySpec="z" - latin:moreKeys="!text/more_keys_for_z" /> + latin:moreKeys="!text/morekeys_z" /> <Key latin:keySpec="x" /> <Key latin:keySpec="c" - latin:moreKeys="!text/more_keys_for_c" /> + latin:moreKeys="!text/morekeys_c" /> <Key latin:keySpec="v" - latin:moreKeys="!text/more_keys_for_v" /> + latin:moreKeys="!text/morekeys_v" /> <Key latin:keySpec="b" /> <Key latin:keySpec="k" - latin:moreKeys="!text/more_keys_for_k" /> + latin:moreKeys="!text/morekeys_k" /> <Key latin:keySpec="m" /> </merge> diff --git a/java/res/xml/rowkeys_dvorak1.xml b/java/res/xml/rowkeys_dvorak1.xml index 831bfafff..170e31664 100644 --- a/java/res/xml/rowkeys_dvorak1.xml +++ b/java/res/xml/rowkeys_dvorak1.xml @@ -31,7 +31,7 @@ latin:keySpec="y" latin:keyHintLabel="5" latin:additionalMoreKeys="5" - latin:moreKeys="!text/more_keys_for_y" /> + latin:moreKeys="!text/morekeys_y" /> <Key latin:keySpec="f" latin:keyHintLabel="6" @@ -40,20 +40,20 @@ latin:keySpec="g" latin:keyHintLabel="7" latin:additionalMoreKeys="7" - latin:moreKeys="!text/more_keys_for_g" /> + latin:moreKeys="!text/morekeys_g" /> <Key latin:keySpec="c" latin:keyHintLabel="8" latin:additionalMoreKeys="8" - latin:moreKeys="!text/more_keys_for_c" /> + latin:moreKeys="!text/morekeys_c" /> <Key latin:keySpec="r" latin:keyHintLabel="9" latin:additionalMoreKeys="9" - latin:moreKeys="!text/more_keys_for_r" /> + latin:moreKeys="!text/morekeys_r" /> <Key latin:keySpec="l" latin:keyHintLabel="0" latin:additionalMoreKeys="0" - latin:moreKeys="!text/more_keys_for_l" /> + latin:moreKeys="!text/morekeys_l" /> </merge> diff --git a/java/res/xml/rowkeys_dvorak2.xml b/java/res/xml/rowkeys_dvorak2.xml index 7c734730a..0840a6cfc 100644 --- a/java/res/xml/rowkeys_dvorak2.xml +++ b/java/res/xml/rowkeys_dvorak2.xml @@ -23,32 +23,32 @@ > <Key latin:keySpec="a" - latin:moreKeys="!text/more_keys_for_a" /> + latin:moreKeys="!text/morekeys_a" /> <Key latin:keySpec="o" - latin:moreKeys="!text/more_keys_for_o" /> + latin:moreKeys="!text/morekeys_o" /> <Key latin:keySpec="e" - latin:moreKeys="!text/more_keys_for_e" /> + latin:moreKeys="!text/morekeys_e" /> <Key latin:keySpec="u" - latin:moreKeys="!text/more_keys_for_u" /> + latin:moreKeys="!text/morekeys_u" /> <Key latin:keySpec="i" - latin:moreKeys="!text/more_keys_for_i" /> + latin:moreKeys="!text/morekeys_i" /> <Key latin:keySpec="d" - latin:moreKeys="!text/more_keys_for_d" /> + latin:moreKeys="!text/morekeys_d" /> <Key latin:keySpec="h" - latin:moreKeys="!text/more_keys_for_h" /> + latin:moreKeys="!text/morekeys_h" /> <Key latin:keySpec="t" - latin:moreKeys="!text/more_keys_for_t" /> + latin:moreKeys="!text/morekeys_t" /> <Key latin:keySpec="n" - latin:moreKeys="!text/more_keys_for_n" /> + latin:moreKeys="!text/morekeys_n" /> <Key latin:keySpec="s" - latin:moreKeys="!text/more_keys_for_s" /> + latin:moreKeys="!text/morekeys_s" /> </merge> diff --git a/java/res/xml/rowkeys_dvorak3.xml b/java/res/xml/rowkeys_dvorak3.xml index a9da6b950..e53908c91 100644 --- a/java/res/xml/rowkeys_dvorak3.xml +++ b/java/res/xml/rowkeys_dvorak3.xml @@ -23,10 +23,10 @@ > <Key latin:keySpec="j" - latin:moreKeys="!text/more_keys_for_j" /> + latin:moreKeys="!text/morekeys_j" /> <Key latin:keySpec="k" - latin:moreKeys="!text/more_keys_for_k" /> + latin:moreKeys="!text/morekeys_k" /> <Key latin:keySpec="x" /> <Key @@ -35,8 +35,8 @@ latin:keySpec="m" /> <Key latin:keySpec="w" - latin:moreKeys="!text/more_keys_for_w" /> + latin:moreKeys="!text/morekeys_w" /> <Key latin:keySpec="v" - latin:moreKeys="!text/more_keys_for_v" /> + latin:moreKeys="!text/morekeys_v" /> </merge> diff --git a/java/res/xml/rowkeys_east_slavic1.xml b/java/res/xml/rowkeys_east_slavic1.xml index 7e95a8b35..88d95fffb 100644 --- a/java/res/xml/rowkeys_east_slavic1.xml +++ b/java/res/xml/rowkeys_east_slavic1.xml @@ -36,38 +36,38 @@ latin:keySpec="у" latin:keyHintLabel="3" latin:additionalMoreKeys="3" - latin:moreKeys="!text/more_keys_for_cyrillic_u" /> + latin:moreKeys="!text/morekeys_cyrillic_u" /> <!-- U+043A: "к" CYRILLIC SMALL LETTER KA --> <Key latin:keySpec="к" latin:keyHintLabel="4" latin:additionalMoreKeys="4" - latin:moreKeys="!text/more_keys_for_cyrillic_ka" /> + latin:moreKeys="!text/morekeys_cyrillic_ka" /> <!-- U+0435: "е" CYRILLIC SMALL LETTER IE --> <Key latin:keySpec="е" latin:keyHintLabel="5" latin:additionalMoreKeys="5" - latin:moreKeys="!text/more_keys_for_cyrillic_ie" /> + latin:moreKeys="!text/morekeys_cyrillic_ie" /> <!-- U+043D: "н" CYRILLIC SMALL LETTER EN --> <Key latin:keySpec="н" latin:keyHintLabel="6" latin:additionalMoreKeys="6" - latin:moreKeys="!text/more_keys_for_cyrillic_en" /> + latin:moreKeys="!text/morekeys_cyrillic_en" /> <!-- U+0433: "г" CYRILLIC SMALL LETTER GHE --> <Key latin:keySpec="г" latin:keyHintLabel="7" latin:additionalMoreKeys="7" - latin:moreKeys="!text/more_keys_for_cyrillic_ghe" /> + latin:moreKeys="!text/morekeys_cyrillic_ghe" /> <!-- U+0448: "ш" CYRILLIC SMALL LETTER SHA --> <Key latin:keySpec="ш" latin:keyHintLabel="8" latin:additionalMoreKeys="8" /> <Key - latin:keySpec="!text/keylabel_for_east_slavic_row1_9" + latin:keySpec="!text/keyspec_east_slavic_row1_9" latin:keyHintLabel="9" latin:additionalMoreKeys="9" /> <!-- U+0437: "з" CYRILLIC SMALL LETTER ZE --> diff --git a/java/res/xml/rowkeys_east_slavic2.xml b/java/res/xml/rowkeys_east_slavic2.xml index 060100006..21463fb7d 100644 --- a/java/res/xml/rowkeys_east_slavic2.xml +++ b/java/res/xml/rowkeys_east_slavic2.xml @@ -25,15 +25,15 @@ <Key latin:keySpec="ф" /> <Key - latin:keySpec="!text/keylabel_for_east_slavic_row2_2" - latin:moreKeys="!text/more_keys_for_east_slavic_row2_2" /> + latin:keySpec="!text/keyspec_east_slavic_row2_2" + latin:moreKeys="!text/morekeys_east_slavic_row2_2" /> <!-- U+0432: "в" CYRILLIC SMALL LETTER VE --> <Key latin:keySpec="в" /> <!-- U+0430: "а" CYRILLIC SMALL LETTER A --> <Key latin:keySpec="а" - latin:moreKeys="!text/more_keys_for_cyrillic_a" /> + latin:moreKeys="!text/morekeys_cyrillic_a" /> <!-- U+043F: "п" CYRILLIC SMALL LETTER PE --> <Key latin:keySpec="п" /> @@ -43,7 +43,7 @@ <!-- U+043E: "о" CYRILLIC SMALL LETTER O --> <Key latin:keySpec="о" - latin:moreKeys="!text/more_keys_for_cyrillic_o" /> + latin:moreKeys="!text/morekeys_cyrillic_o" /> <!-- U+043B: "л" CYRILLIC SMALL LETTER EL --> <Key latin:keySpec="л" /> @@ -54,6 +54,6 @@ <Key latin:keySpec="ж" /> <Key - latin:keySpec="!text/keylabel_for_east_slavic_row2_11" - latin:moreKeys="!text/more_keys_for_east_slavic_row2_11" /> + latin:keySpec="!text/keyspec_east_slavic_row2_11" + latin:moreKeys="!text/morekeys_east_slavic_row2_11" /> </merge> diff --git a/java/res/xml/rowkeys_east_slavic3.xml b/java/res/xml/rowkeys_east_slavic3.xml index b7d19b223..54802e878 100644 --- a/java/res/xml/rowkeys_east_slavic3.xml +++ b/java/res/xml/rowkeys_east_slavic3.xml @@ -34,14 +34,14 @@ <Key latin:keySpec="м" /> <Key - latin:keySpec="!text/keylabel_for_east_slavic_row3_5" /> + latin:keySpec="!text/keyspec_east_slavic_row3_5" /> <!-- U+0442: "т" CYRILLIC SMALL LETTER TE --> <Key latin:keySpec="т" /> <!-- U+044C: "ь" CYRILLIC SMALL LETTER SOFT SIGN --> <Key latin:keySpec="ь" - latin:moreKeys="!text/more_keys_for_cyrillic_soft_sign" /> + latin:moreKeys="!text/morekeys_cyrillic_soft_sign" /> <!-- U+0431: "б" CYRILLIC SMALL LETTER BE --> <Key latin:keySpec="б" /> diff --git a/java/res/xml/rowkeys_mongolian1.xml b/java/res/xml/rowkeys_mongolian1.xml index 4d3375545..2bd8097e2 100644 --- a/java/res/xml/rowkeys_mongolian1.xml +++ b/java/res/xml/rowkeys_mongolian1.xml @@ -36,7 +36,7 @@ latin:keySpec="у" latin:keyHintLabel="3" latin:additionalMoreKeys="3" - latin:moreKeys="!text/more_keys_for_cyrillic_u" /> + latin:moreKeys="!text/morekeys_cyrillic_u" /> <!-- U+0436: "ж" CYRILLIC SMALL LETTER ZHE --> <Key latin:keySpec="ж" @@ -47,19 +47,19 @@ latin:keySpec="э" latin:keyHintLabel="5" latin:additionalMoreKeys="5" - latin:moreKeys="!text/more_keys_for_cyrillic_ie" /> + latin:moreKeys="!text/morekeys_cyrillic_ie" /> <!-- U+043D: "н" CYRILLIC SMALL LETTER EN --> <Key latin:keySpec="н" latin:keyHintLabel="6" latin:additionalMoreKeys="6" - latin:moreKeys="!text/more_keys_for_cyrillic_en" /> + latin:moreKeys="!text/morekeys_cyrillic_en" /> <!-- U+0433: "г" CYRILLIC SMALL LETTER GHE --> <Key latin:keySpec="г" latin:keyHintLabel="7" latin:additionalMoreKeys="7" - latin:moreKeys="!text/more_keys_for_cyrillic_ghe" /> + latin:moreKeys="!text/morekeys_cyrillic_ghe" /> <!-- U+0448: "ш" CYRILLIC SMALL LETTER SHA U+0449: "щ" CYRILLIC SMALL LETTER SHCHA --> <Key diff --git a/java/res/xml/rowkeys_nordic1.xml b/java/res/xml/rowkeys_nordic1.xml index 40e556b98..ff589cc4a 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:keySpec="!text/keylabel_for_nordic_row1_11" /> + latin:keySpec="!text/keyspec_nordic_row1_11" /> </merge> diff --git a/java/res/xml/rowkeys_nordic2.xml b/java/res/xml/rowkeys_nordic2.xml index 4064e4f27..0330c0f67 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:keySpec="!text/keylabel_for_nordic_row2_10" - latin:moreKeys="!text/more_keys_for_nordic_row2_10" /> + latin:keySpec="!text/keyspec_nordic_row2_10" + latin:moreKeys="!text/morekeys_nordic_row2_10" /> <Key - latin:keySpec="!text/keylabel_for_nordic_row2_11" - latin:moreKeys="!text/more_keys_for_nordic_row2_11" /> + latin:keySpec="!text/keyspec_nordic_row2_11" + latin:moreKeys="!text/morekeys_nordic_row2_11" /> </merge> diff --git a/java/res/xml/rowkeys_pcqwerty1.xml b/java/res/xml/rowkeys_pcqwerty1.xml index 36957335e..564468a9a 100644 --- a/java/res/xml/rowkeys_pcqwerty1.xml +++ b/java/res/xml/rowkeys_pcqwerty1.xml @@ -30,44 +30,44 @@ latin:additionalMoreKeys="~" /> <Key latin:keySpec="1" - latin:additionalMoreKeys="!,!text/more_keys_for_exclamation" - latin:moreKeys="!text/more_keys_for_symbols_1" /> + latin:additionalMoreKeys="!,!text/morekeys_exclamation" + latin:moreKeys="!text/morekeys_symbols_1" /> <Key latin:keySpec="2" latin:additionalMoreKeys="\@" - latin:moreKeys="!text/more_keys_for_symbols_2" /> + latin:moreKeys="!text/morekeys_symbols_2" /> <Key latin:keySpec="3" latin:additionalMoreKeys="\#" - latin:moreKeys="!text/more_keys_for_symbols_3" /> + latin:moreKeys="!text/morekeys_symbols_3" /> <Key latin:keySpec="4" latin:additionalMoreKeys="$" - latin:moreKeys="!text/more_keys_for_symbols_4" /> + latin:moreKeys="!text/morekeys_symbols_4" /> <Key latin:keySpec="5" latin:additionalMoreKeys="\\%" - latin:moreKeys="!text/more_keys_for_symbols_5" /> + latin:moreKeys="!text/morekeys_symbols_5" /> <Key latin:keySpec="6" latin:additionalMoreKeys="^" - latin:moreKeys="!text/more_keys_for_symbols_6" /> + latin:moreKeys="!text/morekeys_symbols_6" /> <Key latin:keySpec="7" latin:additionalMoreKeys="&" - latin:moreKeys="!text/more_keys_for_symbols_7" /> + latin:moreKeys="!text/morekeys_symbols_7" /> <Key latin:keySpec="8" latin:additionalMoreKeys="*" - latin:moreKeys="!text/more_keys_for_symbols_8" /> + latin:moreKeys="!text/morekeys_symbols_8" /> <Key latin:keySpec="9" latin:additionalMoreKeys="(" - latin:moreKeys="!text/more_keys_for_symbols_9" /> + latin:moreKeys="!text/morekeys_symbols_9" /> <Key latin:keySpec="0" latin:additionalMoreKeys=")" - latin:moreKeys="!text/more_keys_for_symbols_0" /> + latin:moreKeys="!text/morekeys_symbols_0" /> <!-- U+2013: "–" EN DASH U+2014: "—" EM DASH U+00B7: "·" MIDDLE DOT --> diff --git a/java/res/xml/rowkeys_pcqwerty1_shift.xml b/java/res/xml/rowkeys_pcqwerty1_shift.xml index 6a5f00c4f..c72040f8a 100644 --- a/java/res/xml/rowkeys_pcqwerty1_shift.xml +++ b/java/res/xml/rowkeys_pcqwerty1_shift.xml @@ -25,24 +25,24 @@ latin:keySpec="~" /> <Key latin:keySpec="!" - latin:additionalMoreKeys="!text/more_keys_for_exclamation" /> + latin:additionalMoreKeys="!text/morekeys_exclamation" /> <Key latin:keySpec="\@" /> <Key latin:keySpec="\#" /> <Key latin:keySpec="$" - latin:additionalMoreKeys="!text/more_keys_for_currency_dollar" /> + latin:additionalMoreKeys="!text/morekeys_currency_dollar" /> <Key latin:keySpec="%" - latin:additionalMoreKeys="!text/more_keys_for_symbols_percent" /> + latin:additionalMoreKeys="!text/morekeys_symbols_percent" /> <Key latin:keySpec="^" /> <Key latin:keySpec="&" /> <Key latin:keySpec="*" - latin:additionalMoreKeys="!text/more_keys_for_star" /> + latin:additionalMoreKeys="!text/morekeys_star" /> <Key latin:keySpec="(" /> <Key @@ -54,6 +54,6 @@ U+221A: "√" SQUARE ROOT --> <Key latin:keySpec="+" - latin:additionalMoreKeys="!text/more_keys_for_plus" + latin:additionalMoreKeys="!text/morekeys_plus" latin:moreKeys="×,÷,√" /> </merge> diff --git a/java/res/xml/rowkeys_qwerty1.xml b/java/res/xml/rowkeys_qwerty1.xml index 7ebde8d00..8f3b160fe 100644 --- a/java/res/xml/rowkeys_qwerty1.xml +++ b/java/res/xml/rowkeys_qwerty1.xml @@ -22,50 +22,50 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Key - latin:keySpec="!text/keylabel_for_q" + latin:keySpec="!text/keyspec_q" latin:keyHintLabel="1" latin:additionalMoreKeys="1" - latin:moreKeys="!text/more_keys_for_q" /> + latin:moreKeys="!text/morekeys_q" /> <Key - latin:keySpec="!text/keylabel_for_w" + latin:keySpec="!text/keyspec_w" latin:keyHintLabel="2" latin:additionalMoreKeys="2" - latin:moreKeys="!text/more_keys_for_w" /> + latin:moreKeys="!text/morekeys_w" /> <Key latin:keySpec="e" latin:keyHintLabel="3" latin:additionalMoreKeys="3" - latin:moreKeys="!text/more_keys_for_e" /> + latin:moreKeys="!text/morekeys_e" /> <Key latin:keySpec="r" latin:keyHintLabel="4" latin:additionalMoreKeys="4" - latin:moreKeys="!text/more_keys_for_r" /> + latin:moreKeys="!text/morekeys_r" /> <Key latin:keySpec="t" latin:keyHintLabel="5" latin:additionalMoreKeys="5" - latin:moreKeys="!text/more_keys_for_t" /> + latin:moreKeys="!text/morekeys_t" /> <Key - latin:keySpec="!text/keylabel_for_y" + latin:keySpec="!text/keyspec_y" latin:keyHintLabel="6" latin:additionalMoreKeys="6" - latin:moreKeys="!text/more_keys_for_y" /> + latin:moreKeys="!text/morekeys_y" /> <Key latin:keySpec="u" latin:keyHintLabel="7" latin:additionalMoreKeys="7" - latin:moreKeys="!text/more_keys_for_u" /> + latin:moreKeys="!text/morekeys_u" /> <Key latin:keySpec="i" latin:keyHintLabel="8" latin:additionalMoreKeys="8" - latin:moreKeys="!text/more_keys_for_i" /> + latin:moreKeys="!text/morekeys_i" /> <Key latin:keySpec="o" latin:keyHintLabel="9" latin:additionalMoreKeys="9" - latin:moreKeys="!text/more_keys_for_o" /> + latin:moreKeys="!text/morekeys_o" /> <Key latin:keySpec="p" latin:keyHintLabel="0" diff --git a/java/res/xml/rowkeys_qwerty2.xml b/java/res/xml/rowkeys_qwerty2.xml index 0700ccecd..4077beaf6 100644 --- a/java/res/xml/rowkeys_qwerty2.xml +++ b/java/res/xml/rowkeys_qwerty2.xml @@ -23,28 +23,28 @@ > <Key latin:keySpec="a" - latin:moreKeys="!text/more_keys_for_a" /> + latin:moreKeys="!text/morekeys_a" /> <Key latin:keySpec="s" - latin:moreKeys="!text/more_keys_for_s" /> + latin:moreKeys="!text/morekeys_s" /> <Key latin:keySpec="d" - latin:moreKeys="!text/more_keys_for_d" /> + latin:moreKeys="!text/morekeys_d" /> <Key latin:keySpec="f" /> <Key latin:keySpec="g" - latin:moreKeys="!text/more_keys_for_g" /> + latin:moreKeys="!text/morekeys_g" /> <Key latin:keySpec="h" - latin:moreKeys="!text/more_keys_for_h" /> + latin:moreKeys="!text/morekeys_h" /> <Key latin:keySpec="j" - latin:moreKeys="!text/more_keys_for_j" /> + latin:moreKeys="!text/morekeys_j" /> <Key latin:keySpec="k" - latin:moreKeys="!text/more_keys_for_k" /> + latin:moreKeys="!text/morekeys_k" /> <Key latin:keySpec="l" - latin:moreKeys="!text/more_keys_for_l" /> + latin:moreKeys="!text/morekeys_l" /> </merge> diff --git a/java/res/xml/rowkeys_qwerty3.xml b/java/res/xml/rowkeys_qwerty3.xml index b48606c25..8562003d2 100644 --- a/java/res/xml/rowkeys_qwerty3.xml +++ b/java/res/xml/rowkeys_qwerty3.xml @@ -23,21 +23,21 @@ > <Key latin:keySpec="z" - latin:moreKeys="!text/more_keys_for_z" /> + latin:moreKeys="!text/morekeys_z" /> <Key - latin:keySpec="!text/keylabel_for_x" - latin:moreKeys="!text/more_keys_for_x" /> + latin:keySpec="!text/keyspec_x" + latin:moreKeys="!text/morekeys_x" /> <Key latin:keySpec="c" - latin:moreKeys="!text/more_keys_for_c" /> + latin:moreKeys="!text/morekeys_c" /> <Key latin:keySpec="v" - latin:moreKeys="!text/more_keys_for_v" /> + latin:moreKeys="!text/morekeys_v" /> <Key latin:keySpec="b" /> <Key latin:keySpec="n" - latin:moreKeys="!text/more_keys_for_n" /> + latin:moreKeys="!text/morekeys_n" /> <Key latin:keySpec="m" /> </merge> diff --git a/java/res/xml/rowkeys_qwertz1.xml b/java/res/xml/rowkeys_qwertz1.xml index 61ce97b83..c4edae339 100644 --- a/java/res/xml/rowkeys_qwertz1.xml +++ b/java/res/xml/rowkeys_qwertz1.xml @@ -29,42 +29,42 @@ latin:keySpec="w" latin:keyHintLabel="2" latin:additionalMoreKeys="2" - latin:moreKeys="!text/more_keys_for_w" /> + latin:moreKeys="!text/morekeys_w" /> <Key latin:keySpec="e" latin:keyHintLabel="3" latin:additionalMoreKeys="3" - latin:moreKeys="!text/more_keys_for_e" /> + latin:moreKeys="!text/morekeys_e" /> <Key latin:keySpec="r" latin:keyHintLabel="4" latin:additionalMoreKeys="4" - latin:moreKeys="!text/more_keys_for_r" /> + latin:moreKeys="!text/morekeys_r" /> <Key latin:keySpec="t" latin:keyHintLabel="5" latin:additionalMoreKeys="5" - latin:moreKeys="!text/more_keys_for_t" /> + latin:moreKeys="!text/morekeys_t" /> <Key latin:keySpec="z" latin:keyHintLabel="6" latin:additionalMoreKeys="6" - latin:moreKeys="!text/more_keys_for_z" /> + latin:moreKeys="!text/morekeys_z" /> <Key latin:keySpec="u" latin:keyHintLabel="7" latin:additionalMoreKeys="7" - latin:moreKeys="!text/more_keys_for_u" /> + latin:moreKeys="!text/morekeys_u" /> <Key latin:keySpec="i" latin:keyHintLabel="8" latin:additionalMoreKeys="8" - latin:moreKeys="!text/more_keys_for_i" /> + latin:moreKeys="!text/morekeys_i" /> <Key latin:keySpec="o" latin:keyHintLabel="9" latin:additionalMoreKeys="9" - latin:moreKeys="!text/more_keys_for_o" /> + latin:moreKeys="!text/morekeys_o" /> <Key latin:keySpec="p" latin:keyHintLabel="0" diff --git a/java/res/xml/rowkeys_qwertz3.xml b/java/res/xml/rowkeys_qwertz3.xml index 55a8ffa18..a66c34868 100644 --- a/java/res/xml/rowkeys_qwertz3.xml +++ b/java/res/xml/rowkeys_qwertz3.xml @@ -23,20 +23,20 @@ > <Key latin:keySpec="y" - latin:moreKeys="!text/more_keys_for_y" /> + latin:moreKeys="!text/morekeys_y" /> <Key latin:keySpec="x" /> <Key latin:keySpec="c" - latin:moreKeys="!text/more_keys_for_c" /> + latin:moreKeys="!text/morekeys_c" /> <Key latin:keySpec="v" - latin:moreKeys="!text/more_keys_for_v" /> + latin:moreKeys="!text/morekeys_v" /> <Key latin:keySpec="b" /> <Key latin:keySpec="n" - latin:moreKeys="!text/more_keys_for_n" /> + latin:moreKeys="!text/morekeys_n" /> <Key latin:keySpec="m" /> </merge> diff --git a/java/res/xml/rowkeys_south_slavic1.xml b/java/res/xml/rowkeys_south_slavic1.xml index 8b1d696b7..064f164e8 100644 --- a/java/res/xml/rowkeys_south_slavic1.xml +++ b/java/res/xml/rowkeys_south_slavic1.xml @@ -36,7 +36,7 @@ latin:keySpec="е" latin:keyHintLabel="3" latin:additionalMoreKeys="3" - latin:moreKeys="!text/more_keys_for_cyrillic_ie" /> + latin:moreKeys="!text/morekeys_cyrillic_ie" /> <!-- U+0440: "р" CYRILLIC SMALL LETTER ER --> <Key latin:keySpec="р" @@ -48,7 +48,7 @@ latin:keyHintLabel="5" latin:additionalMoreKeys="5" /> <Key - latin:keySpec="!text/keylabel_for_south_slavic_row1_6" + latin:keySpec="!text/keyspec_south_slavic_row1_6" latin:keyHintLabel="6" latin:additionalMoreKeys="6" /> <!-- U+0443: "у" CYRILLIC SMALL LETTER U --> @@ -61,7 +61,7 @@ latin:keySpec="и" latin:keyHintLabel="8" latin:additionalMoreKeys="8" - latin:moreKeys="!text/more_keys_for_cyrillic_i" /> + latin:moreKeys="!text/morekeys_cyrillic_i" /> <!-- U+043E: "о" CYRILLIC SMALL LETTER O --> <Key latin:keySpec="о" diff --git a/java/res/xml/rowkeys_south_slavic2.xml b/java/res/xml/rowkeys_south_slavic2.xml index fa2426442..3b98001b2 100644 --- a/java/res/xml/rowkeys_south_slavic2.xml +++ b/java/res/xml/rowkeys_south_slavic2.xml @@ -52,5 +52,5 @@ <Key latin:keySpec="ч" /> <Key - latin:keySpec="!text/keylabel_for_south_slavic_row2_11" /> + latin:keySpec="!text/keyspec_south_slavic_row2_11" /> </merge> diff --git a/java/res/xml/rowkeys_south_slavic3.xml b/java/res/xml/rowkeys_south_slavic3.xml index 8b54ec8c1..31df9b96e 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:keySpec="!text/keylabel_for_south_slavic_row3_1" /> + latin:keySpec="!text/keyspec_south_slavic_row3_1" /> <!-- U+045F: "џ" CYRILLIC SMALL LETTER DZHE --> <Key latin:keySpec="џ" /> @@ -42,7 +42,7 @@ <Key latin:keySpec="м" /> <Key - latin:keySpec="!text/keylabel_for_south_slavic_row3_8" /> + latin:keySpec="!text/keyspec_south_slavic_row3_8" /> <!-- U+0436: "ж" CYRILLIC SMALL LETTER ZHE --> <Key latin:keySpec="ж" /> diff --git a/java/res/xml/rowkeys_spanish2.xml b/java/res/xml/rowkeys_spanish2.xml index 68632fd2c..5c7f67cdd 100644 --- a/java/res/xml/rowkeys_spanish2.xml +++ b/java/res/xml/rowkeys_spanish2.xml @@ -25,5 +25,5 @@ latin:keyboardLayout="@xml/rowkeys_qwerty2" /> <!-- U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE --> <Key - latin:keySpec="!text/keylabel_for_spanish_row2_10" /> + latin:keySpec="!text/keyspec_spanish_row2_10" /> </merge> diff --git a/java/res/xml/rowkeys_swiss1.xml b/java/res/xml/rowkeys_swiss1.xml index 458771d0c..2b82c81bd 100644 --- a/java/res/xml/rowkeys_swiss1.xml +++ b/java/res/xml/rowkeys_swiss1.xml @@ -24,6 +24,6 @@ <include latin:keyboardLayout="@xml/rowkeys_qwertz1" /> <Key - latin:keySpec="!text/keylabel_for_swiss_row1_11" - latin:moreKeys="!text/more_keys_for_swiss_row1_11" /> + latin:keySpec="!text/keyspec_swiss_row1_11" + latin:moreKeys="!text/morekeys_swiss_row1_11" /> </merge> diff --git a/java/res/xml/rowkeys_swiss2.xml b/java/res/xml/rowkeys_swiss2.xml index 0c25fe806..770911179 100644 --- a/java/res/xml/rowkeys_swiss2.xml +++ b/java/res/xml/rowkeys_swiss2.xml @@ -24,9 +24,9 @@ <include latin:keyboardLayout="@xml/rowkeys_qwerty2" /> <Key - latin:keySpec="!text/keylabel_for_swiss_row2_10" - latin:moreKeys="!text/more_keys_for_swiss_row2_10" /> + latin:keySpec="!text/keyspec_swiss_row2_10" + latin:moreKeys="!text/morekeys_swiss_row2_10" /> <Key - latin:keySpec="!text/keylabel_for_swiss_row2_11" - latin:moreKeys="!text/more_keys_for_swiss_row2_11" /> + latin:keySpec="!text/keyspec_swiss_row2_11" + latin:moreKeys="!text/morekeys_swiss_row2_11" /> </merge> diff --git a/java/res/xml/rowkeys_symbols1.xml b/java/res/xml/rowkeys_symbols1.xml index b35b18079..daf9087b2 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:keySpec="!text/keylabel_for_symbols_1" - latin:additionalMoreKeys="!text/additional_more_keys_for_symbols_1" - latin:moreKeys="!text/more_keys_for_symbols_1" /> + latin:keySpec="!text/keyspec_symbols_1" + latin:additionalMoreKeys="!text/additional_morekeys_symbols_1" + latin:moreKeys="!text/morekeys_symbols_1" /> <Key - latin:keySpec="!text/keylabel_for_symbols_2" - latin:additionalMoreKeys="!text/additional_more_keys_for_symbols_2" - latin:moreKeys="!text/more_keys_for_symbols_2" /> + latin:keySpec="!text/keyspec_symbols_2" + latin:additionalMoreKeys="!text/additional_morekeys_symbols_2" + latin:moreKeys="!text/morekeys_symbols_2" /> <Key - latin:keySpec="!text/keylabel_for_symbols_3" - latin:additionalMoreKeys="!text/additional_more_keys_for_symbols_3" - latin:moreKeys="!text/more_keys_for_symbols_3" /> + latin:keySpec="!text/keyspec_symbols_3" + latin:additionalMoreKeys="!text/additional_morekeys_symbols_3" + latin:moreKeys="!text/morekeys_symbols_3" /> <Key - latin:keySpec="!text/keylabel_for_symbols_4" - latin:additionalMoreKeys="!text/additional_more_keys_for_symbols_4" - latin:moreKeys="!text/more_keys_for_symbols_4" /> + latin:keySpec="!text/keyspec_symbols_4" + latin:additionalMoreKeys="!text/additional_morekeys_symbols_4" + latin:moreKeys="!text/morekeys_symbols_4" /> <Key - latin:keySpec="!text/keylabel_for_symbols_5" - latin:additionalMoreKeys="!text/additional_more_keys_for_symbols_5" - latin:moreKeys="!text/more_keys_for_symbols_5" /> + latin:keySpec="!text/keyspec_symbols_5" + latin:additionalMoreKeys="!text/additional_morekeys_symbols_5" + latin:moreKeys="!text/morekeys_symbols_5" /> <Key - latin:keySpec="!text/keylabel_for_symbols_6" - latin:additionalMoreKeys="!text/additional_more_keys_for_symbols_6" - latin:moreKeys="!text/more_keys_for_symbols_6" /> + latin:keySpec="!text/keyspec_symbols_6" + latin:additionalMoreKeys="!text/additional_morekeys_symbols_6" + latin:moreKeys="!text/morekeys_symbols_6" /> <Key - latin:keySpec="!text/keylabel_for_symbols_7" - latin:additionalMoreKeys="!text/additional_more_keys_for_symbols_7" - latin:moreKeys="!text/more_keys_for_symbols_7" /> + latin:keySpec="!text/keyspec_symbols_7" + latin:additionalMoreKeys="!text/additional_morekeys_symbols_7" + latin:moreKeys="!text/morekeys_symbols_7" /> <Key - latin:keySpec="!text/keylabel_for_symbols_8" - latin:additionalMoreKeys="!text/additional_more_keys_for_symbols_8" - latin:moreKeys="!text/more_keys_for_symbols_8" /> + latin:keySpec="!text/keyspec_symbols_8" + latin:additionalMoreKeys="!text/additional_morekeys_symbols_8" + latin:moreKeys="!text/morekeys_symbols_8" /> <Key - latin:keySpec="!text/keylabel_for_symbols_9" - latin:additionalMoreKeys="!text/additional_more_keys_for_symbols_9" - latin:moreKeys="!text/more_keys_for_symbols_9" /> + latin:keySpec="!text/keyspec_symbols_9" + latin:additionalMoreKeys="!text/additional_morekeys_symbols_9" + latin:moreKeys="!text/morekeys_symbols_9" /> <Key - latin:keySpec="!text/keylabel_for_symbols_0" - latin:additionalMoreKeys="!text/additional_more_keys_for_symbols_0" - latin:moreKeys="!text/more_keys_for_symbols_0" /> + latin:keySpec="!text/keyspec_symbols_0" + latin:additionalMoreKeys="!text/additional_morekeys_symbols_0" + latin:moreKeys="!text/morekeys_symbols_0" /> </merge> diff --git a/java/res/xml/rowkeys_symbols2.xml b/java/res/xml/rowkeys_symbols2.xml index fe8653d1c..811915825 100644 --- a/java/res/xml/rowkeys_symbols2.xml +++ b/java/res/xml/rowkeys_symbols2.xml @@ -46,8 +46,8 @@ <Key latin:keyStyle="currencyKeyStyle" /> <Key - latin:keySpec="!text/keylabel_for_symbols_percent" - latin:moreKeys="!text/more_keys_for_symbols_percent" /> + latin:keySpec="!text/keyspec_symbols_percent" + latin:moreKeys="!text/morekeys_symbols_percent" /> <Key latin:keySpec="&" /> <!-- U+2013: "–" EN DASH @@ -58,7 +58,7 @@ latin:moreKeys="_,–,—,·" /> <Key latin:keySpec="+" - latin:moreKeys="!text/more_keys_for_plus" /> + latin:moreKeys="!text/morekeys_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 3dbfe81fb..8093081f8 100644 --- a/java/res/xml/rowkeys_symbols3.xml +++ b/java/res/xml/rowkeys_symbols3.xml @@ -23,36 +23,36 @@ > <Key latin:keySpec="*" - latin:moreKeys="!text/more_keys_for_star" /> + latin:moreKeys="!text/morekeys_star" /> <switch> <case latin:languageCode="fa" > <Key latin:keySpec="!text/keyspec_left_double_angle_quote" - latin:moreKeys="!text/more_keys_for_double_quote" /> + latin:moreKeys="!text/morekeys_double_quote" /> <Key latin:keySpec="!text/keyspec_right_double_angle_quote" - latin:moreKeys="!text/more_keys_for_single_quote" /> + latin:moreKeys="!text/morekeys_single_quote" /> </case> <default> <Key latin:keySpec=""" - latin:moreKeys="!text/more_keys_for_double_quote" /> + latin:moreKeys="!text/morekeys_double_quote" /> <Key latin:keySpec="\'" - latin:moreKeys="!text/more_keys_for_single_quote" /> + latin:moreKeys="!text/morekeys_single_quote" /> </default> </switch> <Key latin:keySpec=":" /> <Key - latin:keySpec="!text/keylabel_for_symbols_semicolon" - latin:moreKeys="!text/more_keys_for_symbols_semicolon" /> + latin:keySpec="!text/keyspec_symbols_semicolon" + latin:moreKeys="!text/morekeys_symbols_semicolon" /> <Key latin:keySpec="!" - latin:moreKeys="!text/more_keys_for_exclamation" /> + latin:moreKeys="!text/morekeys_exclamation" /> <Key - latin:keySpec="!text/keylabel_for_symbols_question" - latin:moreKeys="!text/more_keys_for_question" /> + latin:keySpec="!text/keyspec_symbols_question" + latin:moreKeys="!text/morekeys_question" /> </merge> diff --git a/java/res/xml/rowkeys_symbols_shift1.xml b/java/res/xml/rowkeys_symbols_shift1.xml index 4c2722c7e..f232a7de2 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:keySpec="•" - latin:moreKeys="!text/more_keys_for_bullet" /> + latin:moreKeys="!text/morekeys_bullet" /> <!-- U+221A: "√" SQUARE ROOT --> <Key latin:keySpec="√" /> diff --git a/java/res/xml/rows_number_normal.xml b/java/res/xml/rows_number_normal.xml index 8c9267a53..859a1624a 100644 --- a/java/res/xml/rows_number_normal.xml +++ b/java/res/xml/rows_number_normal.xml @@ -63,7 +63,7 @@ <Key latin:keySpec="." latin:keyLabelFlags="hasPopupHint" - latin:moreKeys="!text/more_keys_for_am_pm" + latin:moreKeys="!text/morekeys_am_pm" latin:keyStyle="numFunctionalKeyStyle" latin:keyWidth="fillRight" /> </case> diff --git a/java/src/com/android/inputmethod/event/CombinerChain.java b/java/src/com/android/inputmethod/event/CombinerChain.java index 5ca9842c1..8b59dc52a 100644 --- a/java/src/com/android/inputmethod/event/CombinerChain.java +++ b/java/src/com/android/inputmethod/event/CombinerChain.java @@ -17,7 +17,9 @@ package com.android.inputmethod.event; import android.text.SpannableStringBuilder; +import android.text.TextUtils; +import com.android.inputmethod.latin.Constants; import com.android.inputmethod.latin.utils.CollectionUtils; import java.util.ArrayList; @@ -84,7 +86,19 @@ public class CombinerChain { } } if (null != event) { - mCombinedText.append(event.getTextToCommit()); + // TODO: figure out the generic way of doing this + if (Constants.CODE_DELETE == event.mKeyCode) { + final int length = mCombinedText.length(); + if (length > 0) { + final int lastCodePoint = mCombinedText.codePointBefore(length); + mCombinedText.delete(length - Character.charCount(lastCodePoint), length); + } + } else { + final CharSequence textToCommit = event.getTextToCommit(); + if (!TextUtils.isEmpty(textToCommit)) { + mCombinedText.append(textToCommit); + } + } } mStateFeedback.clear(); for (int i = mCombiners.size() - 1; i >= 0; --i) { diff --git a/java/src/com/android/inputmethod/event/Event.java b/java/src/com/android/inputmethod/event/Event.java index 2bfe0732d..646590948 100644 --- a/java/src/com/android/inputmethod/event/Event.java +++ b/java/src/com/android/inputmethod/event/Event.java @@ -229,9 +229,9 @@ public class Event { switch (mType) { case EVENT_MODE_KEY: case EVENT_NOT_HANDLED: + case EVENT_TOGGLE: return ""; case EVENT_INPUT_KEYPRESS: - case EVENT_TOGGLE: return StringUtils.newSingleCodePointString(mCodePoint); case EVENT_GESTURE: case EVENT_SOFTWARE_GENERATED_STRING: diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java index 044cd119e..56acdde8d 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java +++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java @@ -31,7 +31,7 @@ import java.util.Locale; public final class KeyboardTextsSet { public static final String PREFIX_TEXT = "!text/"; - public static final String SWITCH_TO_ALPHA_KEY_LABEL = "label_to_alpha_key"; + public static final String SWITCH_TO_ALPHA_KEY_LABEL = "keylabel_to_alpha"; private static final char BACKSLASH = Constants.CODE_BACKSLASH; private static final int MAX_STRING_REFERENCE_INDIRECTION = 10; diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java index 1d9ee90fb..fc67f0879 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java +++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java @@ -79,221 +79,217 @@ public final class KeyboardTextsTable { private static final String[] NAMES = { // /* index:histogram */ "name", - /* 0:32 */ "more_keys_for_a", - /* 1:32 */ "more_keys_for_o", - /* 2:30 */ "more_keys_for_u", - /* 3:29 */ "more_keys_for_e", - /* 4:28 */ "more_keys_for_i", - /* 5:23 */ "more_keys_for_c", + /* 0:32 */ "morekeys_a", + /* 1:32 */ "morekeys_o", + /* 2:30 */ "morekeys_u", + /* 3:29 */ "morekeys_e", + /* 4:28 */ "morekeys_i", + /* 5:23 */ "morekeys_c", /* 6:23 */ "double_quotes", - /* 7:22 */ "more_keys_for_n", + /* 7:22 */ "morekeys_n", /* 8:22 */ "single_quotes", - /* 9:21 */ "label_to_alpha_key", - /* 10:20 */ "more_keys_for_s", - /* 11:14 */ "more_keys_for_y", - /* 12:13 */ "more_keys_for_d", - /* 13:12 */ "more_keys_for_z", - /* 14:10 */ "more_keys_for_t", - /* 15:10 */ "more_keys_for_l", - /* 16: 9 */ "more_keys_for_g", + /* 9:21 */ "keylabel_to_alpha", + /* 10:20 */ "morekeys_s", + /* 11:14 */ "morekeys_y", + /* 12:13 */ "morekeys_d", + /* 13:12 */ "morekeys_z", + /* 14:10 */ "morekeys_t", + /* 15:10 */ "morekeys_l", + /* 16: 9 */ "morekeys_g", /* 17: 9 */ "single_angle_quotes", /* 18: 9 */ "double_angle_quotes", - /* 19: 9 */ "keylabel_for_currency", - /* 20: 8 */ "more_keys_for_r", - /* 21: 6 */ "more_keys_for_k", - /* 22: 6 */ "more_keys_for_cyrillic_ie", - /* 23: 5 */ "keylabel_for_nordic_row1_11", - /* 24: 5 */ "keylabel_for_nordic_row2_10", - /* 25: 5 */ "keylabel_for_nordic_row2_11", - /* 26: 5 */ "more_keys_for_nordic_row2_10", - /* 27: 5 */ "keylabel_for_east_slavic_row1_9", - /* 28: 5 */ "keylabel_for_east_slavic_row2_2", - /* 29: 5 */ "keylabel_for_east_slavic_row2_11", - /* 30: 5 */ "keylabel_for_east_slavic_row3_5", - /* 31: 5 */ "more_keys_for_cyrillic_soft_sign", - /* 32: 4 */ "more_keys_for_nordic_row2_11", - /* 33: 4 */ "keylabel_for_symbols_1", - /* 34: 4 */ "keylabel_for_symbols_2", - /* 35: 4 */ "keylabel_for_symbols_3", - /* 36: 4 */ "keylabel_for_symbols_4", - /* 37: 4 */ "keylabel_for_symbols_5", - /* 38: 4 */ "keylabel_for_symbols_6", - /* 39: 4 */ "keylabel_for_symbols_7", - /* 40: 4 */ "keylabel_for_symbols_8", - /* 41: 4 */ "keylabel_for_symbols_9", - /* 42: 4 */ "keylabel_for_symbols_0", - /* 43: 4 */ "label_to_symbol_key", - /* 44: 4 */ "label_to_symbol_with_microphone_key", - /* 45: 4 */ "additional_more_keys_for_symbols_1", - /* 46: 4 */ "additional_more_keys_for_symbols_2", - /* 47: 4 */ "additional_more_keys_for_symbols_3", - /* 48: 4 */ "additional_more_keys_for_symbols_4", - /* 49: 4 */ "additional_more_keys_for_symbols_5", - /* 50: 4 */ "additional_more_keys_for_symbols_6", - /* 51: 4 */ "additional_more_keys_for_symbols_7", - /* 52: 4 */ "additional_more_keys_for_symbols_8", - /* 53: 4 */ "additional_more_keys_for_symbols_9", - /* 54: 4 */ "additional_more_keys_for_symbols_0", - /* 55: 3 */ "more_keys_for_punctuation", - /* 56: 3 */ "more_keys_for_star", - /* 57: 3 */ "keyspec_left_parenthesis", - /* 58: 3 */ "keyspec_right_parenthesis", - /* 59: 3 */ "keyspec_left_square_bracket", - /* 60: 3 */ "keyspec_right_square_bracket", - /* 61: 3 */ "keyspec_left_curly_bracket", - /* 62: 3 */ "keyspec_right_curly_bracket", - /* 63: 3 */ "keyspec_less_than", - /* 64: 3 */ "keyspec_greater_than", - /* 65: 3 */ "keyspec_less_than_equal", - /* 66: 3 */ "keyspec_greater_than_equal", - /* 67: 3 */ "keyspec_left_double_angle_quote", - /* 68: 3 */ "keyspec_right_double_angle_quote", - /* 69: 3 */ "keyspec_left_single_angle_quote", - /* 70: 3 */ "keyspec_right_single_angle_quote", - /* 71: 3 */ "keylabel_for_tablet_comma", - /* 72: 3 */ "more_keys_for_tablet_period", - /* 73: 3 */ "more_keys_for_question", - /* 74: 2 */ "more_keys_for_h", - /* 75: 2 */ "more_keys_for_w", - /* 76: 2 */ "more_keys_for_cyrillic_u", - /* 77: 2 */ "more_keys_for_cyrillic_en", - /* 78: 2 */ "more_keys_for_cyrillic_ghe", - /* 79: 2 */ "more_keys_for_east_slavic_row2_2", - /* 80: 2 */ "more_keys_for_cyrillic_o", - /* 81: 2 */ "keylabel_for_south_slavic_row1_6", - /* 82: 2 */ "keylabel_for_south_slavic_row2_11", - /* 83: 2 */ "keylabel_for_south_slavic_row3_1", - /* 84: 2 */ "keylabel_for_south_slavic_row3_8", - /* 85: 2 */ "more_keys_for_cyrillic_i", - /* 86: 2 */ "keylabel_for_swiss_row1_11", - /* 87: 2 */ "keylabel_for_swiss_row2_10", - /* 88: 2 */ "keylabel_for_swiss_row2_11", - /* 89: 2 */ "more_keys_for_swiss_row1_11", - /* 90: 2 */ "more_keys_for_swiss_row2_10", - /* 91: 2 */ "more_keys_for_swiss_row2_11", - /* 92: 2 */ "keylabel_for_spanish_row2_10", - /* 93: 2 */ "more_keys_for_bullet", - /* 94: 2 */ "more_keys_for_left_parenthesis", - /* 95: 2 */ "more_keys_for_right_parenthesis", - /* 96: 2 */ "more_keys_for_arabic_diacritics", - /* 97: 2 */ "keylabel_for_comma", - /* 98: 2 */ "keyhintlabel_for_tablet_comma", - /* 99: 2 */ "more_keys_for_tablet_comma", - /* 100: 2 */ "keyhintlabel_for_period", - /* 101: 2 */ "more_keys_for_period", - /* 102: 2 */ "keyhintlabel_for_tablet_period", - /* 103: 2 */ "keylabel_for_symbols_question", - /* 104: 2 */ "keylabel_for_symbols_semicolon", - /* 105: 2 */ "keylabel_for_symbols_percent", - /* 106: 2 */ "more_keys_for_symbols_semicolon", - /* 107: 2 */ "more_keys_for_symbols_percent", - /* 108: 1 */ "more_keys_for_v", - /* 109: 1 */ "more_keys_for_j", - /* 110: 1 */ "more_keys_for_cyrillic_ka", - /* 111: 1 */ "more_keys_for_cyrillic_a", - /* 112: 1 */ "more_keys_for_east_slavic_row2_11", - /* 113: 1 */ "more_keys_for_currency_dollar", - /* 114: 1 */ "more_keys_for_tablet_punctuation", - /* 115: 1 */ "more_keys_for_plus", - /* 116: 1 */ "more_keys_for_less_than", - /* 117: 1 */ "more_keys_for_greater_than", - /* 118: 1 */ "keylabel_for_period", - /* 119: 1 */ "keylabel_for_tablet_period", - /* 120: 1 */ "more_keys_for_exclamation", - /* 121: 1 */ "more_keys_for_q", - /* 122: 1 */ "more_keys_for_x", - /* 123: 1 */ "keylabel_for_q", - /* 124: 1 */ "keylabel_for_w", - /* 125: 1 */ "keylabel_for_y", - /* 126: 1 */ "keylabel_for_x", - /* 127: 0 */ "more_keys_for_currency", - /* 128: 0 */ "more_keys_for_symbols_1", - /* 129: 0 */ "more_keys_for_symbols_2", - /* 130: 0 */ "more_keys_for_symbols_3", - /* 131: 0 */ "more_keys_for_symbols_4", - /* 132: 0 */ "more_keys_for_symbols_5", - /* 133: 0 */ "more_keys_for_symbols_6", - /* 134: 0 */ "more_keys_for_symbols_7", - /* 135: 0 */ "more_keys_for_symbols_8", - /* 136: 0 */ "more_keys_for_symbols_9", - /* 137: 0 */ "more_keys_for_symbols_0", - /* 138: 0 */ "more_keys_for_am_pm", - /* 139: 0 */ "settings_as_more_key", - /* 140: 0 */ "shortcut_as_more_key", - /* 141: 0 */ "action_next_as_more_key", - /* 142: 0 */ "action_previous_as_more_key", - /* 143: 0 */ "label_to_more_symbol_key", - /* 144: 0 */ "label_to_more_symbol_for_tablet_key", - /* 145: 0 */ "label_to_phone_numeric_key", - /* 146: 0 */ "label_to_phone_symbols_key", - /* 147: 0 */ "label_time_am", - /* 148: 0 */ "label_time_pm", - /* 149: 0 */ "keylabel_for_popular_domain", - /* 150: 0 */ "more_keys_for_popular_domain", - /* 151: 0 */ "keyspecs_for_left_parenthesis_more_keys", - /* 152: 0 */ "keyspecs_for_right_parenthesis_more_keys", - /* 153: 0 */ "single_laqm_raqm", - /* 154: 0 */ "single_raqm_laqm", - /* 155: 0 */ "double_laqm_raqm", - /* 156: 0 */ "double_raqm_laqm", - /* 157: 0 */ "single_lqm_rqm", - /* 158: 0 */ "single_9qm_lqm", - /* 159: 0 */ "single_9qm_rqm", - /* 160: 0 */ "single_rqm_9qm", - /* 161: 0 */ "double_lqm_rqm", - /* 162: 0 */ "double_9qm_lqm", - /* 163: 0 */ "double_9qm_rqm", - /* 164: 0 */ "double_rqm_9qm", - /* 165: 0 */ "more_keys_for_single_quote", - /* 166: 0 */ "more_keys_for_double_quote", - /* 167: 0 */ "more_keys_for_tablet_double_quote", - /* 168: 0 */ "emoji_key_as_more_key", + /* 19: 9 */ "keyspec_currency", + /* 20: 8 */ "morekeys_r", + /* 21: 6 */ "morekeys_k", + /* 22: 6 */ "morekeys_cyrillic_ie", + /* 23: 5 */ "keyspec_nordic_row1_11", + /* 24: 5 */ "keyspec_nordic_row2_10", + /* 25: 5 */ "keyspec_nordic_row2_11", + /* 26: 5 */ "morekeys_nordic_row2_10", + /* 27: 5 */ "keyspec_east_slavic_row1_9", + /* 28: 5 */ "keyspec_east_slavic_row2_2", + /* 29: 5 */ "keyspec_east_slavic_row2_11", + /* 30: 5 */ "keyspec_east_slavic_row3_5", + /* 31: 5 */ "morekeys_cyrillic_soft_sign", + /* 32: 4 */ "morekeys_nordic_row2_11", + /* 33: 4 */ "keyspec_symbols_1", + /* 34: 4 */ "keyspec_symbols_2", + /* 35: 4 */ "keyspec_symbols_3", + /* 36: 4 */ "keyspec_symbols_4", + /* 37: 4 */ "keyspec_symbols_5", + /* 38: 4 */ "keyspec_symbols_6", + /* 39: 4 */ "keyspec_symbols_7", + /* 40: 4 */ "keyspec_symbols_8", + /* 41: 4 */ "keyspec_symbols_9", + /* 42: 4 */ "keyspec_symbols_0", + /* 43: 4 */ "keylabel_to_symbol", + /* 44: 4 */ "additional_morekeys_symbols_1", + /* 45: 4 */ "additional_morekeys_symbols_2", + /* 46: 4 */ "additional_morekeys_symbols_3", + /* 47: 4 */ "additional_morekeys_symbols_4", + /* 48: 4 */ "additional_morekeys_symbols_5", + /* 49: 4 */ "additional_morekeys_symbols_6", + /* 50: 4 */ "additional_morekeys_symbols_7", + /* 51: 4 */ "additional_morekeys_symbols_8", + /* 52: 4 */ "additional_morekeys_symbols_9", + /* 53: 4 */ "additional_morekeys_symbols_0", + /* 54: 3 */ "morekeys_punctuation", + /* 55: 3 */ "morekeys_star", + /* 56: 3 */ "keyspec_left_parenthesis", + /* 57: 3 */ "keyspec_right_parenthesis", + /* 58: 3 */ "keyspec_left_square_bracket", + /* 59: 3 */ "keyspec_right_square_bracket", + /* 60: 3 */ "keyspec_left_curly_bracket", + /* 61: 3 */ "keyspec_right_curly_bracket", + /* 62: 3 */ "keyspec_less_than", + /* 63: 3 */ "keyspec_greater_than", + /* 64: 3 */ "keyspec_less_than_equal", + /* 65: 3 */ "keyspec_greater_than_equal", + /* 66: 3 */ "keyspec_left_double_angle_quote", + /* 67: 3 */ "keyspec_right_double_angle_quote", + /* 68: 3 */ "keyspec_left_single_angle_quote", + /* 69: 3 */ "keyspec_right_single_angle_quote", + /* 70: 3 */ "keyspec_tablet_comma", + /* 71: 3 */ "morekeys_tablet_period", + /* 72: 3 */ "morekeys_question", + /* 73: 2 */ "morekeys_h", + /* 74: 2 */ "morekeys_w", + /* 75: 2 */ "morekeys_east_slavic_row2_2", + /* 76: 2 */ "morekeys_cyrillic_u", + /* 77: 2 */ "morekeys_cyrillic_en", + /* 78: 2 */ "morekeys_cyrillic_ghe", + /* 79: 2 */ "morekeys_cyrillic_o", + /* 80: 2 */ "morekeys_cyrillic_i", + /* 81: 2 */ "keyspec_south_slavic_row1_6", + /* 82: 2 */ "keyspec_south_slavic_row2_11", + /* 83: 2 */ "keyspec_south_slavic_row3_1", + /* 84: 2 */ "keyspec_south_slavic_row3_8", + /* 85: 2 */ "keyspec_swiss_row1_11", + /* 86: 2 */ "keyspec_swiss_row2_10", + /* 87: 2 */ "keyspec_swiss_row2_11", + /* 88: 2 */ "morekeys_swiss_row1_11", + /* 89: 2 */ "morekeys_swiss_row2_10", + /* 90: 2 */ "morekeys_swiss_row2_11", + /* 91: 2 */ "keyspec_spanish_row2_10", + /* 92: 2 */ "morekeys_bullet", + /* 93: 2 */ "morekeys_left_parenthesis", + /* 94: 2 */ "morekeys_right_parenthesis", + /* 95: 2 */ "morekeys_arabic_diacritics", + /* 96: 2 */ "keyspec_comma", + /* 97: 2 */ "keyhintlabel_tablet_comma", + /* 98: 2 */ "morekeys_tablet_comma", + /* 99: 2 */ "keyhintlabel_period", + /* 100: 2 */ "morekeys_period", + /* 101: 2 */ "keyhintlabel_tablet_period", + /* 102: 2 */ "keyspec_symbols_question", + /* 103: 2 */ "keyspec_symbols_semicolon", + /* 104: 2 */ "keyspec_symbols_percent", + /* 105: 2 */ "morekeys_symbols_semicolon", + /* 106: 2 */ "morekeys_symbols_percent", + /* 107: 1 */ "morekeys_v", + /* 108: 1 */ "morekeys_j", + /* 109: 1 */ "morekeys_east_slavic_row2_11", + /* 110: 1 */ "morekeys_cyrillic_ka", + /* 111: 1 */ "morekeys_cyrillic_a", + /* 112: 1 */ "morekeys_currency_dollar", + /* 113: 1 */ "morekeys_tablet_punctuation", + /* 114: 1 */ "morekeys_plus", + /* 115: 1 */ "morekeys_less_than", + /* 116: 1 */ "morekeys_greater_than", + /* 117: 1 */ "keyspec_period", + /* 118: 1 */ "keyspec_tablet_period", + /* 119: 1 */ "morekeys_exclamation", + /* 120: 1 */ "morekeys_q", + /* 121: 1 */ "morekeys_x", + /* 122: 1 */ "keyspec_q", + /* 123: 1 */ "keyspec_w", + /* 124: 1 */ "keyspec_y", + /* 125: 1 */ "keyspec_x", + /* 126: 0 */ "morekeys_currency", + /* 127: 0 */ "morekeys_symbols_1", + /* 128: 0 */ "morekeys_symbols_2", + /* 129: 0 */ "morekeys_symbols_3", + /* 130: 0 */ "morekeys_symbols_4", + /* 131: 0 */ "morekeys_symbols_5", + /* 132: 0 */ "morekeys_symbols_6", + /* 133: 0 */ "morekeys_symbols_7", + /* 134: 0 */ "morekeys_symbols_8", + /* 135: 0 */ "morekeys_symbols_9", + /* 136: 0 */ "morekeys_symbols_0", + /* 137: 0 */ "morekeys_am_pm", + /* 138: 0 */ "keyspec_settings", + /* 139: 0 */ "keyspec_shortcut", + /* 140: 0 */ "keyspec_action_next", + /* 141: 0 */ "keyspec_action_previous", + /* 142: 0 */ "keylabel_to_more_symbol", + /* 143: 0 */ "keylabel_tablet_to_more_symbol", + /* 144: 0 */ "keylabel_to_phone_numeric", + /* 145: 0 */ "keylabel_to_phone_symbols", + /* 146: 0 */ "keylabel_time_am", + /* 147: 0 */ "keylabel_time_pm", + /* 148: 0 */ "keyspec_popular_domain", + /* 149: 0 */ "morekeys_popular_domain", + /* 150: 0 */ "keyspecs_left_parenthesis_more_keys", + /* 151: 0 */ "keyspecs_right_parenthesis_more_keys", + /* 152: 0 */ "single_laqm_raqm", + /* 153: 0 */ "single_raqm_laqm", + /* 154: 0 */ "double_laqm_raqm", + /* 155: 0 */ "double_raqm_laqm", + /* 156: 0 */ "single_lqm_rqm", + /* 157: 0 */ "single_9qm_lqm", + /* 158: 0 */ "single_9qm_rqm", + /* 159: 0 */ "single_rqm_9qm", + /* 160: 0 */ "double_lqm_rqm", + /* 161: 0 */ "double_9qm_lqm", + /* 162: 0 */ "double_9qm_rqm", + /* 163: 0 */ "double_rqm_9qm", + /* 164: 0 */ "morekeys_single_quote", + /* 165: 0 */ "morekeys_double_quote", + /* 166: 0 */ "morekeys_tablet_double_quote", + /* 167: 0 */ "keyspec_emoji_key", }; private static final String EMPTY = ""; /* Default texts */ private static final String[] LANGUAGE_DEFAULT = { - /* more_keys_for_a ~ */ + /* morekeys_a ~ */ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, - /* ~ more_keys_for_c */ + /* ~ morekeys_c */ /* double_quotes */ "!text/double_lqm_rqm", - /* more_keys_for_n */ EMPTY, + /* morekeys_n */ EMPTY, /* single_quotes */ "!text/single_lqm_rqm", // Label for "switch to alphabetic" key. - /* label_to_alpha_key */ "ABC", - /* more_keys_for_s ~ */ + /* keylabel_to_alpha */ "ABC", + /* morekeys_s ~ */ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, - /* ~ more_keys_for_g */ + /* ~ morekeys_g */ /* single_angle_quotes */ "!text/single_laqm_raqm", /* double_angle_quotes */ "!text/double_laqm_raqm", - /* keylabel_for_currency */ "$", - /* more_keys_for_r ~ */ + /* keyspec_currency */ "$", + /* morekeys_r ~ */ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, - /* ~ more_keys_for_nordic_row2_11 */ - /* keylabel_for_symbols_1 */ "1", - /* keylabel_for_symbols_2 */ "2", - /* keylabel_for_symbols_3 */ "3", - /* keylabel_for_symbols_4 */ "4", - /* keylabel_for_symbols_5 */ "5", - /* keylabel_for_symbols_6 */ "6", - /* keylabel_for_symbols_7 */ "7", - /* keylabel_for_symbols_8 */ "8", - /* keylabel_for_symbols_9 */ "9", - /* keylabel_for_symbols_0 */ "0", + /* ~ morekeys_nordic_row2_11 */ + /* keyspec_symbols_1 */ "1", + /* keyspec_symbols_2 */ "2", + /* keyspec_symbols_3 */ "3", + /* keyspec_symbols_4 */ "4", + /* keyspec_symbols_5 */ "5", + /* keyspec_symbols_6 */ "6", + /* keyspec_symbols_7 */ "7", + /* keyspec_symbols_8 */ "8", + /* keyspec_symbols_9 */ "9", + /* keyspec_symbols_0 */ "0", // Label for "switch to symbols" key. - /* label_to_symbol_key */ "?123", - // Label for "switch to symbols with microphone" key. This string shouldn't include the "mic" - // part because it'll be appended by the code. - /* label_to_symbol_with_microphone_key */ "123", - /* additional_more_keys_for_symbols_1 ~ */ + /* keylabel_to_symbol */ "?123", + /* additional_morekeys_symbols_1 ~ */ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, - /* ~ additional_more_keys_for_symbols_0 */ - /* more_keys_for_punctuation */ "!autoColumnOrder!8,\\,,?,!,#,!text/keyspec_right_parenthesis,!text/keyspec_left_parenthesis,/,;,',@,:,-,\",+,\\%,&", + /* ~ additional_morekeys_symbols_0 */ + /* morekeys_punctuation */ "!autoColumnOrder!8,\\,,?,!,#,!text/keyspec_right_parenthesis,!text/keyspec_left_parenthesis,/,;,',@,:,-,\",+,\\%,&", // U+2020: "†" DAGGER // U+2021: "‡" DOUBLE DAGGER // U+2605: "★" BLACK STAR - /* more_keys_for_star */ "\u2020,\u2021,\u2605", + /* morekeys_star */ "\u2020,\u2021,\u2605", // The all letters need to be mirrored are found at // http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt // U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK @@ -316,113 +312,113 @@ public final class KeyboardTextsTable { /* keyspec_right_double_angle_quote */ "\u00BB", /* keyspec_left_single_angle_quote */ "\u2039", /* keyspec_right_single_angle_quote */ "\u203A", - /* keylabel_for_tablet_comma */ ",", - /* more_keys_for_tablet_period */ "!text/more_keys_for_tablet_punctuation", + /* keyspec_tablet_comma */ ",", + /* morekeys_tablet_period */ "!text/morekeys_tablet_punctuation", // U+00BF: "¿" INVERTED QUESTION MARK - /* more_keys_for_question */ "\u00BF", - /* more_keys_for_h ~ */ + /* morekeys_question */ "\u00BF", + /* morekeys_h ~ */ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, - /* ~ more_keys_for_swiss_row2_11 */ + /* ~ morekeys_swiss_row2_11 */ // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE - /* keylabel_for_spanish_row2_10 */ "\u00F1", + /* keyspec_spanish_row2_10 */ "\u00F1", // U+266A: "♪" EIGHTH NOTE // U+2665: "♥" BLACK HEART SUIT // U+2660: "♠" BLACK SPADE SUIT // U+2666: "♦" BLACK DIAMOND SUIT // U+2663: "♣" BLACK CLUB SUIT - /* more_keys_for_bullet */ "\u266A,\u2665,\u2660,\u2666,\u2663", - /* more_keys_for_left_parenthesis */ "!fixedColumnOrder!3,!text/keyspecs_for_left_parenthesis_more_keys", - /* more_keys_for_right_parenthesis */ "!fixedColumnOrder!3,!text/keyspecs_for_right_parenthesis_more_keys", - /* more_keys_for_arabic_diacritics */ EMPTY, + /* morekeys_bullet */ "\u266A,\u2665,\u2660,\u2666,\u2663", + /* morekeys_left_parenthesis */ "!fixedColumnOrder!3,!text/keyspecs_left_parenthesis_more_keys", + /* morekeys_right_parenthesis */ "!fixedColumnOrder!3,!text/keyspecs_right_parenthesis_more_keys", + /* morekeys_arabic_diacritics */ EMPTY, // Comma key - /* keylabel_for_comma */ ",", - /* keyhintlabel_for_tablet_comma ~ */ + /* keyspec_comma */ ",", + /* keyhintlabel_tablet_comma ~ */ EMPTY, EMPTY, EMPTY, - /* ~ keyhintlabel_for_period */ - /* more_keys_for_period */ "!text/more_keys_for_punctuation", - /* keyhintlabel_for_tablet_period */ EMPTY, - /* keylabel_for_symbols_question */ "?", - /* keylabel_for_symbols_semicolon */ ";", - /* keylabel_for_symbols_percent */ "%", - /* more_keys_for_symbols_semicolon */ EMPTY, + /* ~ keyhintlabel_period */ + /* morekeys_period */ "!text/morekeys_punctuation", + /* keyhintlabel_tablet_period */ EMPTY, + /* keyspec_symbols_question */ "?", + /* keyspec_symbols_semicolon */ ";", + /* keyspec_symbols_percent */ "%", + /* morekeys_symbols_semicolon */ EMPTY, // U+2030: "‰" PER MILLE SIGN - /* more_keys_for_symbols_percent */ "\u2030", - /* more_keys_for_v ~ */ + /* morekeys_symbols_percent */ "\u2030", + /* morekeys_v ~ */ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, - /* ~ more_keys_for_east_slavic_row2_11 */ + /* ~ morekeys_cyrillic_a */ // U+00A2: "¢" CENT SIGN // U+00A3: "£" POUND SIGN // U+20AC: "€" EURO SIGN // U+00A5: "¥" YEN SIGN // U+20B1: "₱" PESO SIGN - /* more_keys_for_currency_dollar */ "\u00A2,\u00A3,\u20AC,\u00A5,\u20B1", - /* more_keys_for_tablet_punctuation */ "!autoColumnOrder!7,\\,,',#,!text/keyspec_right_parenthesis,!text/keyspec_left_parenthesis,/,;,@,:,-,\",+,\\%,&", + /* morekeys_currency_dollar */ "\u00A2,\u00A3,\u20AC,\u00A5,\u20B1", + /* morekeys_tablet_punctuation */ "!autoColumnOrder!7,\\,,',#,!text/keyspec_right_parenthesis,!text/keyspec_left_parenthesis,/,;,@,:,-,\",+,\\%,&", // U+00B1: "±" PLUS-MINUS SIGN - /* more_keys_for_plus */ "\u00B1", - /* more_keys_for_less_than */ "!fixedColumnOrder!3,!text/keyspec_left_single_angle_quote,!text/keyspec_less_than_equal,!text/keyspec_left_double_angle_quote", - /* more_keys_for_greater_than */ "!fixedColumnOrder!3,!text/keyspec_right_single_angle_quote,!text/keyspec_greater_than_equal,!text/keyspec_right_double_angle_quote", + /* morekeys_plus */ "\u00B1", + /* morekeys_less_than */ "!fixedColumnOrder!3,!text/keyspec_left_single_angle_quote,!text/keyspec_less_than_equal,!text/keyspec_left_double_angle_quote", + /* morekeys_greater_than */ "!fixedColumnOrder!3,!text/keyspec_right_single_angle_quote,!text/keyspec_greater_than_equal,!text/keyspec_right_double_angle_quote", // Period key - /* keylabel_for_period */ ".", - /* keylabel_for_tablet_period */ ".", + /* keyspec_period */ ".", + /* keyspec_tablet_period */ ".", // U+00A1: "¡" INVERTED EXCLAMATION MARK - /* more_keys_for_exclamation */ "\u00A1", - /* more_keys_for_q */ EMPTY, - /* more_keys_for_x */ EMPTY, - /* keylabel_for_q */ "q", - /* keylabel_for_w */ "w", - /* keylabel_for_y */ "y", - /* keylabel_for_x */ "x", - /* more_keys_for_currency */ "$,\u00A2,\u20AC,\u00A3,\u00A5,\u20B1", + /* morekeys_exclamation */ "\u00A1", + /* morekeys_q */ EMPTY, + /* morekeys_x */ EMPTY, + /* keyspec_q */ "q", + /* keyspec_w */ "w", + /* keyspec_y */ "y", + /* keyspec_x */ "x", + /* morekeys_currency */ "$,\u00A2,\u20AC,\u00A3,\u00A5,\u20B1", // 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 - /* more_keys_for_symbols_1 */ "\u00B9,\u00BD,\u2153,\u00BC,\u215B", + /* morekeys_symbols_1 */ "\u00B9,\u00BD,\u2153,\u00BC,\u215B", // U+00B2: "²" SUPERSCRIPT TWO // U+2154: "⅔" VULGAR FRACTION TWO THIRDS - /* more_keys_for_symbols_2 */ "\u00B2,\u2154", + /* morekeys_symbols_2 */ "\u00B2,\u2154", // U+00B3: "³" SUPERSCRIPT THREE // U+00BE: "¾" VULGAR FRACTION THREE QUARTERS // U+215C: "⅜" VULGAR FRACTION THREE EIGHTHS - /* more_keys_for_symbols_3 */ "\u00B3,\u00BE,\u215C", + /* morekeys_symbols_3 */ "\u00B3,\u00BE,\u215C", // U+2074: "⁴" SUPERSCRIPT FOUR - /* more_keys_for_symbols_4 */ "\u2074", + /* morekeys_symbols_4 */ "\u2074", // U+215D: "⅝" VULGAR FRACTION FIVE EIGHTHS - /* more_keys_for_symbols_5 */ "\u215D", - /* more_keys_for_symbols_6 */ EMPTY, + /* morekeys_symbols_5 */ "\u215D", + /* morekeys_symbols_6 */ EMPTY, // U+215E: "⅞" VULGAR FRACTION SEVEN EIGHTHS - /* more_keys_for_symbols_7 */ "\u215E", - /* more_keys_for_symbols_8 */ EMPTY, - /* more_keys_for_symbols_9 */ EMPTY, + /* morekeys_symbols_7 */ "\u215E", + /* morekeys_symbols_8 */ EMPTY, + /* morekeys_symbols_9 */ EMPTY, // U+207F: "ⁿ" SUPERSCRIPT LATIN SMALL LETTER N // U+2205: "∅" EMPTY SET - /* more_keys_for_symbols_0 */ "\u207F,\u2205", - /* more_keys_for_am_pm */ "!fixedColumnOrder!2,!hasLabels!,!text/label_time_am,!text/label_time_pm", - /* settings_as_more_key */ "!icon/settings_key|!code/key_settings", - /* shortcut_as_more_key */ "!icon/shortcut_key|!code/key_shortcut", - /* action_next_as_more_key */ "!hasLabels!,!text/label_next_key|!code/key_action_next", - /* action_previous_as_more_key */ "!hasLabels!,!text/label_previous_key|!code/key_action_previous", + /* morekeys_symbols_0 */ "\u207F,\u2205", + /* morekeys_am_pm */ "!fixedColumnOrder!2,!hasLabels!,!text/keylabel_time_am,!text/keylabel_time_pm", + /* keyspec_settings */ "!icon/settings_key|!code/key_settings", + /* keyspec_shortcut */ "!icon/shortcut_key|!code/key_shortcut", + /* keyspec_action_next */ "!hasLabels!,!text/label_next_key|!code/key_action_next", + /* keyspec_action_previous */ "!hasLabels!,!text/label_previous_key|!code/key_action_previous", // Label for "switch to more symbol" modifier key ("= \ <"). Must be short to fit on key! - /* label_to_more_symbol_key */ "= \\\\ <", + /* keylabel_to_more_symbol */ "= \\\\ <", // Label for "switch to more symbol" modifier key on tablets. Must be short to fit on key! - /* label_to_more_symbol_for_tablet_key */ "~ [ <", + /* keylabel_tablet_to_more_symbol */ "~ [ <", // Label for "switch to phone numeric" key. Must be short to fit on key! - /* label_to_phone_numeric_key */ "123", + /* keylabel_to_phone_numeric */ "123", // Label for "switch to phone symbols" key. Must be short to fit on key! // U+FF0A: "*" FULLWIDTH ASTERISK // U+FF03: "#" FULLWIDTH NUMBER SIGN - /* label_to_phone_symbols_key */ "\uFF0A\uFF03", + /* keylabel_to_phone_symbols */ "\uFF0A\uFF03", // Key label for "ante meridiem" - /* label_time_am */ "AM", + /* keylabel_time_am */ "AM", // Key label for "post meridiem" - /* label_time_pm */ "PM", - /* keylabel_for_popular_domain */ ".com", + /* keylabel_time_pm */ "PM", + /* keyspec_popular_domain */ ".com", // popular web domains for the locale - most popular, displayed on the keyboard - /* more_keys_for_popular_domain */ "!hasLabels!,.net,.org,.gov,.edu", - /* keyspecs_for_left_parenthesis_more_keys */ "!text/keyspec_less_than,!text/keyspec_left_curly_bracket,!text/keyspec_left_square_bracket", - /* keyspecs_for_right_parenthesis_more_keys */ "!text/keyspec_greater_than,!text/keyspec_right_curly_bracket,!text/keyspec_right_square_bracket", + /* morekeys_popular_domain */ "!hasLabels!,.net,.org,.gov,.edu", + /* keyspecs_left_parenthesis_more_keys */ "!text/keyspec_less_than,!text/keyspec_left_curly_bracket,!text/keyspec_left_square_bracket", + /* keyspecs_right_parenthesis_more_keys */ "!text/keyspec_greater_than,!text/keyspec_right_curly_bracket,!text/keyspec_right_square_bracket", // The following characters don't need BIDI mirroring. // U+2018: "‘" LEFT SINGLE QUOTATION MARK // U+2019: "’" RIGHT SINGLE QUOTATION MARK @@ -454,10 +450,10 @@ public final class KeyboardTextsTable { /* double_9qm_lqm */ "\u201D,\u201E,\u201C", /* double_9qm_rqm */ "\u201C,\u201E,\u201D", /* double_rqm_9qm */ "\u201C,\u201D,\u201E", - /* more_keys_for_single_quote */ "!fixedColumnOrder!5,!text/single_quotes,!text/single_angle_quotes", - /* more_keys_for_double_quote */ "!fixedColumnOrder!5,!text/double_quotes,!text/double_angle_quotes", - /* more_keys_for_tablet_double_quote */ "!fixedColumnOrder!6,!text/double_quotes,!text/single_quotes,!text/double_angle_quotes,!text/single_angle_quotes", - /* emoji_key_as_more_key */ "!icon/emoji_key|!code/key_emoji", + /* morekeys_single_quote */ "!fixedColumnOrder!5,!text/single_quotes,!text/single_angle_quotes", + /* morekeys_double_quote */ "!fixedColumnOrder!5,!text/double_quotes,!text/double_angle_quotes", + /* morekeys_tablet_double_quote */ "!fixedColumnOrder!6,!text/double_quotes,!text/single_quotes,!text/double_angle_quotes,!text/single_angle_quotes", + /* keyspec_emoji_key */ "!icon/emoji_key|!code/key_emoji", }; /* Language af: Afrikaans */ @@ -471,7 +467,7 @@ public final class KeyboardTextsTable { // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON - /* more_keys_for_a */ "\u00E1,\u00E2,\u00E4,\u00E0,\u00E6,\u00E3,\u00E5,\u0101", + /* morekeys_a */ "\u00E1,\u00E2,\u00E4,\u00E0,\u00E6,\u00E3,\u00E5,\u0101", // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS @@ -480,13 +476,13 @@ public final class KeyboardTextsTable { // U+0153: "œ" LATIN SMALL LIGATURE OE // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON - /* more_keys_for_o */ "\u00F3,\u00F4,\u00F6,\u00F2,\u00F5,\u0153,\u00F8,\u014D", + /* morekeys_o */ "\u00F3,\u00F4,\u00F6,\u00F2,\u00F5,\u0153,\u00F8,\u014D", // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON - /* more_keys_for_u */ "\u00FA,\u00FB,\u00FC,\u00F9,\u016B", + /* morekeys_u */ "\u00FA,\u00FB,\u00FC,\u00F9,\u016B", // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX @@ -494,7 +490,7 @@ public final class KeyboardTextsTable { // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON - /* more_keys_for_e */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0119,\u0117,\u0113", + /* morekeys_e */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0119,\u0117,\u0113", // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS @@ -502,23 +498,23 @@ public final class KeyboardTextsTable { // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON // U+0133: "ij" LATIN SMALL LIGATURE IJ - /* more_keys_for_i */ "\u00ED,\u00EC,\u00EF,\u00EE,\u012F,\u012B,\u0133", - /* more_keys_for_c */ null, + /* morekeys_i */ "\u00ED,\u00EC,\u00EF,\u00EE,\u012F,\u012B,\u0133", + /* morekeys_c */ null, /* double_quotes */ null, // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE - /* more_keys_for_n */ "\u00F1,\u0144", + /* morekeys_n */ "\u00F1,\u0144", /* single_quotes ~ */ null, null, null, - /* ~ more_keys_for_s */ + /* ~ morekeys_s */ // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE // U+0133: "ij" LATIN SMALL LIGATURE IJ - /* more_keys_for_y */ "\u00FD,\u0133", + /* morekeys_y */ "\u00FD,\u0133", }; /* Language ar: Arabic */ private static final String[] LANGUAGE_ar = { - /* more_keys_for_a ~ */ + /* morekeys_a ~ */ null, null, null, null, null, null, null, null, null, /* ~ single_quotes */ // Label for "switch to alphabetic" key. @@ -526,53 +522,50 @@ public final class KeyboardTextsTable { // U+200C: ZERO WIDTH NON-JOINER // U+0628: "ب" ARABIC LETTER BEH // U+062C: "ج" ARABIC LETTER JEEM - /* label_to_alpha_key */ "\u0623\u200C\u0628\u200C\u062C", - /* more_keys_for_s ~ */ + /* keylabel_to_alpha */ "\u0623\u200C\u0628\u200C\u062C", + /* morekeys_s ~ */ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - /* ~ more_keys_for_nordic_row2_11 */ + /* ~ morekeys_nordic_row2_11 */ // U+0661: "١" ARABIC-INDIC DIGIT ONE - /* keylabel_for_symbols_1 */ "\u0661", + /* keyspec_symbols_1 */ "\u0661", // U+0662: "٢" ARABIC-INDIC DIGIT TWO - /* keylabel_for_symbols_2 */ "\u0662", + /* keyspec_symbols_2 */ "\u0662", // U+0663: "٣" ARABIC-INDIC DIGIT THREE - /* keylabel_for_symbols_3 */ "\u0663", + /* keyspec_symbols_3 */ "\u0663", // U+0664: "٤" ARABIC-INDIC DIGIT FOUR - /* keylabel_for_symbols_4 */ "\u0664", + /* keyspec_symbols_4 */ "\u0664", // U+0665: "٥" ARABIC-INDIC DIGIT FIVE - /* keylabel_for_symbols_5 */ "\u0665", + /* keyspec_symbols_5 */ "\u0665", // U+0666: "٦" ARABIC-INDIC DIGIT SIX - /* keylabel_for_symbols_6 */ "\u0666", + /* keyspec_symbols_6 */ "\u0666", // U+0667: "٧" ARABIC-INDIC DIGIT SEVEN - /* keylabel_for_symbols_7 */ "\u0667", + /* keyspec_symbols_7 */ "\u0667", // U+0668: "٨" ARABIC-INDIC DIGIT EIGHT - /* keylabel_for_symbols_8 */ "\u0668", + /* keyspec_symbols_8 */ "\u0668", // U+0669: "٩" ARABIC-INDIC DIGIT NINE - /* keylabel_for_symbols_9 */ "\u0669", + /* keyspec_symbols_9 */ "\u0669", // U+0660: "٠" ARABIC-INDIC DIGIT ZERO - /* keylabel_for_symbols_0 */ "\u0660", + /* keyspec_symbols_0 */ "\u0660", // Label for "switch to symbols" key. // U+061F: "؟" ARABIC QUESTION MARK - /* label_to_symbol_key */ "\u0663\u0662\u0661\u061F", - // Label for "switch to symbols with microphone" key. This string shouldn't include the "mic" - // part because it'll be appended by the code. - /* label_to_symbol_with_microphone_key */ "\u0663\u0662\u0661", - /* additional_more_keys_for_symbols_1 */ "1", - /* additional_more_keys_for_symbols_2 */ "2", - /* additional_more_keys_for_symbols_3 */ "3", - /* additional_more_keys_for_symbols_4 */ "4", - /* additional_more_keys_for_symbols_5 */ "5", - /* additional_more_keys_for_symbols_6 */ "6", - /* additional_more_keys_for_symbols_7 */ "7", - /* additional_more_keys_for_symbols_8 */ "8", - /* additional_more_keys_for_symbols_9 */ "9", + /* keylabel_to_symbol */ "\u0663\u0662\u0661\u061F", + /* additional_morekeys_symbols_1 */ "1", + /* additional_morekeys_symbols_2 */ "2", + /* additional_morekeys_symbols_3 */ "3", + /* additional_morekeys_symbols_4 */ "4", + /* additional_morekeys_symbols_5 */ "5", + /* additional_morekeys_symbols_6 */ "6", + /* additional_morekeys_symbols_7 */ "7", + /* additional_morekeys_symbols_8 */ "8", + /* additional_morekeys_symbols_9 */ "9", // U+066B: "٫" ARABIC DECIMAL SEPARATOR // U+066C: "٬" ARABIC THOUSANDS SEPARATOR - /* additional_more_keys_for_symbols_0 */ "0,\u066B,\u066C", - /* more_keys_for_punctuation */ null, + /* additional_morekeys_symbols_0 */ "0,\u066B,\u066C", + /* morekeys_punctuation */ null, // U+2605: "★" BLACK STAR // U+066D: "٭" ARABIC FIVE POINTED STAR - /* more_keys_for_star */ "\u2605,\u066D", + /* morekeys_star */ "\u2605,\u066D", // U+2264: "≤" LESS-THAN OR EQUAL TO // U+2265: "≥" GREATER-THAN EQUAL TO // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK @@ -596,22 +589,22 @@ public final class KeyboardTextsTable { // U+061F: "؟" ARABIC QUESTION MARK // U+060C: "،" ARABIC COMMA // U+061B: "؛" ARABIC SEMICOLON - /* keylabel_for_tablet_comma */ "\u060C", - /* more_keys_for_tablet_period */ "!text/more_keys_for_arabic_diacritics", + /* keyspec_tablet_comma */ "\u060C", + /* morekeys_tablet_period */ "!text/morekeys_arabic_diacritics", // U+00BF: "¿" INVERTED QUESTION MARK - /* more_keys_for_question */ "?,\u00BF", - /* more_keys_for_h ~ */ + /* morekeys_question */ "?,\u00BF", + /* morekeys_h ~ */ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - /* ~ keylabel_for_spanish_row2_10 */ + /* ~ keyspec_spanish_row2_10 */ // U+266A: "♪" EIGHTH NOTE - /* more_keys_for_bullet */ "\u266A", + /* morekeys_bullet */ "\u266A", // 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 - /* more_keys_for_left_parenthesis */ "!fixedColumnOrder!4,\uFD3E|\uFD3F,!text/keyspecs_for_left_parenthesis_more_keys", - /* more_keys_for_right_parenthesis */ "!fixedColumnOrder!4,\uFD3F|\uFD3E,!text/keyspecs_for_right_parenthesis_more_keys", + /* morekeys_left_parenthesis */ "!fixedColumnOrder!4,\uFD3E|\uFD3F,!text/keyspecs_left_parenthesis_more_keys", + /* morekeys_right_parenthesis */ "!fixedColumnOrder!4,\uFD3F|\uFD3E,!text/keyspecs_right_parenthesis_more_keys", // U+0655: "ٕ" ARABIC HAMZA BELOW // U+0654: "ٔ" ARABIC HAMZA ABOVE // U+0652: "ْ" ARABIC SUKUN @@ -628,28 +621,28 @@ public final class KeyboardTextsTable { // U+0640: "ـ" ARABIC TATWEEL // In order to make Tatweel easily distinguishable from other punctuations, we use consecutive Tatweels only for its displayed label. // Note: The space character is needed as a preceding letter to draw Arabic diacritics characters correctly. - /* more_keys_for_arabic_diacritics */ "!fixedColumnOrder!7, \u0655|\u0655, \u0654|\u0654, \u0652|\u0652, \u064D|\u064D, \u064C|\u064C, \u064B|\u064B, \u0651|\u0651, \u0656|\u0656, \u0670|\u0670, \u0653|\u0653, \u0650|\u0650, \u064F|\u064F, \u064E|\u064E,\u0640\u0640\u0640|\u0640", + /* morekeys_arabic_diacritics */ "!fixedColumnOrder!7, \u0655|\u0655, \u0654|\u0654, \u0652|\u0652, \u064D|\u064D, \u064C|\u064C, \u064B|\u064B, \u0651|\u0651, \u0656|\u0656, \u0670|\u0670, \u0653|\u0653, \u0650|\u0650, \u064F|\u064F, \u064E|\u064E,\u0640\u0640\u0640|\u0640", // U+060C: "،" ARABIC COMMA - /* keylabel_for_comma */ "\u060C", - /* keyhintlabel_for_tablet_comma */ "\u061F", - /* more_keys_for_tablet_comma */ "!fixedColumnOrder!4,:,!,\u061F,\u061B,-,/,\",\'", + /* keyspec_comma */ "\u060C", + /* keyhintlabel_tablet_comma */ "\u061F", + /* morekeys_tablet_comma */ "!fixedColumnOrder!4,:,!,\u061F,\u061B,-,/,\",\'", // U+0651: "ّ" ARABIC SHADDA - /* keyhintlabel_for_period */ "\u0651", - /* more_keys_for_period */ "!text/more_keys_for_arabic_diacritics", - /* keyhintlabel_for_tablet_period */ "\u0651", - /* keylabel_for_symbols_question */ "\u061F", - /* keylabel_for_symbols_semicolon */ "\u061B", + /* keyhintlabel_period */ "\u0651", + /* morekeys_period */ "!text/morekeys_arabic_diacritics", + /* keyhintlabel_tablet_period */ "\u0651", + /* keyspec_symbols_question */ "\u061F", + /* keyspec_symbols_semicolon */ "\u061B", // U+066A: "٪" ARABIC PERCENT SIGN - /* keylabel_for_symbols_percent */ "\u066A", - /* more_keys_for_symbols_semicolon */ ";", + /* keyspec_symbols_percent */ "\u066A", + /* morekeys_symbols_semicolon */ ";", // U+2030: "‰" PER MILLE SIGN - /* more_keys_for_symbols_percent */ "\\%,\u2030", + /* morekeys_symbols_percent */ "\\%,\u2030", }; /* Language az_AZ: Azerbaijani (Azerbaijan) */ private static final String[] LANGUAGE_az_AZ = { // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX - /* more_keys_for_a */ "\u00E2", + /* morekeys_a */ "\u00E2", // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX // U+0153: "œ" LATIN SMALL LIGATURE OE @@ -658,15 +651,15 @@ public final class KeyboardTextsTable { // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON - /* more_keys_for_o */ "\u00F6,\u00F4,\u0153,\u00F2,\u00F3,\u00F5,\u00F8,\u014D", + /* morekeys_o */ "\u00F6,\u00F4,\u0153,\u00F2,\u00F3,\u00F5,\u00F8,\u014D", // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON - /* more_keys_for_u */ "\u00FC,\u00FB,\u00F9,\u00FA,\u016B", + /* morekeys_u */ "\u00FC,\u00FB,\u00F9,\u00FA,\u016B", // U+0259: "ə" LATIN SMALL LETTER SCHWA - /* more_keys_for_e */ "\u0259", + /* morekeys_e */ "\u0259", // U+0131: "ı" LATIN SMALL LETTER DOTLESS I // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS @@ -674,73 +667,73 @@ public final class KeyboardTextsTable { // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON - /* more_keys_for_i */ "\u0131,\u00EE,\u00EF,\u00EC,\u00ED,\u012F,\u012B", + /* morekeys_i */ "\u0131,\u00EE,\u00EF,\u00EC,\u00ED,\u012F,\u012B", // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE // U+010D: "č" LATIN SMALL LETTER C WITH CARON - /* more_keys_for_c */ "\u00E7,\u0107,\u010D", + /* morekeys_c */ "\u00E7,\u0107,\u010D", /* double_quotes ~ */ null, null, null, null, - /* ~ label_to_alpha_key */ + /* ~ keylabel_to_alpha */ // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA // U+00DF: "ß" LATIN SMALL LETTER SHARP S // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE // U+0161: "š" LATIN SMALL LETTER S WITH CARON - /* more_keys_for_s */ "\u015F,\u00DF,\u015B,\u0161", - /* more_keys_for_y ~ */ + /* morekeys_s */ "\u015F,\u00DF,\u015B,\u0161", + /* morekeys_y ~ */ null, null, null, null, null, - /* ~ more_keys_for_l */ + /* ~ morekeys_l */ // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE - /* more_keys_for_g */ "\u011F", + /* morekeys_g */ "\u011F", }; /* Language be_BY: Belarusian (Belarus) */ private static final String[] LANGUAGE_be_BY = { - /* more_keys_for_a ~ */ + /* morekeys_a ~ */ null, null, null, null, null, null, - /* ~ more_keys_for_c */ + /* ~ morekeys_c */ /* double_quotes */ "!text/double_9qm_lqm", - /* more_keys_for_n */ null, + /* morekeys_n */ null, /* single_quotes */ "!text/single_9qm_lqm", // Label for "switch to alphabetic" key. // U+0410: "А" CYRILLIC CAPITAL LETTER A // U+0411: "Б" CYRILLIC CAPITAL LETTER BE // U+0412: "В" CYRILLIC CAPITAL LETTER VE - /* label_to_alpha_key */ "\u0410\u0411\u0412", - /* more_keys_for_s ~ */ + /* keylabel_to_alpha */ "\u0410\u0411\u0412", + /* morekeys_s ~ */ null, null, null, null, null, null, null, null, null, null, null, null, - /* ~ more_keys_for_k */ + /* ~ morekeys_k */ // U+0451: "ё" CYRILLIC SMALL LETTER IO - /* more_keys_for_cyrillic_ie */ "\u0451", - /* keylabel_for_nordic_row1_11 ~ */ + /* morekeys_cyrillic_ie */ "\u0451", + /* keyspec_nordic_row1_11 ~ */ null, null, null, null, - /* ~ more_keys_for_nordic_row2_10 */ + /* ~ morekeys_nordic_row2_10 */ // U+045E: "ў" CYRILLIC SMALL LETTER SHORT U - /* keylabel_for_east_slavic_row1_9 */ "\u045E", + /* keyspec_east_slavic_row1_9 */ "\u045E", // U+044B: "ы" CYRILLIC SMALL LETTER YERU - /* keylabel_for_east_slavic_row2_2 */ "\u044B", + /* keyspec_east_slavic_row2_2 */ "\u044B", // U+044D: "э" CYRILLIC SMALL LETTER E - /* keylabel_for_east_slavic_row2_11 */ "\u044D", + /* keyspec_east_slavic_row2_11 */ "\u044D", // U+0456: "і" CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I - /* keylabel_for_east_slavic_row3_5 */ "\u0456", + /* keyspec_east_slavic_row3_5 */ "\u0456", // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN - /* more_keys_for_cyrillic_soft_sign */ "\u044A", + /* morekeys_cyrillic_soft_sign */ "\u044A", }; /* Language bg: Bulgarian */ private static final String[] LANGUAGE_bg = { - /* more_keys_for_a ~ */ + /* morekeys_a ~ */ null, null, null, null, null, null, - /* ~ more_keys_for_c */ + /* ~ morekeys_c */ // single_quotes of Bulgarian is default single_quotes_right_left. /* double_quotes */ "!text/double_9qm_lqm", - /* more_keys_for_n */ null, + /* morekeys_n */ null, /* single_quotes */ null, // Label for "switch to alphabetic" key. // U+0410: "А" CYRILLIC CAPITAL LETTER A // U+0411: "Б" CYRILLIC CAPITAL LETTER BE // U+0412: "В" CYRILLIC CAPITAL LETTER VE - /* label_to_alpha_key */ "\u0410\u0411\u0412", + /* keylabel_to_alpha */ "\u0410\u0411\u0412", }; /* Language ca: Catalan */ @@ -755,7 +748,7 @@ public final class KeyboardTextsTable { // U+00E6: "æ" LATIN SMALL LETTER AE // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON // U+00AA: "ª" FEMININE ORDINAL INDICATOR - /* more_keys_for_a */ "\u00E0,\u00E1,\u00E4,\u00E2,\u00E3,\u00E5,\u0105,\u00E6,\u0101,\u00AA", + /* morekeys_a */ "\u00E0,\u00E1,\u00E4,\u00E2,\u00E3,\u00E5,\u0105,\u00E6,\u0101,\u00AA", // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS @@ -765,13 +758,13 @@ public final class KeyboardTextsTable { // U+0153: "œ" LATIN SMALL LIGATURE OE // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON // U+00BA: "º" MASCULINE ORDINAL INDICATOR - /* more_keys_for_o */ "\u00F2,\u00F3,\u00F6,\u00F4,\u00F5,\u00F8,\u0153,\u014D,\u00BA", + /* morekeys_o */ "\u00F2,\u00F3,\u00F6,\u00F4,\u00F5,\u00F8,\u0153,\u014D,\u00BA", // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON - /* more_keys_for_u */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B", + /* morekeys_u */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B", // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS @@ -779,47 +772,47 @@ public final class KeyboardTextsTable { // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON - /* more_keys_for_e */ "\u00E8,\u00E9,\u00EB,\u00EA,\u0119,\u0117,\u0113", + /* morekeys_e */ "\u00E8,\u00E9,\u00EB,\u00EA,\u0119,\u0117,\u0113", // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON - /* more_keys_for_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B", + /* morekeys_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B", // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE // U+010D: "č" LATIN SMALL LETTER C WITH CARON - /* more_keys_for_c */ "\u00E7,\u0107,\u010D", + /* morekeys_c */ "\u00E7,\u0107,\u010D", /* double_quotes */ null, // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE - /* more_keys_for_n */ "\u00F1,\u0144", + /* morekeys_n */ "\u00F1,\u0144", /* single_quotes ~ */ null, null, null, null, null, null, null, - /* ~ more_keys_for_t */ + /* ~ morekeys_t */ // U+00B7: "·" MIDDLE DOT // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE - /* more_keys_for_l */ "l\u00B7l,\u0142", - /* more_keys_for_g ~ */ + /* morekeys_l */ "l\u00B7l,\u0142", + /* morekeys_g ~ */ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, - /* ~ additional_more_keys_for_symbols_0 */ + null, null, null, null, null, null, null, null, + /* ~ additional_morekeys_symbols_0 */ // U+00B7: "·" MIDDLE DOT - /* more_keys_for_punctuation */ "!autoColumnOrder!9,\\,,?,!,\u00B7,#,),(,/,;,',@,:,-,\",+,\\%,&", - /* more_keys_for_star ~ */ + /* morekeys_punctuation */ "!autoColumnOrder!9,\\,,?,!,\u00B7,#,),(,/,;,',@,:,-,\",+,\\%,&", + /* morekeys_star ~ */ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - /* ~ more_keys_for_swiss_row2_11 */ + /* ~ morekeys_swiss_row2_11 */ // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA - /* keylabel_for_spanish_row2_10 */ "\u00E7", - /* more_keys_for_bullet ~ */ + /* keyspec_spanish_row2_10 */ "\u00E7", + /* morekeys_bullet ~ */ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - /* ~ more_keys_for_currency_dollar */ - /* more_keys_for_tablet_punctuation */ "!autoColumnOrder!8,\\,,',\u00B7,#,),(,/,;,@,:,-,\",+,\\%,&", + /* ~ morekeys_currency_dollar */ + /* morekeys_tablet_punctuation */ "!autoColumnOrder!8,\\,,',\u00B7,#,),(,/,;,@,:,-,\",+,\\%,&", }; /* Language cs: Czech */ @@ -832,7 +825,7 @@ public final class KeyboardTextsTable { // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON - /* more_keys_for_a */ "\u00E1,\u00E0,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101", + /* morekeys_a */ "\u00E1,\u00E0,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101", // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX @@ -841,14 +834,14 @@ public final class KeyboardTextsTable { // U+0153: "œ" LATIN SMALL LIGATURE OE // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON - /* more_keys_for_o */ "\u00F3,\u00F6,\u00F4,\u00F2,\u00F5,\u0153,\u00F8,\u014D", + /* morekeys_o */ "\u00F3,\u00F6,\u00F4,\u00F2,\u00F5,\u0153,\u00F8,\u014D", // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE // U+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON - /* more_keys_for_u */ "\u00FA,\u016F,\u00FB,\u00FC,\u00F9,\u016B", + /* morekeys_u */ "\u00FA,\u016F,\u00FB,\u00FC,\u00F9,\u016B", // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE // U+011B: "ě" LATIN SMALL LETTER E WITH CARON // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE @@ -857,47 +850,47 @@ public final class KeyboardTextsTable { // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON - /* more_keys_for_e */ "\u00E9,\u011B,\u00E8,\u00EA,\u00EB,\u0119,\u0117,\u0113", + /* morekeys_e */ "\u00E9,\u011B,\u00E8,\u00EA,\u00EB,\u0119,\u0117,\u0113", // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON - /* more_keys_for_i */ "\u00ED,\u00EE,\u00EF,\u00EC,\u012F,\u012B", + /* morekeys_i */ "\u00ED,\u00EE,\u00EF,\u00EC,\u012F,\u012B", // U+010D: "č" LATIN SMALL LETTER C WITH CARON // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE - /* more_keys_for_c */ "\u010D,\u00E7,\u0107", + /* morekeys_c */ "\u010D,\u00E7,\u0107", /* double_quotes */ "!text/double_9qm_lqm", // U+0148: "ň" LATIN SMALL LETTER N WITH CARON // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE - /* more_keys_for_n */ "\u0148,\u00F1,\u0144", + /* morekeys_n */ "\u0148,\u00F1,\u0144", /* single_quotes */ "!text/single_9qm_lqm", - /* label_to_alpha_key */ null, + /* keylabel_to_alpha */ null, // U+0161: "š" LATIN SMALL LETTER S WITH CARON // U+00DF: "ß" LATIN SMALL LETTER SHARP S // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE - /* more_keys_for_s */ "\u0161,\u00DF,\u015B", + /* morekeys_s */ "\u0161,\u00DF,\u015B", // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS - /* more_keys_for_y */ "\u00FD,\u00FF", + /* morekeys_y */ "\u00FD,\u00FF", // U+010F: "ď" LATIN SMALL LETTER D WITH CARON - /* more_keys_for_d */ "\u010F", + /* morekeys_d */ "\u010F", // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE - /* more_keys_for_z */ "\u017E,\u017A,\u017C", + /* morekeys_z */ "\u017E,\u017A,\u017C", // U+0165: "ť" LATIN SMALL LETTER T WITH CARON - /* more_keys_for_t */ "\u0165", - /* more_keys_for_l */ null, - /* more_keys_for_g */ null, + /* morekeys_t */ "\u0165", + /* morekeys_l */ null, + /* morekeys_g */ null, /* single_angle_quotes */ "!text/single_raqm_laqm", /* double_angle_quotes */ "!text/double_raqm_laqm", - /* keylabel_for_currency */ null, + /* keyspec_currency */ null, // U+0159: "ř" LATIN SMALL LETTER R WITH CARON - /* more_keys_for_r */ "\u0159", + /* morekeys_r */ "\u0159", }; /* Language da: Danish */ @@ -908,65 +901,65 @@ public final class KeyboardTextsTable { // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON - /* more_keys_for_a */ "\u00E1,\u00E4,\u00E0,\u00E2,\u00E3,\u0101", + /* morekeys_a */ "\u00E1,\u00E4,\u00E0,\u00E2,\u00E3,\u0101", // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE // U+0153: "œ" LATIN SMALL LIGATURE OE // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON - /* more_keys_for_o */ "\u00F3,\u00F4,\u00F2,\u00F5,\u0153,\u014D", + /* morekeys_o */ "\u00F3,\u00F4,\u00F2,\u00F5,\u0153,\u014D", // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON - /* more_keys_for_u */ "\u00FA,\u00FC,\u00FB,\u00F9,\u016B", + /* morekeys_u */ "\u00FA,\u00FC,\u00FB,\u00F9,\u016B", // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS - /* more_keys_for_e */ "\u00E9,\u00EB", + /* morekeys_e */ "\u00E9,\u00EB", // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS - /* more_keys_for_i */ "\u00ED,\u00EF", - /* more_keys_for_c */ null, + /* morekeys_i */ "\u00ED,\u00EF", + /* morekeys_c */ null, /* double_quotes */ "!text/double_9qm_lqm", // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE - /* more_keys_for_n */ "\u00F1,\u0144", + /* morekeys_n */ "\u00F1,\u0144", /* single_quotes */ "!text/single_9qm_lqm", - /* label_to_alpha_key */ null, + /* keylabel_to_alpha */ null, // U+00DF: "ß" LATIN SMALL LETTER SHARP S // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE // U+0161: "š" LATIN SMALL LETTER S WITH CARON - /* more_keys_for_s */ "\u00DF,\u015B,\u0161", + /* morekeys_s */ "\u00DF,\u015B,\u0161", // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS - /* more_keys_for_y */ "\u00FD,\u00FF", + /* morekeys_y */ "\u00FD,\u00FF", // U+00F0: "ð" LATIN SMALL LETTER ETH - /* more_keys_for_d */ "\u00F0", - /* more_keys_for_z */ null, - /* more_keys_for_t */ null, + /* morekeys_d */ "\u00F0", + /* morekeys_z */ null, + /* morekeys_t */ null, // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE - /* more_keys_for_l */ "\u0142", - /* more_keys_for_g */ null, + /* morekeys_l */ "\u0142", + /* morekeys_g */ null, /* single_angle_quotes */ "!text/single_raqm_laqm", /* double_angle_quotes */ "!text/double_raqm_laqm", - /* keylabel_for_currency ~ */ + /* keyspec_currency ~ */ null, null, null, null, - /* ~ more_keys_for_cyrillic_ie */ + /* ~ morekeys_cyrillic_ie */ // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE - /* keylabel_for_nordic_row1_11 */ "\u00E5", + /* keyspec_nordic_row1_11 */ "\u00E5", // U+00E6: "æ" LATIN SMALL LETTER AE - /* keylabel_for_nordic_row2_10 */ "\u00E6", + /* keyspec_nordic_row2_10 */ "\u00E6", // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE - /* keylabel_for_nordic_row2_11 */ "\u00F8", + /* keyspec_nordic_row2_11 */ "\u00F8", // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS - /* more_keys_for_nordic_row2_10 */ "\u00E4", - /* keylabel_for_east_slavic_row1_9 ~ */ + /* morekeys_nordic_row2_10 */ "\u00E4", + /* keyspec_east_slavic_row1_9 ~ */ null, null, null, null, null, - /* ~ more_keys_for_cyrillic_soft_sign */ + /* ~ morekeys_cyrillic_soft_sign */ // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS - /* more_keys_for_nordic_row2_11 */ "\u00F6", + /* morekeys_nordic_row2_11 */ "\u00F6", }; /* Language de: German */ @@ -979,7 +972,7 @@ public final class KeyboardTextsTable { // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON - /* more_keys_for_a */ "\u00E4,\u00E2,\u00E0,\u00E1,\u00E6,\u00E3,\u00E5,\u0101", + /* morekeys_a */ "\u00E4,\u00E2,\u00E0,\u00E1,\u00E6,\u00E3,\u00E5,\u0101", // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE @@ -988,67 +981,67 @@ public final class KeyboardTextsTable { // U+0153: "œ" LATIN SMALL LIGATURE OE // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON - /* more_keys_for_o */ "\u00F6,\u00F4,\u00F2,\u00F3,\u00F5,\u0153,\u00F8,\u014D", + /* morekeys_o */ "\u00F6,\u00F4,\u00F2,\u00F3,\u00F5,\u0153,\u00F8,\u014D", // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON - /* more_keys_for_u */ "\u00FC,\u00FB,\u00F9,\u00FA,\u016B", + /* morekeys_u */ "\u00FC,\u00FB,\u00F9,\u00FA,\u016B", // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE - /* more_keys_for_e */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0117", - /* more_keys_for_i */ null, - /* more_keys_for_c */ null, + /* morekeys_e */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0117", + /* morekeys_i */ null, + /* morekeys_c */ null, /* double_quotes */ "!text/double_9qm_lqm", // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE - /* more_keys_for_n */ "\u00F1,\u0144", + /* morekeys_n */ "\u00F1,\u0144", /* single_quotes */ "!text/single_9qm_lqm", - /* label_to_alpha_key */ null, + /* keylabel_to_alpha */ null, // U+00DF: "ß" LATIN SMALL LETTER SHARP S // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE // U+0161: "š" LATIN SMALL LETTER S WITH CARON - /* more_keys_for_s */ "\u00DF,\u015B,\u0161", - /* more_keys_for_y ~ */ + /* morekeys_s */ "\u00DF,\u015B,\u0161", + /* morekeys_y ~ */ null, null, null, null, null, null, - /* ~ more_keys_for_g */ + /* ~ morekeys_g */ /* single_angle_quotes */ "!text/single_raqm_laqm", /* double_angle_quotes */ "!text/double_raqm_laqm", - /* keylabel_for_currency ~ */ + /* keyspec_currency ~ */ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, - /* ~ more_keys_for_cyrillic_i */ + null, null, null, null, null, null, + /* ~ keyspec_south_slavic_row3_8 */ // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS - /* keylabel_for_swiss_row1_11 */ "\u00FC", + /* keyspec_swiss_row1_11 */ "\u00FC", // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS - /* keylabel_for_swiss_row2_10 */ "\u00F6", + /* keyspec_swiss_row2_10 */ "\u00F6", // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS - /* keylabel_for_swiss_row2_11 */ "\u00E4", + /* keyspec_swiss_row2_11 */ "\u00E4", // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE - /* more_keys_for_swiss_row1_11 */ "\u00E8", + /* morekeys_swiss_row1_11 */ "\u00E8", // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE - /* more_keys_for_swiss_row2_10 */ "\u00E9", + /* morekeys_swiss_row2_10 */ "\u00E9", // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE - /* more_keys_for_swiss_row2_11 */ "\u00E0", + /* morekeys_swiss_row2_11 */ "\u00E0", }; /* Language el: Greek */ private static final String[] LANGUAGE_el = { - /* more_keys_for_a ~ */ + /* morekeys_a ~ */ null, null, null, null, null, null, null, null, null, /* ~ single_quotes */ // Label for "switch to alphabetic" key. // U+0391: "Α" GREEK CAPITAL LETTER ALPHA // U+0392: "Β" GREEK CAPITAL LETTER BETA // U+0393: "Γ" GREEK CAPITAL LETTER GAMMA - /* label_to_alpha_key */ "\u0391\u0392\u0393", + /* keylabel_to_alpha */ "\u0391\u0392\u0393", }; /* Language en: English */ @@ -1061,7 +1054,7 @@ public final class KeyboardTextsTable { // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON - /* more_keys_for_a */ "\u00E0,\u00E1,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101", + /* morekeys_a */ "\u00E0,\u00E1,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101", // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE @@ -1070,34 +1063,34 @@ public final class KeyboardTextsTable { // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE - /* more_keys_for_o */ "\u00F4,\u00F6,\u00F2,\u00F3,\u0153,\u00F8,\u014D,\u00F5", + /* morekeys_o */ "\u00F4,\u00F6,\u00F2,\u00F3,\u0153,\u00F8,\u014D,\u00F5", // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON - /* more_keys_for_u */ "\u00FB,\u00FC,\u00F9,\u00FA,\u016B", + /* morekeys_u */ "\u00FB,\u00FC,\u00F9,\u00FA,\u016B", // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON - /* more_keys_for_e */ "\u00E8,\u00E9,\u00EA,\u00EB,\u0113", + /* morekeys_e */ "\u00E8,\u00E9,\u00EA,\u00EB,\u0113", // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE - /* more_keys_for_i */ "\u00EE,\u00EF,\u00ED,\u012B,\u00EC", + /* morekeys_i */ "\u00EE,\u00EF,\u00ED,\u012B,\u00EC", // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA - /* more_keys_for_c */ "\u00E7", + /* morekeys_c */ "\u00E7", /* double_quotes */ null, // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE - /* more_keys_for_n */ "\u00F1", + /* morekeys_n */ "\u00F1", /* single_quotes */ null, - /* label_to_alpha_key */ null, + /* keylabel_to_alpha */ null, // U+00DF: "ß" LATIN SMALL LETTER SHARP S - /* more_keys_for_s */ "\u00DF", + /* morekeys_s */ "\u00DF", }; /* Language eo: Esperanto */ @@ -1113,7 +1106,7 @@ public final class KeyboardTextsTable { // U+0103: "ă" LATIN SMALL LETTER A WITH BREVE // U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK // U+00AA: "ª" FEMININE ORDINAL INDICATOR - /* more_keys_for_a */ "\u00E1,\u00E0,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101,\u0103,\u0105,\u00AA", + /* morekeys_a */ "\u00E1,\u00E0,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101,\u0103,\u0105,\u00AA", // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX @@ -1124,7 +1117,7 @@ public final class KeyboardTextsTable { // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON // U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE // U+00BA: "º" MASCULINE ORDINAL INDICATOR - /* more_keys_for_o */ "\u00F3,\u00F6,\u00F4,\u00F2,\u00F5,\u0153,\u00F8,\u014D,\u0151,\u00BA", + /* morekeys_o */ "\u00F3,\u00F6,\u00F4,\u00F2,\u00F5,\u0153,\u00F8,\u014D,\u0151,\u00BA", // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE // U+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX @@ -1135,7 +1128,7 @@ public final class KeyboardTextsTable { // U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE // U+0173: "ų" LATIN SMALL LETTER U WITH OGONEK // U+00B5: "µ" MICRO SIGN - /* more_keys_for_u */ "\u00FA,\u016F,\u00FB,\u00FC,\u00F9,\u016B,\u0169,\u0171,\u0173,\u00B5", + /* morekeys_u */ "\u00FA,\u016F,\u00FB,\u00FC,\u00F9,\u016B,\u0169,\u0171,\u0173,\u00B5", // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE // U+011B: "ě" LATIN SMALL LETTER E WITH CARON // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE @@ -1144,7 +1137,7 @@ public final class KeyboardTextsTable { // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON - /* more_keys_for_e */ "\u00E9,\u011B,\u00E8,\u00EA,\u00EB,\u0119,\u0117,\u0113", + /* morekeys_e */ "\u00E9,\u011B,\u00E8,\u00EA,\u00EB,\u0119,\u0117,\u0113", // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS @@ -1154,12 +1147,12 @@ public final class KeyboardTextsTable { // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON // U+0131: "ı" LATIN SMALL LETTER DOTLESS I // U+0133: "ij" LATIN SMALL LIGATURE IJ - /* more_keys_for_i */ "\u00ED,\u00EE,\u00EF,\u0129,\u00EC,\u012F,\u012B,\u0131,\u0133", + /* morekeys_i */ "\u00ED,\u00EE,\u00EF,\u0129,\u00EC,\u012F,\u012B,\u0131,\u0133", // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE // U+010D: "č" LATIN SMALL LETTER C WITH CARON // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA // U+010B: "ċ" LATIN SMALL LETTER C WITH DOT ABOVE - /* more_keys_for_c */ "\u0107,\u010D,\u00E7,\u010B", + /* morekeys_c */ "\u0107,\u010D,\u00E7,\u010B", /* double_quotes */ null, // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE @@ -1167,88 +1160,88 @@ public final class KeyboardTextsTable { // U+0148: "ň" LATIN SMALL LETTER N WITH CARON // U+0149: "ʼn" LATIN SMALL LETTER N PRECEDED BY APOSTROPHE // U+014B: "ŋ" LATIN SMALL LETTER ENG - /* more_keys_for_n */ "\u00F1,\u0144,\u0146,\u0148,\u0149,\u014B", + /* morekeys_n */ "\u00F1,\u0144,\u0146,\u0148,\u0149,\u014B", /* single_quotes */ null, - /* label_to_alpha_key */ null, + /* keylabel_to_alpha */ null, // U+00DF: "ß" LATIN SMALL LETTER SHARP S // U+0161: "š" LATIN SMALL LETTER S WITH CARON // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE // U+0219: "ș" LATIN SMALL LETTER S WITH COMMA BELOW // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA - /* more_keys_for_s */ "\u00DF,\u0161,\u015B,\u0219,\u015F", + /* morekeys_s */ "\u00DF,\u0161,\u015B,\u0219,\u015F", // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE // U+0177: "ŷ" LATIN SMALL LETTER Y WITH CIRCUMFLEX // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS // U+00FE: "þ" LATIN SMALL LETTER THORN - /* more_keys_for_y */ "y,\u00FD,\u0177,\u00FF,\u00FE", + /* morekeys_y */ "y,\u00FD,\u0177,\u00FF,\u00FE", // U+00F0: "ð" LATIN SMALL LETTER ETH // U+010F: "ď" LATIN SMALL LETTER D WITH CARON // U+0111: "đ" LATIN SMALL LETTER D WITH STROKE - /* more_keys_for_d */ "\u00F0,\u010F,\u0111", + /* morekeys_d */ "\u00F0,\u010F,\u0111", // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON - /* more_keys_for_z */ "\u017A,\u017C,\u017E", + /* morekeys_z */ "\u017A,\u017C,\u017E", // U+0165: "ť" LATIN SMALL LETTER T WITH CARON // U+021B: "ț" LATIN SMALL LETTER T WITH COMMA BELOW // U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA // U+0167: "ŧ" LATIN SMALL LETTER T WITH STROKE - /* more_keys_for_t */ "\u0165,\u021B,\u0163,\u0167", + /* morekeys_t */ "\u0165,\u021B,\u0163,\u0167", // U+013A: "ĺ" LATIN SMALL LETTER L WITH ACUTE // U+013C: "ļ" LATIN SMALL LETTER L WITH CEDILLA // U+013E: "ľ" LATIN SMALL LETTER L WITH CARON // U+0140: "ŀ" LATIN SMALL LETTER L WITH MIDDLE DOT // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE - /* more_keys_for_l */ "\u013A,\u013C,\u013E,\u0140,\u0142", + /* morekeys_l */ "\u013A,\u013C,\u013E,\u0140,\u0142", // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE // U+0121: "ġ" LATIN SMALL LETTER G WITH DOT ABOVE // U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA - /* more_keys_for_g */ "\u011F,\u0121,\u0123", + /* morekeys_g */ "\u011F,\u0121,\u0123", /* single_angle_quotes ~ */ null, null, null, - /* ~ keylabel_for_currency */ + /* ~ keyspec_currency */ // U+0159: "ř" LATIN SMALL LETTER R WITH CARON // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA - /* more_keys_for_r */ "\u0159,\u0155,\u0157", + /* morekeys_r */ "\u0159,\u0155,\u0157", // U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA // U+0138: "ĸ" LATIN SMALL LETTER KRA - /* more_keys_for_k */ "\u0137,\u0138", - /* more_keys_for_cyrillic_ie ~ */ + /* morekeys_k */ "\u0137,\u0138", + /* morekeys_cyrillic_ie ~ */ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, - /* ~ more_keys_for_question */ + null, null, null, null, null, null, + /* ~ morekeys_question */ // U+0125: "ĥ" LATIN SMALL LETTER H WITH CIRCUMFLEX // U+0127: "ħ" LATIN SMALL LETTER H WITH STROKE - /* more_keys_for_h */ "\u0125,\u0127", + /* morekeys_h */ "\u0125,\u0127", // U+0175: "ŵ" LATIN SMALL LETTER W WITH CIRCUMFLEX - /* more_keys_for_w */ "w,\u0175", - /* more_keys_for_cyrillic_u ~ */ + /* morekeys_w */ "w,\u0175", + /* morekeys_east_slavic_row2_2 ~ */ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - /* ~ more_keys_for_swiss_row2_11 */ + /* ~ morekeys_swiss_row2_11 */ // U+0135: "ĵ" LATIN SMALL LETTER J WITH CIRCUMFLEX - /* keylabel_for_spanish_row2_10 */ "\u0135", - /* more_keys_for_bullet ~ */ + /* keyspec_spanish_row2_10 */ "\u0135", + /* morekeys_bullet ~ */ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - /* ~ more_keys_for_symbols_percent */ + /* ~ morekeys_symbols_percent */ // U+0175: "ŵ" LATIN SMALL LETTER W WITH CIRCUMFLEX - /* more_keys_for_v */ "w,\u0175", - /* more_keys_for_j ~ */ + /* morekeys_v */ "w,\u0175", + /* morekeys_j ~ */ null, null, null, null, null, null, null, null, null, null, null, null, - /* ~ more_keys_for_exclamation */ - /* more_keys_for_q */ "q", - /* more_keys_for_x */ "x", + /* ~ morekeys_exclamation */ + /* morekeys_q */ "q", + /* morekeys_x */ "x", // U+015D: "ŝ" LATIN SMALL LETTER S WITH CIRCUMFLEX - /* keylabel_for_q */ "\u015D", + /* keyspec_q */ "\u015D", // U+011D: "ĝ" LATIN SMALL LETTER G WITH CIRCUMFLEX - /* keylabel_for_w */ "\u011D", + /* keyspec_w */ "\u011D", // U+016D: "ŭ" LATIN SMALL LETTER U WITH BREVE - /* keylabel_for_y */ "\u016D", + /* keyspec_y */ "\u016D", // U+0109: "ĉ" LATIN SMALL LETTER C WITH CIRCUMFLEX - /* keylabel_for_x */ "\u0109", + /* keyspec_x */ "\u0109", }; /* Language es: Spanish */ @@ -1263,7 +1256,7 @@ public final class KeyboardTextsTable { // U+00E6: "æ" LATIN SMALL LETTER AE // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON // U+00AA: "ª" FEMININE ORDINAL INDICATOR - /* more_keys_for_a */ "\u00E1,\u00E0,\u00E4,\u00E2,\u00E3,\u00E5,\u0105,\u00E6,\u0101,\u00AA", + /* morekeys_a */ "\u00E1,\u00E0,\u00E4,\u00E2,\u00E3,\u00E5,\u0105,\u00E6,\u0101,\u00AA", // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS @@ -1273,13 +1266,13 @@ public final class KeyboardTextsTable { // U+0153: "œ" LATIN SMALL LIGATURE OE // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON // U+00BA: "º" MASCULINE ORDINAL INDICATOR - /* more_keys_for_o */ "\u00F3,\u00F2,\u00F6,\u00F4,\u00F5,\u00F8,\u0153,\u014D,\u00BA", + /* morekeys_o */ "\u00F3,\u00F2,\u00F6,\u00F4,\u00F5,\u00F8,\u0153,\u014D,\u00BA", // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON - /* more_keys_for_u */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B", + /* morekeys_u */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B", // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS @@ -1287,31 +1280,31 @@ public final class KeyboardTextsTable { // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON - /* more_keys_for_e */ "\u00E9,\u00E8,\u00EB,\u00EA,\u0119,\u0117,\u0113", + /* morekeys_e */ "\u00E9,\u00E8,\u00EB,\u00EA,\u0119,\u0117,\u0113", // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON - /* more_keys_for_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B", + /* morekeys_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B", // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE // U+010D: "č" LATIN SMALL LETTER C WITH CARON - /* more_keys_for_c */ "\u00E7,\u0107,\u010D", + /* morekeys_c */ "\u00E7,\u0107,\u010D", /* double_quotes */ null, // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE - /* more_keys_for_n */ "\u00F1,\u0144", + /* morekeys_n */ "\u00F1,\u0144", /* single_quotes ~ */ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, - /* ~ additional_more_keys_for_symbols_0 */ + null, + /* ~ additional_morekeys_symbols_0 */ // U+00A1: "¡" INVERTED EXCLAMATION MARK // U+00BF: "¿" INVERTED QUESTION MARK - /* more_keys_for_punctuation */ "!autoColumnOrder!9,\\,,?,!,#,),(,/,;,\u00A1,',@,:,-,\",+,\\%,&,\u00BF", + /* morekeys_punctuation */ "!autoColumnOrder!9,\\,,?,!,#,),(,/,;,\u00A1,',@,:,-,\",+,\\%,&,\u00BF", }; /* Language et_EE: Estonian (Estonia) */ @@ -1325,7 +1318,7 @@ public final class KeyboardTextsTable { // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE // U+00E6: "æ" LATIN SMALL LETTER AE // U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK - /* more_keys_for_a */ "\u00E4,\u0101,\u00E0,\u00E1,\u00E2,\u00E3,\u00E5,\u00E6,\u0105", + /* morekeys_a */ "\u00E4,\u0101,\u00E0,\u00E1,\u00E2,\u00E3,\u00E5,\u00E6,\u0105", // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE @@ -1334,7 +1327,7 @@ public final class KeyboardTextsTable { // U+0153: "œ" LATIN SMALL LIGATURE OE // U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE - /* more_keys_for_o */ "\u00F6,\u00F5,\u00F2,\u00F3,\u00F4,\u0153,\u0151,\u00F8", + /* morekeys_o */ "\u00F6,\u00F5,\u00F2,\u00F3,\u00F4,\u0153,\u0151,\u00F8", // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON // U+0173: "ų" LATIN SMALL LETTER U WITH OGONEK @@ -1343,7 +1336,7 @@ public final class KeyboardTextsTable { // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX // U+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE // U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE - /* more_keys_for_u */ "\u00FC,\u016B,\u0173,\u00F9,\u00FA,\u00FB,\u016F,\u0171", + /* morekeys_u */ "\u00FC,\u016B,\u0173,\u00F9,\u00FA,\u00FB,\u016F,\u0171", // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE @@ -1352,7 +1345,7 @@ public final class KeyboardTextsTable { // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK // U+011B: "ě" LATIN SMALL LETTER E WITH CARON - /* more_keys_for_e */ "\u0113,\u00E8,\u0117,\u00E9,\u00EA,\u00EB,\u0119,\u011B", + /* morekeys_e */ "\u0113,\u00E8,\u0117,\u00E9,\u00EA,\u00EB,\u0119,\u011B", // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK @@ -1360,61 +1353,61 @@ public final class KeyboardTextsTable { // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS // U+0131: "ı" LATIN SMALL LETTER DOTLESS I - /* more_keys_for_i */ "\u012B,\u00EC,\u012F,\u00ED,\u00EE,\u00EF,\u0131", + /* morekeys_i */ "\u012B,\u00EC,\u012F,\u00ED,\u00EE,\u00EF,\u0131", // U+010D: "č" LATIN SMALL LETTER C WITH CARON // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE - /* more_keys_for_c */ "\u010D,\u00E7,\u0107", + /* morekeys_c */ "\u010D,\u00E7,\u0107", /* double_quotes */ "!text/double_9qm_lqm", // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE - /* more_keys_for_n */ "\u0146,\u00F1,\u0144", + /* morekeys_n */ "\u0146,\u00F1,\u0144", /* single_quotes */ "!text/single_9qm_lqm", - /* label_to_alpha_key */ null, + /* keylabel_to_alpha */ null, // U+0161: "š" LATIN SMALL LETTER S WITH CARON // U+00DF: "ß" LATIN SMALL LETTER SHARP S // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA - /* more_keys_for_s */ "\u0161,\u00DF,\u015B,\u015F", + /* morekeys_s */ "\u0161,\u00DF,\u015B,\u015F", // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS - /* more_keys_for_y */ "\u00FD,\u00FF", + /* morekeys_y */ "\u00FD,\u00FF", // U+010F: "ď" LATIN SMALL LETTER D WITH CARON - /* more_keys_for_d */ "\u010F", + /* morekeys_d */ "\u010F", // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE - /* more_keys_for_z */ "\u017E,\u017C,\u017A", + /* morekeys_z */ "\u017E,\u017C,\u017A", // U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA // U+0165: "ť" LATIN SMALL LETTER T WITH CARON - /* more_keys_for_t */ "\u0163,\u0165", + /* morekeys_t */ "\u0163,\u0165", // U+013C: "ļ" LATIN SMALL LETTER L WITH CEDILLA // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE // U+013A: "ĺ" LATIN SMALL LETTER L WITH ACUTE // U+013E: "ľ" LATIN SMALL LETTER L WITH CARON - /* more_keys_for_l */ "\u013C,\u0142,\u013A,\u013E", + /* morekeys_l */ "\u013C,\u0142,\u013A,\u013E", // U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE - /* more_keys_for_g */ "\u0123,\u011F", + /* morekeys_g */ "\u0123,\u011F", /* single_angle_quotes ~ */ null, null, null, - /* ~ keylabel_for_currency */ + /* ~ keyspec_currency */ // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA // U+0159: "ř" LATIN SMALL LETTER R WITH CARON // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE - /* more_keys_for_r */ "\u0157,\u0159,\u0155", + /* morekeys_r */ "\u0157,\u0159,\u0155", // U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA - /* more_keys_for_k */ "\u0137", - /* more_keys_for_cyrillic_ie */ null, + /* morekeys_k */ "\u0137", + /* morekeys_cyrillic_ie */ null, // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS - /* keylabel_for_nordic_row1_11 */ "\u00FC", + /* keyspec_nordic_row1_11 */ "\u00FC", // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS - /* keylabel_for_nordic_row2_10 */ "\u00F6", + /* keyspec_nordic_row2_10 */ "\u00F6", // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS - /* keylabel_for_nordic_row2_11 */ "\u00E4", + /* keyspec_nordic_row2_11 */ "\u00E4", // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE - /* more_keys_for_nordic_row2_10 */ "\u00F5", + /* morekeys_nordic_row2_10 */ "\u00F5", }; /* Language eu_ES: Basque (Spain) */ @@ -1429,7 +1422,7 @@ public final class KeyboardTextsTable { // U+00E6: "æ" LATIN SMALL LETTER AE // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON // U+00AA: "ª" FEMININE ORDINAL INDICATOR - /* more_keys_for_a */ "\u00E1,\u00E0,\u00E4,\u00E2,\u00E3,\u00E5,\u0105,\u00E6,\u0101,\u00AA", + /* morekeys_a */ "\u00E1,\u00E0,\u00E4,\u00E2,\u00E3,\u00E5,\u0105,\u00E6,\u0101,\u00AA", // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS @@ -1439,13 +1432,13 @@ public final class KeyboardTextsTable { // U+0153: "œ" LATIN SMALL LIGATURE OE // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON // U+00BA: "º" MASCULINE ORDINAL INDICATOR - /* more_keys_for_o */ "\u00F3,\u00F2,\u00F6,\u00F4,\u00F5,\u00F8,\u0153,\u014D,\u00BA", + /* morekeys_o */ "\u00F3,\u00F2,\u00F6,\u00F4,\u00F5,\u00F8,\u0153,\u014D,\u00BA", // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON - /* more_keys_for_u */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B", + /* morekeys_u */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B", // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS @@ -1453,27 +1446,27 @@ public final class KeyboardTextsTable { // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON - /* more_keys_for_e */ "\u00E9,\u00E8,\u00EB,\u00EA,\u0119,\u0117,\u0113", + /* morekeys_e */ "\u00E9,\u00E8,\u00EB,\u00EA,\u0119,\u0117,\u0113", // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON - /* more_keys_for_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B", + /* morekeys_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B", // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE // U+010D: "č" LATIN SMALL LETTER C WITH CARON - /* more_keys_for_c */ "\u00E7,\u0107,\u010D", + /* morekeys_c */ "\u00E7,\u0107,\u010D", /* double_quotes */ null, // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE - /* more_keys_for_n */ "\u00F1,\u0144", + /* morekeys_n */ "\u00F1,\u0144", }; /* Language fa: Persian */ private static final String[] LANGUAGE_fa = { - /* more_keys_for_a ~ */ + /* morekeys_a ~ */ null, null, null, null, null, null, null, null, null, /* ~ single_quotes */ // Label for "switch to alphabetic" key. @@ -1481,57 +1474,54 @@ public final class KeyboardTextsTable { // U+200C: ZERO WIDTH NON-JOINER // U+0628: "ب" ARABIC LETTER BEH // U+067E: "پ" ARABIC LETTER PEH - /* label_to_alpha_key */ "\u0627\u200C\u0628\u200C\u067E", - /* more_keys_for_s ~ */ + /* keylabel_to_alpha */ "\u0627\u200C\u0628\u200C\u067E", + /* morekeys_s ~ */ null, null, null, null, null, null, null, null, null, /* ~ double_angle_quotes */ // U+FDFC: "﷼" RIAL SIGN - /* keylabel_for_currency */ "\uFDFC", - /* more_keys_for_r ~ */ + /* keyspec_currency */ "\uFDFC", + /* morekeys_r ~ */ null, null, null, null, null, null, null, null, null, null, null, null, null, - /* ~ more_keys_for_nordic_row2_11 */ + /* ~ morekeys_nordic_row2_11 */ // U+06F1: "۱" EXTENDED ARABIC-INDIC DIGIT ONE - /* keylabel_for_symbols_1 */ "\u06F1", + /* keyspec_symbols_1 */ "\u06F1", // U+06F2: "۲" EXTENDED ARABIC-INDIC DIGIT TWO - /* keylabel_for_symbols_2 */ "\u06F2", + /* keyspec_symbols_2 */ "\u06F2", // U+06F3: "۳" EXTENDED ARABIC-INDIC DIGIT THREE - /* keylabel_for_symbols_3 */ "\u06F3", + /* keyspec_symbols_3 */ "\u06F3", // U+06F4: "۴" EXTENDED ARABIC-INDIC DIGIT FOUR - /* keylabel_for_symbols_4 */ "\u06F4", + /* keyspec_symbols_4 */ "\u06F4", // U+06F5: "۵" EXTENDED ARABIC-INDIC DIGIT FIVE - /* keylabel_for_symbols_5 */ "\u06F5", + /* keyspec_symbols_5 */ "\u06F5", // U+06F6: "۶" EXTENDED ARABIC-INDIC DIGIT SIX - /* keylabel_for_symbols_6 */ "\u06F6", + /* keyspec_symbols_6 */ "\u06F6", // U+06F7: "۷" EXTENDED ARABIC-INDIC DIGIT SEVEN - /* keylabel_for_symbols_7 */ "\u06F7", + /* keyspec_symbols_7 */ "\u06F7", // U+06F8: "۸" EXTENDED ARABIC-INDIC DIGIT EIGHT - /* keylabel_for_symbols_8 */ "\u06F8", + /* keyspec_symbols_8 */ "\u06F8", // U+06F9: "۹" EXTENDED ARABIC-INDIC DIGIT NINE - /* keylabel_for_symbols_9 */ "\u06F9", + /* keyspec_symbols_9 */ "\u06F9", // U+06F0: "۰" EXTENDED ARABIC-INDIC DIGIT ZERO - /* keylabel_for_symbols_0 */ "\u06F0", + /* keyspec_symbols_0 */ "\u06F0", // Label for "switch to symbols" key. // U+061F: "؟" ARABIC QUESTION MARK - /* label_to_symbol_key */ "\u06F3\u06F2\u06F1\u061F", - // Label for "switch to symbols with microphone" key. This string shouldn't include the "mic" - // part because it'll be appended by the code. - /* label_to_symbol_with_microphone_key */ "\u06F3\u06F2\u06F1", - /* additional_more_keys_for_symbols_1 */ "1", - /* additional_more_keys_for_symbols_2 */ "2", - /* additional_more_keys_for_symbols_3 */ "3", - /* additional_more_keys_for_symbols_4 */ "4", - /* additional_more_keys_for_symbols_5 */ "5", - /* additional_more_keys_for_symbols_6 */ "6", - /* additional_more_keys_for_symbols_7 */ "7", - /* additional_more_keys_for_symbols_8 */ "8", - /* additional_more_keys_for_symbols_9 */ "9", + /* keylabel_to_symbol */ "\u06F3\u06F2\u06F1\u061F", + /* additional_morekeys_symbols_1 */ "1", + /* additional_morekeys_symbols_2 */ "2", + /* additional_morekeys_symbols_3 */ "3", + /* additional_morekeys_symbols_4 */ "4", + /* additional_morekeys_symbols_5 */ "5", + /* additional_morekeys_symbols_6 */ "6", + /* additional_morekeys_symbols_7 */ "7", + /* additional_morekeys_symbols_8 */ "8", + /* additional_morekeys_symbols_9 */ "9", // U+066B: "٫" ARABIC DECIMAL SEPARATOR // U+066C: "٬" ARABIC THOUSANDS SEPARATOR - /* additional_more_keys_for_symbols_0 */ "0,\u066B,\u066C", - /* more_keys_for_punctuation */ null, + /* additional_morekeys_symbols_0 */ "0,\u066B,\u066C", + /* morekeys_punctuation */ null, // U+2605: "★" BLACK STAR // U+066D: "٭" ARABIC FIVE POINTED STAR - /* more_keys_for_star */ "\u2605,\u066D", + /* morekeys_star */ "\u2605,\u066D", /* keyspec_left_parenthesis */ "(|)", /* keyspec_right_parenthesis */ ")|(", /* keyspec_left_square_bracket */ "[|]", @@ -1551,22 +1541,22 @@ public final class KeyboardTextsTable { // U+061F: "؟" ARABIC QUESTION MARK // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK - /* keylabel_for_tablet_comma */ "\u060C", - /* more_keys_for_tablet_period */ "!text/more_keys_for_arabic_diacritics", + /* keyspec_tablet_comma */ "\u060C", + /* morekeys_tablet_period */ "!text/morekeys_arabic_diacritics", // U+00BF: "¿" INVERTED QUESTION MARK - /* more_keys_for_question */ "?,\u00BF", - /* more_keys_for_h ~ */ + /* morekeys_question */ "?,\u00BF", + /* morekeys_h ~ */ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - /* ~ keylabel_for_spanish_row2_10 */ + /* ~ keyspec_spanish_row2_10 */ // U+266A: "♪" EIGHTH NOTE - /* more_keys_for_bullet */ "\u266A", + /* morekeys_bullet */ "\u266A", // 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 - /* more_keys_for_left_parenthesis */ "!fixedColumnOrder!4,\uFD3E|\uFD3F,!text/keyspecs_for_left_parenthesis_more_keys", - /* more_keys_for_right_parenthesis */ "!fixedColumnOrder!4,\uFD3F|\uFD3E,!text/keyspecs_for_right_parenthesis_more_keys", + /* morekeys_left_parenthesis */ "!fixedColumnOrder!4,\uFD3E|\uFD3F,!text/keyspecs_left_parenthesis_more_keys", + /* morekeys_right_parenthesis */ "!fixedColumnOrder!4,\uFD3F|\uFD3E,!text/keyspecs_right_parenthesis_more_keys", // U+0655: "ٕ" ARABIC HAMZA BELOW // U+0652: "ْ" ARABIC SUKUN // U+0651: "ّ" ARABIC SHADDA @@ -1583,33 +1573,33 @@ public final class KeyboardTextsTable { // U+0640: "ـ" ARABIC TATWEEL // In order to make Tatweel easily distinguishable from other punctuations, we use consecutive Tatweels only for its displayed label. // Note: The space character is needed as a preceding letter to draw Arabic diacritics characters correctly. - /* more_keys_for_arabic_diacritics */ "!fixedColumnOrder!7, \u0655|\u0655, \u0652|\u0652, \u0651|\u0651, \u064C|\u064C, \u064D|\u064D, \u064B|\u064B, \u0654|\u0654, \u0656|\u0656, \u0670|\u0670, \u0653|\u0653, \u064F|\u064F, \u0650|\u0650, \u064E|\u064E,\u0640\u0640\u0640|\u0640", + /* morekeys_arabic_diacritics */ "!fixedColumnOrder!7, \u0655|\u0655, \u0652|\u0652, \u0651|\u0651, \u064C|\u064C, \u064D|\u064D, \u064B|\u064B, \u0654|\u0654, \u0656|\u0656, \u0670|\u0670, \u0653|\u0653, \u064F|\u064F, \u0650|\u0650, \u064E|\u064E,\u0640\u0640\u0640|\u0640", // U+060C: "،" ARABIC COMMA - /* keylabel_for_comma */ "\u060C", - /* keyhintlabel_for_tablet_comma */ "\u061F", - /* more_keys_for_tablet_comma */ "!fixedColumnOrder!4,:,!,\u061F,\u061B,-,/,!text/keyspec_left_double_angle_quote,!text/keyspec_right_double_angle_quote", + /* keyspec_comma */ "\u060C", + /* keyhintlabel_tablet_comma */ "\u061F", + /* morekeys_tablet_comma */ "!fixedColumnOrder!4,:,!,\u061F,\u061B,-,/,!text/keyspec_left_double_angle_quote,!text/keyspec_right_double_angle_quote", // U+064B: "ً" ARABIC FATHATAN - /* keyhintlabel_for_period */ "\u064B", - /* more_keys_for_period */ "!text/more_keys_for_arabic_diacritics", - /* keyhintlabel_for_tablet_period */ "\u064B", - /* keylabel_for_symbols_question */ "\u061F", - /* keylabel_for_symbols_semicolon */ "\u061B", + /* keyhintlabel_period */ "\u064B", + /* morekeys_period */ "!text/morekeys_arabic_diacritics", + /* keyhintlabel_tablet_period */ "\u064B", + /* keyspec_symbols_question */ "\u061F", + /* keyspec_symbols_semicolon */ "\u061B", // U+066A: "٪" ARABIC PERCENT SIGN - /* keylabel_for_symbols_percent */ "\u066A", - /* more_keys_for_symbols_semicolon */ ";", + /* keyspec_symbols_percent */ "\u066A", + /* morekeys_symbols_semicolon */ ";", // U+2030: "‰" PER MILLE SIGN - /* more_keys_for_symbols_percent */ "\\%,\u2030", - /* more_keys_for_v ~ */ + /* morekeys_symbols_percent */ "\\%,\u2030", + /* morekeys_v ~ */ null, null, null, null, null, null, null, null, - /* ~ more_keys_for_plus */ + /* ~ morekeys_plus */ // 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 - /* more_keys_for_less_than */ "!fixedColumnOrder!3,!text/keyspec_left_single_angle_quote,!text/keyspec_less_than_equal,!text/keyspec_less_than", - /* more_keys_for_greater_than */ "!fixedColumnOrder!3,!text/keyspec_right_single_angle_quote,!text/keyspec_greater_than_equal,!text/keyspec_greater_than", + /* morekeys_less_than */ "!fixedColumnOrder!3,!text/keyspec_left_single_angle_quote,!text/keyspec_less_than_equal,!text/keyspec_less_than", + /* morekeys_greater_than */ "!fixedColumnOrder!3,!text/keyspec_right_single_angle_quote,!text/keyspec_greater_than_equal,!text/keyspec_greater_than", }; /* Language fi: Finnish */ @@ -1620,7 +1610,7 @@ public final class KeyboardTextsTable { // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON - /* more_keys_for_a */ "\u00E6,\u00E0,\u00E1,\u00E2,\u00E3,\u0101", + /* morekeys_a */ "\u00E6,\u00E0,\u00E1,\u00E2,\u00E3,\u0101", // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE @@ -1628,38 +1618,38 @@ public final class KeyboardTextsTable { // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE // U+0153: "œ" LATIN SMALL LIGATURE OE // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON - /* more_keys_for_o */ "\u00F8,\u00F4,\u00F2,\u00F3,\u00F5,\u0153,\u014D", + /* morekeys_o */ "\u00F8,\u00F4,\u00F2,\u00F3,\u00F5,\u0153,\u014D", // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS - /* more_keys_for_u */ "\u00FC", - /* more_keys_for_e ~ */ + /* morekeys_u */ "\u00FC", + /* morekeys_e ~ */ null, null, null, null, null, null, null, - /* ~ label_to_alpha_key */ + /* ~ keylabel_to_alpha */ // U+0161: "š" LATIN SMALL LETTER S WITH CARON // U+00DF: "ß" LATIN SMALL LETTER SHARP S // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE - /* more_keys_for_s */ "\u0161,\u00DF,\u015B", - /* more_keys_for_y */ null, - /* more_keys_for_d */ null, + /* morekeys_s */ "\u0161,\u00DF,\u015B", + /* morekeys_y */ null, + /* morekeys_d */ null, // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE - /* more_keys_for_z */ "\u017E,\u017A,\u017C", - /* more_keys_for_t ~ */ + /* morekeys_z */ "\u017E,\u017A,\u017C", + /* morekeys_t ~ */ null, null, null, null, null, null, null, null, null, - /* ~ more_keys_for_cyrillic_ie */ + /* ~ morekeys_cyrillic_ie */ // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE - /* keylabel_for_nordic_row1_11 */ "\u00E5", + /* keyspec_nordic_row1_11 */ "\u00E5", // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS - /* keylabel_for_nordic_row2_10 */ "\u00F6", + /* keyspec_nordic_row2_10 */ "\u00F6", // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS - /* keylabel_for_nordic_row2_11 */ "\u00E4", + /* keyspec_nordic_row2_11 */ "\u00E4", // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE - /* more_keys_for_nordic_row2_10 */ "\u00F8", - /* keylabel_for_east_slavic_row1_9 ~ */ + /* morekeys_nordic_row2_10 */ "\u00F8", + /* keyspec_east_slavic_row1_9 ~ */ null, null, null, null, null, - /* ~ more_keys_for_cyrillic_soft_sign */ + /* ~ morekeys_cyrillic_soft_sign */ // U+00E6: "æ" LATIN SMALL LETTER AE - /* more_keys_for_nordic_row2_11 */ "\u00E6", + /* morekeys_nordic_row2_11 */ "\u00E6", }; /* Language fr: French */ @@ -1673,7 +1663,7 @@ public final class KeyboardTextsTable { // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON // U+00AA: "ª" FEMININE ORDINAL INDICATOR - /* more_keys_for_a */ "\u00E0,\u00E2,%,\u00E6,\u00E1,\u00E4,\u00E3,\u00E5,\u0101,\u00AA", + /* morekeys_a */ "\u00E0,\u00E2,%,\u00E6,\u00E1,\u00E4,\u00E3,\u00E5,\u0101,\u00AA", // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX // U+0153: "œ" LATIN SMALL LIGATURE OE // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS @@ -1683,13 +1673,13 @@ public final class KeyboardTextsTable { // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON // U+00BA: "º" MASCULINE ORDINAL INDICATOR - /* more_keys_for_o */ "\u00F4,\u0153,%,\u00F6,\u00F2,\u00F3,\u00F5,\u00F8,\u014D,\u00BA", + /* morekeys_o */ "\u00F4,\u0153,%,\u00F6,\u00F2,\u00F3,\u00F5,\u00F8,\u014D,\u00BA", // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON - /* more_keys_for_u */ "\u00F9,\u00FB,%,\u00FC,\u00FA,\u016B", + /* morekeys_u */ "\u00F9,\u00FB,%,\u00FC,\u00FA,\u016B", // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX @@ -1697,42 +1687,42 @@ public final class KeyboardTextsTable { // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON - /* more_keys_for_e */ "\u00E9,\u00E8,\u00EA,\u00EB,%,\u0119,\u0117,\u0113", + /* morekeys_e */ "\u00E9,\u00E8,\u00EA,\u00EB,%,\u0119,\u0117,\u0113", // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON - /* more_keys_for_i */ "\u00EE,%,\u00EF,\u00EC,\u00ED,\u012F,\u012B", + /* morekeys_i */ "\u00EE,%,\u00EF,\u00EC,\u00ED,\u012F,\u012B", // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE // U+010D: "č" LATIN SMALL LETTER C WITH CARON - /* more_keys_for_c */ "\u00E7,%,\u0107,\u010D", + /* morekeys_c */ "\u00E7,%,\u0107,\u010D", /* double_quotes ~ */ null, null, null, null, null, - /* ~ more_keys_for_s */ + /* ~ morekeys_s */ // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS - /* more_keys_for_y */ "%,\u00FF", - /* more_keys_for_d ~ */ + /* morekeys_y */ "%,\u00FF", + /* morekeys_d ~ */ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, - /* ~ more_keys_for_cyrillic_i */ + null, null, null, null, null, null, null, null, null, null, null, null, null, + /* ~ keyspec_south_slavic_row3_8 */ // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE - /* keylabel_for_swiss_row1_11 */ "\u00E8", + /* keyspec_swiss_row1_11 */ "\u00E8", // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE - /* keylabel_for_swiss_row2_10 */ "\u00E9", + /* keyspec_swiss_row2_10 */ "\u00E9", // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE - /* keylabel_for_swiss_row2_11 */ "\u00E0", + /* keyspec_swiss_row2_11 */ "\u00E0", // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS - /* more_keys_for_swiss_row1_11 */ "\u00FC", + /* morekeys_swiss_row1_11 */ "\u00FC", // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS - /* more_keys_for_swiss_row2_10 */ "\u00F6", + /* morekeys_swiss_row2_10 */ "\u00F6", // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS - /* more_keys_for_swiss_row2_11 */ "\u00E4", + /* morekeys_swiss_row2_11 */ "\u00E4", }; /* Language gl_ES: Gallegan (Spain) */ @@ -1747,7 +1737,7 @@ public final class KeyboardTextsTable { // U+00E6: "æ" LATIN SMALL LETTER AE // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON // U+00AA: "ª" FEMININE ORDINAL INDICATOR - /* more_keys_for_a */ "\u00E1,\u00E0,\u00E4,\u00E2,\u00E3,\u00E5,\u0105,\u00E6,\u0101,\u00AA", + /* morekeys_a */ "\u00E1,\u00E0,\u00E4,\u00E2,\u00E3,\u00E5,\u0105,\u00E6,\u0101,\u00AA", // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS @@ -1757,13 +1747,13 @@ public final class KeyboardTextsTable { // U+0153: "œ" LATIN SMALL LIGATURE OE // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON // U+00BA: "º" MASCULINE ORDINAL INDICATOR - /* more_keys_for_o */ "\u00F3,\u00F2,\u00F6,\u00F4,\u00F5,\u00F8,\u0153,\u014D,\u00BA", + /* morekeys_o */ "\u00F3,\u00F2,\u00F6,\u00F4,\u00F5,\u00F8,\u0153,\u014D,\u00BA", // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON - /* more_keys_for_u */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B", + /* morekeys_u */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B", // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS @@ -1771,108 +1761,105 @@ public final class KeyboardTextsTable { // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON - /* more_keys_for_e */ "\u00E9,\u00E8,\u00EB,\u00EA,\u0119,\u0117,\u0113", + /* morekeys_e */ "\u00E9,\u00E8,\u00EB,\u00EA,\u0119,\u0117,\u0113", // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON - /* more_keys_for_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B", + /* morekeys_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B", // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE // U+010D: "č" LATIN SMALL LETTER C WITH CARON - /* more_keys_for_c */ "\u00E7,\u0107,\u010D", + /* morekeys_c */ "\u00E7,\u0107,\u010D", /* double_quotes */ null, // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE - /* more_keys_for_n */ "\u00F1,\u0144", + /* morekeys_n */ "\u00F1,\u0144", }; /* Language hi: Hindi */ private static final String[] LANGUAGE_hi = { - /* more_keys_for_a ~ */ + /* morekeys_a ~ */ null, null, null, null, null, null, null, null, null, /* ~ single_quotes */ // Label for "switch to alphabetic" key. // U+0915: "क" DEVANAGARI LETTER KA // U+0916: "ख" DEVANAGARI LETTER KHA // U+0917: "ग" DEVANAGARI LETTER GA - /* label_to_alpha_key */ "\u0915\u0916\u0917", - /* more_keys_for_s ~ */ + /* keylabel_to_alpha */ "\u0915\u0916\u0917", + /* morekeys_s ~ */ null, null, null, null, null, null, null, null, null, /* ~ double_angle_quotes */ // U+20B9: "₹" INDIAN RUPEE SIGN - /* keylabel_for_currency */ "\u20B9", - /* more_keys_for_r ~ */ + /* keyspec_currency */ "\u20B9", + /* morekeys_r ~ */ null, null, null, null, null, null, null, null, null, null, null, null, null, - /* ~ more_keys_for_nordic_row2_11 */ + /* ~ morekeys_nordic_row2_11 */ // U+0967: "१" DEVANAGARI DIGIT ONE - /* keylabel_for_symbols_1 */ "\u0967", + /* keyspec_symbols_1 */ "\u0967", // U+0968: "२" DEVANAGARI DIGIT TWO - /* keylabel_for_symbols_2 */ "\u0968", + /* keyspec_symbols_2 */ "\u0968", // U+0969: "३" DEVANAGARI DIGIT THREE - /* keylabel_for_symbols_3 */ "\u0969", + /* keyspec_symbols_3 */ "\u0969", // U+096A: "४" DEVANAGARI DIGIT FOUR - /* keylabel_for_symbols_4 */ "\u096A", + /* keyspec_symbols_4 */ "\u096A", // U+096B: "५" DEVANAGARI DIGIT FIVE - /* keylabel_for_symbols_5 */ "\u096B", + /* keyspec_symbols_5 */ "\u096B", // U+096C: "६" DEVANAGARI DIGIT SIX - /* keylabel_for_symbols_6 */ "\u096C", + /* keyspec_symbols_6 */ "\u096C", // U+096D: "७" DEVANAGARI DIGIT SEVEN - /* keylabel_for_symbols_7 */ "\u096D", + /* keyspec_symbols_7 */ "\u096D", // U+096E: "८" DEVANAGARI DIGIT EIGHT - /* keylabel_for_symbols_8 */ "\u096E", + /* keyspec_symbols_8 */ "\u096E", // U+096F: "९" DEVANAGARI DIGIT NINE - /* keylabel_for_symbols_9 */ "\u096F", + /* keyspec_symbols_9 */ "\u096F", // U+0966: "०" DEVANAGARI DIGIT ZERO - /* keylabel_for_symbols_0 */ "\u0966", + /* keyspec_symbols_0 */ "\u0966", // Label for "switch to symbols" key. - /* label_to_symbol_key */ "?\u0967\u0968\u0969", - // Label for "switch to symbols with microphone" key. This string shouldn't include the "mic" - // part because it'll be appended by the code. - /* label_to_symbol_with_microphone_key */ "\u0967\u0968\u0969", - /* additional_more_keys_for_symbols_1 */ "1", - /* additional_more_keys_for_symbols_2 */ "2", - /* additional_more_keys_for_symbols_3 */ "3", - /* additional_more_keys_for_symbols_4 */ "4", - /* additional_more_keys_for_symbols_5 */ "5", - /* additional_more_keys_for_symbols_6 */ "6", - /* additional_more_keys_for_symbols_7 */ "7", - /* additional_more_keys_for_symbols_8 */ "8", - /* additional_more_keys_for_symbols_9 */ "9", - /* additional_more_keys_for_symbols_0 */ "0", + /* keylabel_to_symbol */ "?\u0967\u0968\u0969", + /* additional_morekeys_symbols_1 */ "1", + /* additional_morekeys_symbols_2 */ "2", + /* additional_morekeys_symbols_3 */ "3", + /* additional_morekeys_symbols_4 */ "4", + /* additional_morekeys_symbols_5 */ "5", + /* additional_morekeys_symbols_6 */ "6", + /* additional_morekeys_symbols_7 */ "7", + /* additional_morekeys_symbols_8 */ "8", + /* additional_morekeys_symbols_9 */ "9", + /* additional_morekeys_symbols_0 */ "0", }; /* Language hr: Croatian */ private static final String[] LANGUAGE_hr = { - /* more_keys_for_a ~ */ + /* morekeys_a ~ */ null, null, null, null, null, - /* ~ more_keys_for_i */ + /* ~ morekeys_i */ // U+010D: "č" LATIN SMALL LETTER C WITH CARON // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA - /* more_keys_for_c */ "\u010D,\u0107,\u00E7", + /* morekeys_c */ "\u010D,\u0107,\u00E7", /* double_quotes */ "!text/double_9qm_rqm", // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE - /* more_keys_for_n */ "\u00F1,\u0144", + /* morekeys_n */ "\u00F1,\u0144", /* single_quotes */ "!text/single_9qm_rqm", - /* label_to_alpha_key */ null, + /* keylabel_to_alpha */ null, // U+0161: "š" LATIN SMALL LETTER S WITH CARON // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE // U+00DF: "ß" LATIN SMALL LETTER SHARP S - /* more_keys_for_s */ "\u0161,\u015B,\u00DF", - /* more_keys_for_y */ null, + /* morekeys_s */ "\u0161,\u015B,\u00DF", + /* morekeys_y */ null, // U+0111: "đ" LATIN SMALL LETTER D WITH STROKE - /* more_keys_for_d */ "\u0111", + /* morekeys_d */ "\u0111", // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE - /* more_keys_for_z */ "\u017E,\u017A,\u017C", - /* more_keys_for_t ~ */ + /* morekeys_z */ "\u017E,\u017A,\u017C", + /* morekeys_t ~ */ null, null, null, - /* ~ more_keys_for_g */ + /* ~ morekeys_g */ /* single_angle_quotes */ "!text/single_raqm_laqm", /* double_angle_quotes */ "!text/double_raqm_laqm", }; @@ -1887,7 +1874,7 @@ public final class KeyboardTextsTable { // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON - /* more_keys_for_a */ "\u00E1,\u00E0,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101", + /* morekeys_a */ "\u00E1,\u00E0,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101", // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS // U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE @@ -1897,14 +1884,14 @@ public final class KeyboardTextsTable { // U+0153: "œ" LATIN SMALL LIGATURE OE // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON - /* more_keys_for_o */ "\u00F3,\u00F6,\u0151,\u00F4,\u00F2,\u00F5,\u0153,\u00F8,\u014D", + /* morekeys_o */ "\u00F3,\u00F6,\u0151,\u00F4,\u00F2,\u00F5,\u0153,\u00F8,\u014D", // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS // U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON - /* more_keys_for_u */ "\u00FA,\u00FC,\u0171,\u00FB,\u00F9,\u016B", + /* morekeys_u */ "\u00FA,\u00FC,\u0171,\u00FB,\u00F9,\u016B", // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX @@ -1912,40 +1899,40 @@ public final class KeyboardTextsTable { // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON - /* more_keys_for_e */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0119,\u0117,\u0113", + /* morekeys_e */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0119,\u0117,\u0113", // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON - /* more_keys_for_i */ "\u00ED,\u00EE,\u00EF,\u00EC,\u012F,\u012B", - /* more_keys_for_c */ null, + /* morekeys_i */ "\u00ED,\u00EE,\u00EF,\u00EC,\u012F,\u012B", + /* morekeys_c */ null, /* double_quotes */ "!text/double_9qm_rqm", - /* more_keys_for_n */ null, + /* morekeys_n */ null, /* single_quotes */ "!text/single_9qm_rqm", - /* label_to_alpha_key ~ */ + /* keylabel_to_alpha ~ */ null, null, null, null, null, null, null, null, - /* ~ more_keys_for_g */ + /* ~ morekeys_g */ /* single_angle_quotes */ "!text/single_raqm_laqm", /* double_angle_quotes */ "!text/double_raqm_laqm", }; /* Language hy_AM: Armenian (Armenia) */ private static final String[] LANGUAGE_hy_AM = { - /* more_keys_for_a ~ */ + /* morekeys_a ~ */ null, null, null, null, null, null, null, null, null, /* ~ single_quotes */ // Label for "switch to alphabetic" key. // U+0531: "Ա" ARMENIAN CAPITAL LETTER AYB // U+0532: "Բ" ARMENIAN CAPITAL LETTER BEN // U+0533: "Գ" ARMENIAN CAPITAL LETTER GIM - /* label_to_alpha_key */ "\u0531\u0532\u0533", - /* more_keys_for_s ~ */ + /* keylabel_to_alpha */ "\u0531\u0532\u0533", + /* morekeys_s ~ */ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - /* ~ additional_more_keys_for_symbols_0 */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, + /* ~ additional_morekeys_symbols_0 */ // U+055E: "՞" ARMENIAN QUESTION MARK // U+055C: "՜" ARMENIAN EXCLAMATION MARK // U+055A: "՚" ARMENIAN APOSTROPHE @@ -1956,31 +1943,31 @@ public final class KeyboardTextsTable { // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK // U+055F: "՟" ARMENIAN ABBREVIATION MARK - /* more_keys_for_punctuation */ "!autoColumnOrder!8,\\,,\u055E,\u055C,.,\u055A,\u0559,?,!,\u055D,\u055B,\u058A,\u00BB,\u00AB,\u055F,;,:", - /* more_keys_for_star ~ */ + /* morekeys_punctuation */ "!autoColumnOrder!8,\\,,\u055E,\u055C,.,\u055A,\u0559,?,!,\u055D,\u055B,\u058A,\u00BB,\u00AB,\u055F,;,:", + /* morekeys_star ~ */ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, /* ~ keyspec_right_single_angle_quote */ // U+058F: "֏" ARMENIAN DRAM SIGN // TODO: Enable this when we have glyph for the following letter - // <string name="keylabel_for_currency">֏</string> + // <string name="keyspec_currency">֏</string> // // U+055D: "՝" ARMENIAN COMMA - /* keylabel_for_tablet_comma */ "\u055D", - /* more_keys_for_tablet_period */ "!text/more_keys_for_punctuation", + /* keyspec_tablet_comma */ "\u055D", + /* morekeys_tablet_period */ "!text/morekeys_punctuation", // U+055E: "՞" ARMENIAN QUESTION MARK // U+00BF: "¿" INVERTED QUESTION MARK - /* more_keys_for_question */ "\u055E,\u00BF", - /* more_keys_for_h ~ */ + /* morekeys_question */ "\u055E,\u00BF", + /* morekeys_h ~ */ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - /* ~ more_keys_for_greater_than */ + /* ~ morekeys_greater_than */ // U+0589: "։" ARMENIAN FULL STOP - /* keylabel_for_period */ "\u0589", - /* keylabel_for_tablet_period */ "\u0589", + /* keyspec_period */ "\u0589", + /* keyspec_tablet_period */ "\u0589", // U+055C: "՜" ARMENIAN EXCLAMATION MARK // U+00A1: "¡" INVERTED EXCLAMATION MARK - /* more_keys_for_exclamation */ "\u055C,\u00A1", + /* morekeys_exclamation */ "\u055C,\u00A1", }; /* Language is: Icelandic */ @@ -1993,7 +1980,7 @@ public final class KeyboardTextsTable { // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON - /* more_keys_for_a */ "\u00E1,\u00E4,\u00E6,\u00E5,\u00E0,\u00E2,\u00E3,\u0101", + /* morekeys_a */ "\u00E1,\u00E4,\u00E6,\u00E5,\u00E0,\u00E2,\u00E3,\u0101", // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX @@ -2002,13 +1989,13 @@ public final class KeyboardTextsTable { // U+0153: "œ" LATIN SMALL LIGATURE OE // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON - /* more_keys_for_o */ "\u00F3,\u00F6,\u00F4,\u00F2,\u00F5,\u0153,\u00F8,\u014D", + /* morekeys_o */ "\u00F3,\u00F6,\u00F4,\u00F2,\u00F5,\u0153,\u00F8,\u014D", // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON - /* more_keys_for_u */ "\u00FA,\u00FC,\u00FB,\u00F9,\u016B", + /* morekeys_u */ "\u00FA,\u00FC,\u00FB,\u00F9,\u016B", // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE @@ -2016,28 +2003,28 @@ public final class KeyboardTextsTable { // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON - /* more_keys_for_e */ "\u00E9,\u00EB,\u00E8,\u00EA,\u0119,\u0117,\u0113", + /* morekeys_e */ "\u00E9,\u00EB,\u00E8,\u00EA,\u0119,\u0117,\u0113", // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON - /* more_keys_for_i */ "\u00ED,\u00EF,\u00EE,\u00EC,\u012F,\u012B", - /* more_keys_for_c */ null, + /* morekeys_i */ "\u00ED,\u00EF,\u00EE,\u00EC,\u012F,\u012B", + /* morekeys_c */ null, /* double_quotes */ "!text/double_9qm_lqm", - /* more_keys_for_n */ null, + /* morekeys_n */ null, /* single_quotes */ "!text/single_9qm_lqm", - /* label_to_alpha_key */ null, - /* more_keys_for_s */ null, + /* keylabel_to_alpha */ null, + /* morekeys_s */ null, // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS - /* more_keys_for_y */ "\u00FD,\u00FF", + /* morekeys_y */ "\u00FD,\u00FF", // U+00F0: "ð" LATIN SMALL LETTER ETH - /* more_keys_for_d */ "\u00F0", - /* more_keys_for_z */ null, + /* morekeys_d */ "\u00F0", + /* morekeys_z */ null, // U+00FE: "þ" LATIN SMALL LETTER THORN - /* more_keys_for_t */ "\u00FE", + /* morekeys_t */ "\u00FE", }; /* Language it: Italian */ @@ -2051,7 +2038,7 @@ public final class KeyboardTextsTable { // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON // U+00AA: "ª" FEMININE ORDINAL INDICATOR - /* more_keys_for_a */ "\u00E0,\u00E1,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101,\u00AA", + /* morekeys_a */ "\u00E0,\u00E1,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101,\u00AA", // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX @@ -2061,13 +2048,13 @@ public final class KeyboardTextsTable { // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON // U+00BA: "º" MASCULINE ORDINAL INDICATOR - /* more_keys_for_o */ "\u00F2,\u00F3,\u00F4,\u00F6,\u00F5,\u0153,\u00F8,\u014D,\u00BA", + /* morekeys_o */ "\u00F2,\u00F3,\u00F4,\u00F6,\u00F5,\u0153,\u00F8,\u014D,\u00BA", // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON - /* more_keys_for_u */ "\u00F9,\u00FA,\u00FB,\u00FC,\u016B", + /* morekeys_u */ "\u00F9,\u00FA,\u00FB,\u00FC,\u016B", // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX @@ -2075,41 +2062,41 @@ public final class KeyboardTextsTable { // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON - /* more_keys_for_e */ "\u00E8,\u00E9,\u00EA,\u00EB,\u0119,\u0117,\u0113", + /* morekeys_e */ "\u00E8,\u00E9,\u00EA,\u00EB,\u0119,\u0117,\u0113", // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON - /* more_keys_for_i */ "\u00EC,\u00ED,\u00EE,\u00EF,\u012F,\u012B", + /* morekeys_i */ "\u00EC,\u00ED,\u00EE,\u00EF,\u012F,\u012B", }; /* Language iw: Hebrew */ private static final String[] LANGUAGE_iw = { - /* more_keys_for_a ~ */ + /* morekeys_a ~ */ null, null, null, null, null, null, - /* ~ more_keys_for_c */ + /* ~ morekeys_c */ /* double_quotes */ "!text/double_rqm_9qm", - /* more_keys_for_n */ null, + /* morekeys_n */ null, /* single_quotes */ "!text/single_rqm_9qm", // Label for "switch to alphabetic" key. // U+05D0: "א" HEBREW LETTER ALEF // U+05D1: "ב" HEBREW LETTER BET // U+05D2: "ג" HEBREW LETTER GIMEL - /* label_to_alpha_key */ "\u05D0\u05D1\u05D2", - /* more_keys_for_s ~ */ + /* keylabel_to_alpha */ "\u05D0\u05D1\u05D2", + /* morekeys_s ~ */ null, null, null, null, null, null, null, null, null, /* ~ double_angle_quotes */ // U+20AA: "₪" NEW SHEQEL SIGN - /* keylabel_for_currency */ "\u20AA", - /* more_keys_for_r ~ */ + /* keyspec_currency */ "\u20AA", + /* morekeys_r ~ */ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, - /* ~ more_keys_for_punctuation */ + null, null, null, null, null, + /* ~ morekeys_punctuation */ // U+2605: "★" BLACK STAR - /* more_keys_for_star */ "\u2605", + /* morekeys_star */ "\u2605", // The all letters need to be mirrored are found at // http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt // U+2264: "≤" LESS-THAN OR EQUAL TO @@ -2132,168 +2119,167 @@ public final class KeyboardTextsTable { /* keyspec_right_double_angle_quote */ "\u00BB|\u00AB", /* keyspec_left_single_angle_quote */ "\u2039|\u203A", /* keyspec_right_single_angle_quote */ "\u203A|\u2039", - /* keylabel_for_tablet_comma ~ */ + /* keyspec_tablet_comma ~ */ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - /* ~ more_keys_for_tablet_punctuation */ + /* ~ morekeys_tablet_punctuation */ // U+00B1: "±" PLUS-MINUS SIGN // U+FB29: "﬩" HEBREW LETTER ALTERNATIVE PLUS SIGN - /* more_keys_for_plus */ "\u00B1,\uFB29", + /* morekeys_plus */ "\u00B1,\uFB29", }; /* Language ka_GE: Georgian (Georgia) */ private static final String[] LANGUAGE_ka_GE = { - /* more_keys_for_a ~ */ + /* morekeys_a ~ */ null, null, null, null, null, null, - /* ~ more_keys_for_c */ + /* ~ morekeys_c */ /* double_quotes */ "!text/double_9qm_lqm", - /* more_keys_for_n */ null, + /* morekeys_n */ null, /* single_quotes */ "!text/single_9qm_lqm", // Label for "switch to alphabetic" key. // U+10D0: "ა" GEORGIAN LETTER AN // U+10D1: "ბ" GEORGIAN LETTER BAN // U+10D2: "გ" GEORGIAN LETTER GAN - /* label_to_alpha_key */ "\u10D0\u10D1\u10D2", + /* keylabel_to_alpha */ "\u10D0\u10D1\u10D2", }; /* Language kk: Kazakh */ private static final String[] LANGUAGE_kk = { - /* more_keys_for_a ~ */ + /* morekeys_a ~ */ null, null, null, null, null, null, null, null, null, /* ~ single_quotes */ // Label for "switch to alphabetic" key. // U+0410: "А" CYRILLIC CAPITAL LETTER A // U+0411: "Б" CYRILLIC CAPITAL LETTER BE // U+0412: "В" CYRILLIC CAPITAL LETTER VE - /* label_to_alpha_key */ "\u0410\u0411\u0412", - /* more_keys_for_s ~ */ + /* keylabel_to_alpha */ "\u0410\u0411\u0412", + /* morekeys_s ~ */ null, null, null, null, null, null, null, null, null, null, null, null, - /* ~ more_keys_for_k */ + /* ~ morekeys_k */ // U+0451: "ё" CYRILLIC SMALL LETTER IO - /* more_keys_for_cyrillic_ie */ "\u0451", - /* keylabel_for_nordic_row1_11 ~ */ + /* morekeys_cyrillic_ie */ "\u0451", + /* keyspec_nordic_row1_11 ~ */ null, null, null, null, - /* ~ more_keys_for_nordic_row2_10 */ + /* ~ morekeys_nordic_row2_10 */ // U+0449: "щ" CYRILLIC SMALL LETTER SHCHA - /* keylabel_for_east_slavic_row1_9 */ "\u0449", + /* keyspec_east_slavic_row1_9 */ "\u0449", // U+044B: "ы" CYRILLIC SMALL LETTER YERU - /* keylabel_for_east_slavic_row2_2 */ "\u044B", + /* keyspec_east_slavic_row2_2 */ "\u044B", // U+044D: "э" CYRILLIC SMALL LETTER E - /* keylabel_for_east_slavic_row2_11 */ "\u044D", + /* keyspec_east_slavic_row2_11 */ "\u044D", // U+0438: "и" CYRILLIC SMALL LETTER I - /* keylabel_for_east_slavic_row3_5 */ "\u0438", + /* keyspec_east_slavic_row3_5 */ "\u0438", // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN - /* more_keys_for_cyrillic_soft_sign */ "\u044A", - /* more_keys_for_nordic_row2_11 ~ */ + /* morekeys_cyrillic_soft_sign */ "\u044A", + /* morekeys_nordic_row2_11 ~ */ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, - /* ~ more_keys_for_w */ + null, null, null, null, null, null, null, null, null, null, null, null, null, + /* ~ morekeys_w */ + // U+0456: "і" CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I + /* morekeys_east_slavic_row2_2 */ "\u0456", // U+04AF: "ү" CYRILLIC SMALL LETTER STRAIGHT U // U+04B1: "ұ" CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE - /* more_keys_for_cyrillic_u */ "\u04AF,\u04B1", + /* morekeys_cyrillic_u */ "\u04AF,\u04B1", // U+04A3: "ң" CYRILLIC SMALL LETTER EN WITH DESCENDER - /* more_keys_for_cyrillic_en */ "\u04A3", + /* morekeys_cyrillic_en */ "\u04A3", // U+0493: "ғ" CYRILLIC SMALL LETTER GHE WITH STROKE - /* more_keys_for_cyrillic_ghe */ "\u0493", - // U+0456: "і" CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I - /* more_keys_for_east_slavic_row2_2 */ "\u0456", + /* morekeys_cyrillic_ghe */ "\u0493", // U+04E9: "ө" CYRILLIC SMALL LETTER BARRED O - /* more_keys_for_cyrillic_o */ "\u04E9", - /* keylabel_for_south_slavic_row1_6 ~ */ + /* morekeys_cyrillic_o */ "\u04E9", + /* morekeys_cyrillic_i ~ */ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - /* ~ more_keys_for_j */ + /* ~ morekeys_j */ + // U+04BB: "һ" CYRILLIC SMALL LETTER SHHA + /* morekeys_east_slavic_row2_11 */ "\u04BB", // U+049B: "қ" CYRILLIC SMALL LETTER KA WITH DESCENDER - /* more_keys_for_cyrillic_ka */ "\u049B", + /* morekeys_cyrillic_ka */ "\u049B", // U+04D9: "ә" CYRILLIC SMALL LETTER SCHWA - /* more_keys_for_cyrillic_a */ "\u04D9", - // U+04BB: "һ" CYRILLIC SMALL LETTER SHHA - /* more_keys_for_east_slavic_row2_11 */ "\u04BB", + /* morekeys_cyrillic_a */ "\u04D9", }; /* Language km_KH: Khmer (Cambodia) */ private static final String[] LANGUAGE_km_KH = { - /* more_keys_for_a ~ */ + /* morekeys_a ~ */ null, null, null, null, null, null, null, null, null, /* ~ single_quotes */ // Label for "switch to alphabetic" key. // U+1780: "ក" KHMER LETTER KA // U+1781: "ខ" KHMER LETTER KHA // U+1782: "គ" KHMER LETTER KO - /* label_to_alpha_key */ "\u1780\u1781\u1782", - /* more_keys_for_s ~ */ + /* keylabel_to_alpha */ "\u1780\u1781\u1782", + /* morekeys_s ~ */ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, - /* ~ more_keys_for_east_slavic_row2_11 */ + null, null, null, null, null, null, null, null, null, null, null, null, + /* ~ morekeys_cyrillic_a */ // U+17DB: "៛" KHMER CURRENCY SYMBOL RIEL - /* more_keys_for_currency_dollar */ "\u17DB,\u00A2,\u00A3,\u20AC,\u00A5,\u20B1", + /* morekeys_currency_dollar */ "\u17DB,\u00A2,\u00A3,\u20AC,\u00A5,\u20B1", }; /* Language ky: Kirghiz */ private static final String[] LANGUAGE_ky = { - /* more_keys_for_a ~ */ + /* morekeys_a ~ */ null, null, null, null, null, null, null, null, null, /* ~ single_quotes */ // Label for "switch to alphabetic" key. // U+0410: "А" CYRILLIC CAPITAL LETTER A // U+0411: "Б" CYRILLIC CAPITAL LETTER BE // U+0412: "В" CYRILLIC CAPITAL LETTER VE - /* label_to_alpha_key */ "\u0410\u0411\u0412", - /* more_keys_for_s ~ */ + /* keylabel_to_alpha */ "\u0410\u0411\u0412", + /* morekeys_s ~ */ null, null, null, null, null, null, null, null, null, null, null, null, - /* ~ more_keys_for_k */ + /* ~ morekeys_k */ // U+0451: "ё" CYRILLIC SMALL LETTER IO - /* more_keys_for_cyrillic_ie */ "\u0451", - /* keylabel_for_nordic_row1_11 ~ */ + /* morekeys_cyrillic_ie */ "\u0451", + /* keyspec_nordic_row1_11 ~ */ null, null, null, null, - /* ~ more_keys_for_nordic_row2_10 */ + /* ~ morekeys_nordic_row2_10 */ // U+0449: "щ" CYRILLIC SMALL LETTER SHCHA - /* keylabel_for_east_slavic_row1_9 */ "\u0449", + /* keyspec_east_slavic_row1_9 */ "\u0449", // U+044B: "ы" CYRILLIC SMALL LETTER YERU - /* keylabel_for_east_slavic_row2_2 */ "\u044B", + /* keyspec_east_slavic_row2_2 */ "\u044B", // U+044D: "э" CYRILLIC SMALL LETTER E - /* keylabel_for_east_slavic_row2_11 */ "\u044D", + /* keyspec_east_slavic_row2_11 */ "\u044D", // U+0438: "и" CYRILLIC SMALL LETTER I - /* keylabel_for_east_slavic_row3_5 */ "\u0438", + /* keyspec_east_slavic_row3_5 */ "\u0438", // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN - /* more_keys_for_cyrillic_soft_sign */ "\u044A", - /* more_keys_for_nordic_row2_11 ~ */ + /* morekeys_cyrillic_soft_sign */ "\u044A", + /* morekeys_nordic_row2_11 ~ */ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - /* ~ more_keys_for_w */ + /* ~ morekeys_east_slavic_row2_2 */ // U+04AF: "ү" CYRILLIC SMALL LETTER STRAIGHT U - /* more_keys_for_cyrillic_u */ "\u04AF", + /* morekeys_cyrillic_u */ "\u04AF", // U+04A3: "ң" CYRILLIC SMALL LETTER EN WITH DESCENDER - /* more_keys_for_cyrillic_en */ "\u04A3", - /* more_keys_for_cyrillic_ghe */ null, - /* more_keys_for_east_slavic_row2_2 */ null, + /* morekeys_cyrillic_en */ "\u04A3", + /* morekeys_cyrillic_ghe */ null, // U+04E9: "ө" CYRILLIC SMALL LETTER BARRED O - /* more_keys_for_cyrillic_o */ "\u04E9", + /* morekeys_cyrillic_o */ "\u04E9", }; /* Language lo_LA: Lao (Laos) */ private static final String[] LANGUAGE_lo_LA = { - /* more_keys_for_a ~ */ + /* morekeys_a ~ */ null, null, null, null, null, null, null, null, null, /* ~ single_quotes */ // Label for "switch to alphabetic" key. // U+0E81: "ກ" LAO LETTER KO // U+0E82: "ຂ" LAO LETTER KHO SUNG // U+0E84: "ຄ" LAO LETTER KHO TAM - /* label_to_alpha_key */ "\u0E81\u0E82\u0E84", - /* more_keys_for_s ~ */ + /* keylabel_to_alpha */ "\u0E81\u0E82\u0E84", + /* morekeys_s ~ */ null, null, null, null, null, null, null, null, null, /* ~ double_angle_quotes */ // U+20AD: "₭" KIP SIGN - /* keylabel_for_currency */ "\u20AD", + /* keyspec_currency */ "\u20AD", }; /* Language lt: Lithuanian */ @@ -2307,7 +2293,7 @@ public final class KeyboardTextsTable { // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE // U+00E6: "æ" LATIN SMALL LETTER AE - /* more_keys_for_a */ "\u0105,\u00E4,\u0101,\u00E0,\u00E1,\u00E2,\u00E3,\u00E5,\u00E6", + /* morekeys_a */ "\u0105,\u00E4,\u0101,\u00E0,\u00E1,\u00E2,\u00E3,\u00E5,\u00E6", // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE @@ -2316,7 +2302,7 @@ public final class KeyboardTextsTable { // U+0153: "œ" LATIN SMALL LIGATURE OE // U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE - /* more_keys_for_o */ "\u00F6,\u00F5,\u00F2,\u00F3,\u00F4,\u0153,\u0151,\u00F8", + /* morekeys_o */ "\u00F6,\u00F5,\u00F2,\u00F3,\u00F4,\u0153,\u0151,\u00F8", // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON // U+0173: "ų" LATIN SMALL LETTER U WITH OGONEK // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS @@ -2326,7 +2312,7 @@ public final class KeyboardTextsTable { // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX // U+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE // U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE - /* more_keys_for_u */ "\u016B,\u0173,\u00FC,\u016B,\u00F9,\u00FA,\u00FB,\u016F,\u0171", + /* morekeys_u */ "\u016B,\u0173,\u00FC,\u016B,\u00F9,\u00FA,\u00FB,\u016F,\u0171", // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON @@ -2335,7 +2321,7 @@ public final class KeyboardTextsTable { // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS // U+011B: "ě" LATIN SMALL LETTER E WITH CARON - /* more_keys_for_e */ "\u0117,\u0119,\u0113,\u00E8,\u00E9,\u00EA,\u00EB,\u011B", + /* morekeys_e */ "\u0117,\u0119,\u0113,\u00E8,\u00E9,\u00EA,\u00EB,\u011B", // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE @@ -2343,52 +2329,52 @@ public final class KeyboardTextsTable { // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS // U+0131: "ı" LATIN SMALL LETTER DOTLESS I - /* more_keys_for_i */ "\u012F,\u012B,\u00EC,\u00ED,\u00EE,\u00EF,\u0131", + /* morekeys_i */ "\u012F,\u012B,\u00EC,\u00ED,\u00EE,\u00EF,\u0131", // U+010D: "č" LATIN SMALL LETTER C WITH CARON // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE - /* more_keys_for_c */ "\u010D,\u00E7,\u0107", + /* morekeys_c */ "\u010D,\u00E7,\u0107", /* double_quotes */ "!text/double_9qm_lqm", // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE - /* more_keys_for_n */ "\u0146,\u00F1,\u0144", + /* morekeys_n */ "\u0146,\u00F1,\u0144", /* single_quotes */ "!text/single_9qm_lqm", - /* label_to_alpha_key */ null, + /* keylabel_to_alpha */ null, // U+0161: "š" LATIN SMALL LETTER S WITH CARON // U+00DF: "ß" LATIN SMALL LETTER SHARP S // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA - /* more_keys_for_s */ "\u0161,\u00DF,\u015B,\u015F", + /* morekeys_s */ "\u0161,\u00DF,\u015B,\u015F", // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS - /* more_keys_for_y */ "\u00FD,\u00FF", + /* morekeys_y */ "\u00FD,\u00FF", // U+010F: "ď" LATIN SMALL LETTER D WITH CARON - /* more_keys_for_d */ "\u010F", + /* morekeys_d */ "\u010F", // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE - /* more_keys_for_z */ "\u017E,\u017C,\u017A", + /* morekeys_z */ "\u017E,\u017C,\u017A", // U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA // U+0165: "ť" LATIN SMALL LETTER T WITH CARON - /* more_keys_for_t */ "\u0163,\u0165", + /* morekeys_t */ "\u0163,\u0165", // U+013C: "ļ" LATIN SMALL LETTER L WITH CEDILLA // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE // U+013A: "ĺ" LATIN SMALL LETTER L WITH ACUTE // U+013E: "ľ" LATIN SMALL LETTER L WITH CARON - /* more_keys_for_l */ "\u013C,\u0142,\u013A,\u013E", + /* morekeys_l */ "\u013C,\u0142,\u013A,\u013E", // U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE - /* more_keys_for_g */ "\u0123,\u011F", + /* morekeys_g */ "\u0123,\u011F", /* single_angle_quotes ~ */ null, null, null, - /* ~ keylabel_for_currency */ + /* ~ keyspec_currency */ // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA // U+0159: "ř" LATIN SMALL LETTER R WITH CARON // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE - /* more_keys_for_r */ "\u0157,\u0159,\u0155", + /* morekeys_r */ "\u0157,\u0159,\u0155", // U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA - /* more_keys_for_k */ "\u0137", + /* morekeys_k */ "\u0137", }; /* Language lv: Latvian */ @@ -2402,7 +2388,7 @@ public final class KeyboardTextsTable { // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE // U+00E6: "æ" LATIN SMALL LETTER AE // U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK - /* more_keys_for_a */ "\u0101,\u00E0,\u00E1,\u00E2,\u00E3,\u00E4,\u00E5,\u00E6,\u0105", + /* morekeys_a */ "\u0101,\u00E0,\u00E1,\u00E2,\u00E3,\u00E4,\u00E5,\u00E6,\u0105", // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX @@ -2411,7 +2397,7 @@ public final class KeyboardTextsTable { // U+0153: "œ" LATIN SMALL LIGATURE OE // U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE - /* more_keys_for_o */ "\u00F2,\u00F3,\u00F4,\u00F5,\u00F6,\u0153,\u0151,\u00F8", + /* morekeys_o */ "\u00F2,\u00F3,\u00F4,\u00F5,\u00F6,\u0153,\u0151,\u00F8", // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON // U+0173: "ų" LATIN SMALL LETTER U WITH OGONEK // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE @@ -2420,7 +2406,7 @@ public final class KeyboardTextsTable { // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS // U+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE // U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE - /* more_keys_for_u */ "\u016B,\u0173,\u00F9,\u00FA,\u00FB,\u00FC,\u016F,\u0171", + /* morekeys_u */ "\u016B,\u0173,\u00F9,\u00FA,\u00FB,\u00FC,\u016F,\u0171", // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE @@ -2429,7 +2415,7 @@ public final class KeyboardTextsTable { // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK // U+011B: "ě" LATIN SMALL LETTER E WITH CARON - /* more_keys_for_e */ "\u0113,\u0117,\u00E8,\u00E9,\u00EA,\u00EB,\u0119,\u011B", + /* morekeys_e */ "\u0113,\u0117,\u00E8,\u00E9,\u00EA,\u00EB,\u0119,\u011B", // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE @@ -2437,117 +2423,117 @@ public final class KeyboardTextsTable { // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS // U+0131: "ı" LATIN SMALL LETTER DOTLESS I - /* more_keys_for_i */ "\u012B,\u012F,\u00EC,\u00ED,\u00EE,\u00EF,\u0131", + /* morekeys_i */ "\u012B,\u012F,\u00EC,\u00ED,\u00EE,\u00EF,\u0131", // U+010D: "č" LATIN SMALL LETTER C WITH CARON // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE - /* more_keys_for_c */ "\u010D,\u00E7,\u0107", + /* morekeys_c */ "\u010D,\u00E7,\u0107", /* double_quotes */ "!text/double_9qm_lqm", // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE - /* more_keys_for_n */ "\u0146,\u00F1,\u0144", + /* morekeys_n */ "\u0146,\u00F1,\u0144", /* single_quotes */ "!text/single_9qm_lqm", - /* label_to_alpha_key */ null, + /* keylabel_to_alpha */ null, // U+0161: "š" LATIN SMALL LETTER S WITH CARON // U+00DF: "ß" LATIN SMALL LETTER SHARP S // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA - /* more_keys_for_s */ "\u0161,\u00DF,\u015B,\u015F", + /* morekeys_s */ "\u0161,\u00DF,\u015B,\u015F", // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS - /* more_keys_for_y */ "\u00FD,\u00FF", + /* morekeys_y */ "\u00FD,\u00FF", // U+010F: "ď" LATIN SMALL LETTER D WITH CARON - /* more_keys_for_d */ "\u010F", + /* morekeys_d */ "\u010F", // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE - /* more_keys_for_z */ "\u017E,\u017C,\u017A", + /* morekeys_z */ "\u017E,\u017C,\u017A", // U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA // U+0165: "ť" LATIN SMALL LETTER T WITH CARON - /* more_keys_for_t */ "\u0163,\u0165", + /* morekeys_t */ "\u0163,\u0165", // U+013C: "ļ" LATIN SMALL LETTER L WITH CEDILLA // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE // U+013A: "ĺ" LATIN SMALL LETTER L WITH ACUTE // U+013E: "ľ" LATIN SMALL LETTER L WITH CARON - /* more_keys_for_l */ "\u013C,\u0142,\u013A,\u013E", + /* morekeys_l */ "\u013C,\u0142,\u013A,\u013E", // U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE - /* more_keys_for_g */ "\u0123,\u011F", + /* morekeys_g */ "\u0123,\u011F", /* single_angle_quotes ~ */ null, null, null, - /* ~ keylabel_for_currency */ + /* ~ keyspec_currency */ // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA // U+0159: "ř" LATIN SMALL LETTER R WITH CARON // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE - /* more_keys_for_r */ "\u0157,\u0159,\u0155", + /* morekeys_r */ "\u0157,\u0159,\u0155", // U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA - /* more_keys_for_k */ "\u0137", + /* morekeys_k */ "\u0137", }; /* Language mk: Macedonian */ private static final String[] LANGUAGE_mk = { - /* more_keys_for_a ~ */ + /* morekeys_a ~ */ null, null, null, null, null, null, - /* ~ more_keys_for_c */ + /* ~ morekeys_c */ /* double_quotes */ "!text/double_9qm_lqm", - /* more_keys_for_n */ null, + /* morekeys_n */ null, /* single_quotes */ "!text/single_9qm_lqm", // Label for "switch to alphabetic" key. // U+0410: "А" CYRILLIC CAPITAL LETTER A // U+0411: "Б" CYRILLIC CAPITAL LETTER BE // U+0412: "В" CYRILLIC CAPITAL LETTER VE - /* label_to_alpha_key */ "\u0410\u0411\u0412", - /* more_keys_for_s ~ */ + /* keylabel_to_alpha */ "\u0410\u0411\u0412", + /* morekeys_s ~ */ null, null, null, null, null, null, null, null, null, null, null, null, - /* ~ more_keys_for_k */ + /* ~ morekeys_k */ // U+0450: "ѐ" CYRILLIC SMALL LETTER IE WITH GRAVE - /* more_keys_for_cyrillic_ie */ "\u0450", - /* keylabel_for_nordic_row1_11 ~ */ + /* morekeys_cyrillic_ie */ "\u0450", + /* keyspec_nordic_row1_11 ~ */ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, - /* ~ more_keys_for_cyrillic_o */ + null, null, null, null, null, null, null, null, null, null, null, null, + /* ~ morekeys_cyrillic_o */ + // U+045D: "ѝ" CYRILLIC SMALL LETTER I WITH GRAVE + /* morekeys_cyrillic_i */ "\u045D", // U+0455: "ѕ" CYRILLIC SMALL LETTER DZE - /* keylabel_for_south_slavic_row1_6 */ "\u0455", + /* keyspec_south_slavic_row1_6 */ "\u0455", // U+045C: "ќ" CYRILLIC SMALL LETTER KJE - /* keylabel_for_south_slavic_row2_11 */ "\u045C", + /* keyspec_south_slavic_row2_11 */ "\u045C", // U+0437: "з" CYRILLIC SMALL LETTER ZE - /* keylabel_for_south_slavic_row3_1 */ "\u0437", + /* keyspec_south_slavic_row3_1 */ "\u0437", // U+0453: "ѓ" CYRILLIC SMALL LETTER GJE - /* keylabel_for_south_slavic_row3_8 */ "\u0453", - // U+045D: "ѝ" CYRILLIC SMALL LETTER I WITH GRAVE - /* more_keys_for_cyrillic_i */ "\u045D", + /* keyspec_south_slavic_row3_8 */ "\u0453", }; /* Language mn_MN: Mongolian (Mongolia) */ private static final String[] LANGUAGE_mn_MN = { - /* more_keys_for_a ~ */ + /* morekeys_a ~ */ null, null, null, null, null, null, null, null, null, /* ~ single_quotes */ // Label for "switch to alphabetic" key. // U+0410: "А" CYRILLIC CAPITAL LETTER A // U+0411: "Б" CYRILLIC CAPITAL LETTER BE // U+0412: "В" CYRILLIC CAPITAL LETTER VE - /* label_to_alpha_key */ "\u0410\u0411\u0412", - /* more_keys_for_s ~ */ + /* keylabel_to_alpha */ "\u0410\u0411\u0412", + /* morekeys_s ~ */ null, null, null, null, null, null, null, null, null, /* ~ double_angle_quotes */ // U+20AE: "₮" TUGRIK SIGN - /* keylabel_for_currency */ "\u20AE", + /* keyspec_currency */ "\u20AE", }; /* Language my_MM: Burmese (Myanmar) */ private static final String[] LANGUAGE_my_MM = { - /* more_keys_for_a ~ */ + /* morekeys_a ~ */ null, null, null, null, null, null, null, null, null, /* ~ single_quotes */ // Label for "switch to alphabetic" key. // U+1000: "က" MYANMAR LETTER KA // U+1001: "ခ" MYANMAR LETTER KHA // U+1002: "ဂ" MYANMAR LETTER GA - /* label_to_alpha_key */ "\u1000\u1001\u1002", + /* keylabel_to_alpha */ "\u1000\u1001\u1002", }; /* Language nb: Norwegian Bokmål */ @@ -2558,7 +2544,7 @@ public final class KeyboardTextsTable { // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON - /* more_keys_for_a */ "\u00E0,\u00E4,\u00E1,\u00E2,\u00E3,\u0101", + /* morekeys_a */ "\u00E0,\u00E4,\u00E1,\u00E2,\u00E3,\u0101", // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE @@ -2566,13 +2552,13 @@ public final class KeyboardTextsTable { // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE // U+0153: "œ" LATIN SMALL LIGATURE OE // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON - /* more_keys_for_o */ "\u00F4,\u00F2,\u00F3,\u00F6,\u00F5,\u0153,\u014D", + /* morekeys_o */ "\u00F4,\u00F2,\u00F3,\u00F6,\u00F5,\u0153,\u014D", // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON - /* more_keys_for_u */ "\u00FC,\u00FB,\u00F9,\u00FA,\u016B", + /* morekeys_u */ "\u00FC,\u00FB,\u00F9,\u00FA,\u016B", // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX @@ -2580,83 +2566,80 @@ public final class KeyboardTextsTable { // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON - /* more_keys_for_e */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0119,\u0117,\u0113", - /* more_keys_for_i */ null, - /* more_keys_for_c */ null, + /* morekeys_e */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0119,\u0117,\u0113", + /* morekeys_i */ null, + /* morekeys_c */ null, /* double_quotes */ "!text/double_9qm_rqm", - /* more_keys_for_n */ null, + /* morekeys_n */ null, /* single_quotes */ "!text/single_9qm_rqm", - /* label_to_alpha_key ~ */ + /* keylabel_to_alpha ~ */ null, null, null, null, null, null, null, null, null, null, null, null, null, null, - /* ~ more_keys_for_cyrillic_ie */ + /* ~ morekeys_cyrillic_ie */ // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE - /* keylabel_for_nordic_row1_11 */ "\u00E5", + /* keyspec_nordic_row1_11 */ "\u00E5", // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE - /* keylabel_for_nordic_row2_10 */ "\u00F8", + /* keyspec_nordic_row2_10 */ "\u00F8", // U+00E6: "æ" LATIN SMALL LETTER AE - /* keylabel_for_nordic_row2_11 */ "\u00E6", + /* keyspec_nordic_row2_11 */ "\u00E6", // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS - /* more_keys_for_nordic_row2_10 */ "\u00F6", - /* keylabel_for_east_slavic_row1_9 ~ */ + /* morekeys_nordic_row2_10 */ "\u00F6", + /* keyspec_east_slavic_row1_9 ~ */ null, null, null, null, null, - /* ~ more_keys_for_cyrillic_soft_sign */ + /* ~ morekeys_cyrillic_soft_sign */ // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS - /* more_keys_for_nordic_row2_11 */ "\u00E4", + /* morekeys_nordic_row2_11 */ "\u00E4", }; /* Language ne_NP: Nepali (Nepal) */ private static final String[] LANGUAGE_ne_NP = { - /* more_keys_for_a ~ */ + /* morekeys_a ~ */ null, null, null, null, null, null, null, null, null, /* ~ single_quotes */ // Label for "switch to alphabetic" key. // U+0915: "क" DEVANAGARI LETTER KA // U+0916: "ख" DEVANAGARI LETTER KHA // U+0917: "ग" DEVANAGARI LETTER GA - /* label_to_alpha_key */ "\u0915\u0916\u0917", - /* more_keys_for_s ~ */ + /* keylabel_to_alpha */ "\u0915\u0916\u0917", + /* morekeys_s ~ */ null, null, null, null, null, null, null, null, null, /* ~ double_angle_quotes */ // U+0930/U+0941/U+002E "रु." NEPALESE RUPEE SIGN - /* keylabel_for_currency */ "\u0930\u0941.", - /* more_keys_for_r ~ */ + /* keyspec_currency */ "\u0930\u0941.", + /* morekeys_r ~ */ null, null, null, null, null, null, null, null, null, null, null, null, null, - /* ~ more_keys_for_nordic_row2_11 */ + /* ~ morekeys_nordic_row2_11 */ // U+0967: "१" DEVANAGARI DIGIT ONE - /* keylabel_for_symbols_1 */ "\u0967", + /* keyspec_symbols_1 */ "\u0967", // U+0968: "२" DEVANAGARI DIGIT TWO - /* keylabel_for_symbols_2 */ "\u0968", + /* keyspec_symbols_2 */ "\u0968", // U+0969: "३" DEVANAGARI DIGIT THREE - /* keylabel_for_symbols_3 */ "\u0969", + /* keyspec_symbols_3 */ "\u0969", // U+096A: "४" DEVANAGARI DIGIT FOUR - /* keylabel_for_symbols_4 */ "\u096A", + /* keyspec_symbols_4 */ "\u096A", // U+096B: "५" DEVANAGARI DIGIT FIVE - /* keylabel_for_symbols_5 */ "\u096B", + /* keyspec_symbols_5 */ "\u096B", // U+096C: "६" DEVANAGARI DIGIT SIX - /* keylabel_for_symbols_6 */ "\u096C", + /* keyspec_symbols_6 */ "\u096C", // U+096D: "७" DEVANAGARI DIGIT SEVEN - /* keylabel_for_symbols_7 */ "\u096D", + /* keyspec_symbols_7 */ "\u096D", // U+096E: "८" DEVANAGARI DIGIT EIGHT - /* keylabel_for_symbols_8 */ "\u096E", + /* keyspec_symbols_8 */ "\u096E", // U+096F: "९" DEVANAGARI DIGIT NINE - /* keylabel_for_symbols_9 */ "\u096F", + /* keyspec_symbols_9 */ "\u096F", // U+0966: "०" DEVANAGARI DIGIT ZERO - /* keylabel_for_symbols_0 */ "\u0966", + /* keyspec_symbols_0 */ "\u0966", // Label for "switch to symbols" key. - /* label_to_symbol_key */ "?\u0967\u0968\u0969", - // Label for "switch to symbols with microphone" key. This string shouldn't include the "mic" - // part because it'll be appended by the code. - /* label_to_symbol_with_microphone_key */ "\u0967\u0968\u0969", - /* additional_more_keys_for_symbols_1 */ "1", - /* additional_more_keys_for_symbols_2 */ "2", - /* additional_more_keys_for_symbols_3 */ "3", - /* additional_more_keys_for_symbols_4 */ "4", - /* additional_more_keys_for_symbols_5 */ "5", - /* additional_more_keys_for_symbols_6 */ "6", - /* additional_more_keys_for_symbols_7 */ "7", - /* additional_more_keys_for_symbols_8 */ "8", - /* additional_more_keys_for_symbols_9 */ "9", - /* additional_more_keys_for_symbols_0 */ "0", + /* keylabel_to_symbol */ "?\u0967\u0968\u0969", + /* additional_morekeys_symbols_1 */ "1", + /* additional_morekeys_symbols_2 */ "2", + /* additional_morekeys_symbols_3 */ "3", + /* additional_morekeys_symbols_4 */ "4", + /* additional_morekeys_symbols_5 */ "5", + /* additional_morekeys_symbols_6 */ "6", + /* additional_morekeys_symbols_7 */ "7", + /* additional_morekeys_symbols_8 */ "8", + /* additional_morekeys_symbols_9 */ "9", + /* additional_morekeys_symbols_0 */ "0", }; /* Language nl: Dutch */ @@ -2669,7 +2652,7 @@ public final class KeyboardTextsTable { // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON - /* more_keys_for_a */ "\u00E1,\u00E4,\u00E2,\u00E0,\u00E6,\u00E3,\u00E5,\u0101", + /* morekeys_a */ "\u00E1,\u00E4,\u00E2,\u00E0,\u00E6,\u00E3,\u00E5,\u0101", // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX @@ -2678,13 +2661,13 @@ public final class KeyboardTextsTable { // U+0153: "œ" LATIN SMALL LIGATURE OE // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON - /* more_keys_for_o */ "\u00F3,\u00F6,\u00F4,\u00F2,\u00F5,\u0153,\u00F8,\u014D", + /* morekeys_o */ "\u00F3,\u00F6,\u00F4,\u00F2,\u00F5,\u0153,\u00F8,\u014D", // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON - /* more_keys_for_u */ "\u00FA,\u00FC,\u00FB,\u00F9,\u016B", + /* morekeys_u */ "\u00FA,\u00FC,\u00FB,\u00F9,\u016B", // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX @@ -2692,7 +2675,7 @@ public final class KeyboardTextsTable { // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON - /* more_keys_for_e */ "\u00E9,\u00EB,\u00EA,\u00E8,\u0119,\u0117,\u0113", + /* morekeys_e */ "\u00E9,\u00EB,\u00EA,\u00E8,\u0119,\u0117,\u0113", // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE @@ -2700,17 +2683,17 @@ public final class KeyboardTextsTable { // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON // U+0133: "ij" LATIN SMALL LIGATURE IJ - /* more_keys_for_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B,\u0133", - /* more_keys_for_c */ null, + /* morekeys_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B,\u0133", + /* morekeys_c */ null, /* double_quotes */ "!text/double_9qm_rqm", // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE - /* more_keys_for_n */ "\u00F1,\u0144", + /* morekeys_n */ "\u00F1,\u0144", /* single_quotes */ "!text/single_9qm_rqm", - /* label_to_alpha_key */ null, - /* more_keys_for_s */ null, + /* keylabel_to_alpha */ null, + /* morekeys_s */ null, // U+0133: "ij" LATIN SMALL LIGATURE IJ - /* more_keys_for_y */ "\u0133", + /* morekeys_y */ "\u0133", }; /* Language pl: Polish */ @@ -2724,7 +2707,7 @@ public final class KeyboardTextsTable { // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON - /* more_keys_for_a */ "\u0105,\u00E1,\u00E0,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101", + /* morekeys_a */ "\u0105,\u00E1,\u00E0,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101", // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX @@ -2733,8 +2716,8 @@ public final class KeyboardTextsTable { // U+0153: "œ" LATIN SMALL LIGATURE OE // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON - /* more_keys_for_o */ "\u00F3,\u00F6,\u00F4,\u00F2,\u00F5,\u0153,\u00F8,\u014D", - /* more_keys_for_u */ null, + /* morekeys_o */ "\u00F3,\u00F6,\u00F4,\u00F2,\u00F5,\u0153,\u00F8,\u014D", + /* morekeys_u */ null, // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE @@ -2742,31 +2725,31 @@ public final class KeyboardTextsTable { // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON - /* more_keys_for_e */ "\u0119,\u00E8,\u00E9,\u00EA,\u00EB,\u0117,\u0113", - /* more_keys_for_i */ null, + /* morekeys_e */ "\u0119,\u00E8,\u00E9,\u00EA,\u00EB,\u0117,\u0113", + /* morekeys_i */ null, // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA // U+010D: "č" LATIN SMALL LETTER C WITH CARON - /* more_keys_for_c */ "\u0107,\u00E7,\u010D", + /* morekeys_c */ "\u0107,\u00E7,\u010D", /* double_quotes */ "!text/double_9qm_rqm", // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE - /* more_keys_for_n */ "\u0144,\u00F1", + /* morekeys_n */ "\u0144,\u00F1", /* single_quotes */ "!text/single_9qm_rqm", - /* label_to_alpha_key */ null, + /* keylabel_to_alpha */ null, // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE // U+00DF: "ß" LATIN SMALL LETTER SHARP S // U+0161: "š" LATIN SMALL LETTER S WITH CARON - /* more_keys_for_s */ "\u015B,\u00DF,\u0161", - /* more_keys_for_y */ null, - /* more_keys_for_d */ null, + /* morekeys_s */ "\u015B,\u00DF,\u0161", + /* morekeys_y */ null, + /* morekeys_d */ null, // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON - /* more_keys_for_z */ "\u017C,\u017A,\u017E", - /* more_keys_for_t */ null, + /* morekeys_z */ "\u017C,\u017A,\u017E", + /* morekeys_t */ null, // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE - /* more_keys_for_l */ "\u0142", + /* morekeys_l */ "\u0142", }; /* Language pt: Portuguese */ @@ -2779,7 +2762,7 @@ public final class KeyboardTextsTable { // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE // U+00E6: "æ" LATIN SMALL LETTER AE // U+00AA: "ª" FEMININE ORDINAL INDICATOR - /* more_keys_for_a */ "\u00E1,\u00E3,\u00E0,\u00E2,\u00E4,\u00E5,\u00E6,\u00AA", + /* morekeys_a */ "\u00E1,\u00E3,\u00E0,\u00E2,\u00E4,\u00E5,\u00E6,\u00AA", // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX @@ -2789,13 +2772,13 @@ public final class KeyboardTextsTable { // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON // U+00BA: "º" MASCULINE ORDINAL INDICATOR - /* more_keys_for_o */ "\u00F3,\u00F5,\u00F4,\u00F2,\u00F6,\u0153,\u00F8,\u014D,\u00BA", + /* morekeys_o */ "\u00F3,\u00F5,\u00F4,\u00F2,\u00F6,\u0153,\u00F8,\u014D,\u00BA", // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON - /* more_keys_for_u */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B", + /* morekeys_u */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B", // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE @@ -2803,23 +2786,23 @@ public final class KeyboardTextsTable { // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS - /* more_keys_for_e */ "\u00E9,\u00EA,\u00E8,\u0119,\u0117,\u0113,\u00EB", + /* morekeys_e */ "\u00E9,\u00EA,\u00E8,\u0119,\u0117,\u0113,\u00EB", // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON - /* more_keys_for_i */ "\u00ED,\u00EE,\u00EC,\u00EF,\u012F,\u012B", + /* morekeys_i */ "\u00ED,\u00EE,\u00EC,\u00EF,\u012F,\u012B", // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA // U+010D: "č" LATIN SMALL LETTER C WITH CARON // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE - /* more_keys_for_c */ "\u00E7,\u010D,\u0107", + /* morekeys_c */ "\u00E7,\u010D,\u0107", }; /* Language rm: Raeto-Romance */ private static final String[] LANGUAGE_rm = { - /* more_keys_for_a */ null, + /* morekeys_a */ null, // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS @@ -2827,7 +2810,7 @@ public final class KeyboardTextsTable { // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE // U+0153: "œ" LATIN SMALL LIGATURE OE // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE - /* more_keys_for_o */ "\u00F2,\u00F3,\u00F6,\u00F4,\u00F5,\u0153,\u00F8", + /* morekeys_o */ "\u00F2,\u00F3,\u00F6,\u00F4,\u00F5,\u0153,\u00F8", }; /* Language ro: Romanian */ @@ -2841,65 +2824,65 @@ public final class KeyboardTextsTable { // U+00E6: "æ" LATIN SMALL LETTER AE // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON - /* more_keys_for_a */ "\u00E2,\u00E3,\u0103,\u00E0,\u00E1,\u00E4,\u00E6,\u00E5,\u0101", - /* more_keys_for_o ~ */ + /* morekeys_a */ "\u00E2,\u00E3,\u0103,\u00E0,\u00E1,\u00E4,\u00E6,\u00E5,\u0101", + /* morekeys_o ~ */ null, null, null, - /* ~ more_keys_for_e */ + /* ~ morekeys_e */ // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON - /* more_keys_for_i */ "\u00EE,\u00EF,\u00EC,\u00ED,\u012F,\u012B", - /* more_keys_for_c */ null, + /* morekeys_i */ "\u00EE,\u00EF,\u00EC,\u00ED,\u012F,\u012B", + /* morekeys_c */ null, /* double_quotes */ "!text/double_9qm_rqm", - /* more_keys_for_n */ null, + /* morekeys_n */ null, /* single_quotes */ "!text/single_9qm_rqm", - /* label_to_alpha_key */ null, + /* keylabel_to_alpha */ null, // U+0219: "ș" LATIN SMALL LETTER S WITH COMMA BELOW // U+00DF: "ß" LATIN SMALL LETTER SHARP S // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE // U+0161: "š" LATIN SMALL LETTER S WITH CARON - /* more_keys_for_s */ "\u0219,\u00DF,\u015B,\u0161", - /* more_keys_for_y ~ */ + /* morekeys_s */ "\u0219,\u00DF,\u015B,\u0161", + /* morekeys_y ~ */ null, null, null, - /* ~ more_keys_for_z */ + /* ~ morekeys_z */ // U+021B: "ț" LATIN SMALL LETTER T WITH COMMA BELOW - /* more_keys_for_t */ "\u021B", + /* morekeys_t */ "\u021B", }; /* Language ru: Russian */ private static final String[] LANGUAGE_ru = { - /* more_keys_for_a ~ */ + /* morekeys_a ~ */ null, null, null, null, null, null, - /* ~ more_keys_for_c */ + /* ~ morekeys_c */ /* double_quotes */ "!text/double_9qm_lqm", - /* more_keys_for_n */ null, + /* morekeys_n */ null, /* single_quotes */ "!text/single_9qm_lqm", // Label for "switch to alphabetic" key. // U+0410: "А" CYRILLIC CAPITAL LETTER A // U+0411: "Б" CYRILLIC CAPITAL LETTER BE // U+0412: "В" CYRILLIC CAPITAL LETTER VE - /* label_to_alpha_key */ "\u0410\u0411\u0412", - /* more_keys_for_s ~ */ + /* keylabel_to_alpha */ "\u0410\u0411\u0412", + /* morekeys_s ~ */ null, null, null, null, null, null, null, null, null, null, null, null, - /* ~ more_keys_for_k */ + /* ~ morekeys_k */ // U+0451: "ё" CYRILLIC SMALL LETTER IO - /* more_keys_for_cyrillic_ie */ "\u0451", - /* keylabel_for_nordic_row1_11 ~ */ + /* morekeys_cyrillic_ie */ "\u0451", + /* keyspec_nordic_row1_11 ~ */ null, null, null, null, - /* ~ more_keys_for_nordic_row2_10 */ + /* ~ morekeys_nordic_row2_10 */ // U+0449: "щ" CYRILLIC SMALL LETTER SHCHA - /* keylabel_for_east_slavic_row1_9 */ "\u0449", + /* keyspec_east_slavic_row1_9 */ "\u0449", // U+044B: "ы" CYRILLIC SMALL LETTER YERU - /* keylabel_for_east_slavic_row2_2 */ "\u044B", + /* keyspec_east_slavic_row2_2 */ "\u044B", // U+044D: "э" CYRILLIC SMALL LETTER E - /* keylabel_for_east_slavic_row2_11 */ "\u044D", + /* keyspec_east_slavic_row2_11 */ "\u044D", // U+0438: "и" CYRILLIC SMALL LETTER I - /* keylabel_for_east_slavic_row3_5 */ "\u0438", + /* keyspec_east_slavic_row3_5 */ "\u0438", // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN - /* more_keys_for_cyrillic_soft_sign */ "\u044A", + /* morekeys_cyrillic_soft_sign */ "\u044A", }; /* Language sk: Slovak */ @@ -2913,7 +2896,7 @@ public final class KeyboardTextsTable { // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE // U+00E6: "æ" LATIN SMALL LETTER AE // U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK - /* more_keys_for_a */ "\u00E1,\u00E4,\u0101,\u00E0,\u00E2,\u00E3,\u00E5,\u00E6,\u0105", + /* morekeys_a */ "\u00E1,\u00E4,\u0101,\u00E0,\u00E2,\u00E3,\u00E5,\u00E6,\u0105", // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS @@ -2922,7 +2905,7 @@ public final class KeyboardTextsTable { // U+0153: "œ" LATIN SMALL LIGATURE OE // U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE - /* more_keys_for_o */ "\u00F4,\u00F3,\u00F6,\u00F2,\u00F5,\u0153,\u0151,\u00F8", + /* morekeys_o */ "\u00F4,\u00F3,\u00F6,\u00F2,\u00F5,\u0153,\u0151,\u00F8", // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE // U+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS @@ -2931,7 +2914,7 @@ public final class KeyboardTextsTable { // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX // U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE - /* more_keys_for_u */ "\u00FA,\u016F,\u00FC,\u016B,\u0173,\u00F9,\u00FB,\u0171", + /* morekeys_u */ "\u00FA,\u016F,\u00FC,\u016B,\u0173,\u00F9,\u00FB,\u0171", // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE // U+011B: "ě" LATIN SMALL LETTER E WITH CARON // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON @@ -2940,7 +2923,7 @@ public final class KeyboardTextsTable { // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK - /* more_keys_for_e */ "\u00E9,\u011B,\u0113,\u0117,\u00E8,\u00EA,\u00EB,\u0119", + /* morekeys_e */ "\u00E9,\u011B,\u0113,\u0117,\u00E8,\u00EA,\u00EB,\u0119", // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK @@ -2948,139 +2931,139 @@ public final class KeyboardTextsTable { // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS // U+0131: "ı" LATIN SMALL LETTER DOTLESS I - /* more_keys_for_i */ "\u00ED,\u012B,\u012F,\u00EC,\u00EE,\u00EF,\u0131", + /* morekeys_i */ "\u00ED,\u012B,\u012F,\u00EC,\u00EE,\u00EF,\u0131", // U+010D: "č" LATIN SMALL LETTER C WITH CARON // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE - /* more_keys_for_c */ "\u010D,\u00E7,\u0107", + /* morekeys_c */ "\u010D,\u00E7,\u0107", /* double_quotes */ "!text/double_9qm_lqm", // U+0148: "ň" LATIN SMALL LETTER N WITH CARON // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE - /* more_keys_for_n */ "\u0148,\u0146,\u00F1,\u0144", + /* morekeys_n */ "\u0148,\u0146,\u00F1,\u0144", /* single_quotes */ "!text/single_9qm_lqm", - /* label_to_alpha_key */ null, + /* keylabel_to_alpha */ null, // U+0161: "š" LATIN SMALL LETTER S WITH CARON // U+00DF: "ß" LATIN SMALL LETTER SHARP S // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA - /* more_keys_for_s */ "\u0161,\u00DF,\u015B,\u015F", + /* morekeys_s */ "\u0161,\u00DF,\u015B,\u015F", // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS - /* more_keys_for_y */ "\u00FD,\u00FF", + /* morekeys_y */ "\u00FD,\u00FF", // U+010F: "ď" LATIN SMALL LETTER D WITH CARON - /* more_keys_for_d */ "\u010F", + /* morekeys_d */ "\u010F", // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE - /* more_keys_for_z */ "\u017E,\u017C,\u017A", + /* morekeys_z */ "\u017E,\u017C,\u017A", // U+0165: "ť" LATIN SMALL LETTER T WITH CARON // U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA - /* more_keys_for_t */ "\u0165,\u0163", + /* morekeys_t */ "\u0165,\u0163", // U+013E: "ľ" LATIN SMALL LETTER L WITH CARON // U+013A: "ĺ" LATIN SMALL LETTER L WITH ACUTE // U+013C: "ļ" LATIN SMALL LETTER L WITH CEDILLA // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE - /* more_keys_for_l */ "\u013E,\u013A,\u013C,\u0142", + /* morekeys_l */ "\u013E,\u013A,\u013C,\u0142", // U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE - /* more_keys_for_g */ "\u0123,\u011F", + /* morekeys_g */ "\u0123,\u011F", /* single_angle_quotes */ "!text/single_raqm_laqm", /* double_angle_quotes */ "!text/double_raqm_laqm", - /* keylabel_for_currency */ null, + /* keyspec_currency */ null, // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE // U+0159: "ř" LATIN SMALL LETTER R WITH CARON // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA - /* more_keys_for_r */ "\u0155,\u0159,\u0157", + /* morekeys_r */ "\u0155,\u0159,\u0157", // U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA - /* more_keys_for_k */ "\u0137", + /* morekeys_k */ "\u0137", }; /* Language sl: Slovenian */ private static final String[] LANGUAGE_sl = { - /* more_keys_for_a ~ */ + /* morekeys_a ~ */ null, null, null, null, null, - /* ~ more_keys_for_i */ + /* ~ morekeys_i */ // U+010D: "č" LATIN SMALL LETTER C WITH CARON // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE - /* more_keys_for_c */ "\u010D,\u0107", + /* morekeys_c */ "\u010D,\u0107", /* double_quotes */ "!text/double_9qm_lqm", - /* more_keys_for_n */ null, + /* morekeys_n */ null, /* single_quotes */ "!text/single_9qm_lqm", - /* label_to_alpha_key */ null, + /* keylabel_to_alpha */ null, // U+0161: "š" LATIN SMALL LETTER S WITH CARON - /* more_keys_for_s */ "\u0161", - /* more_keys_for_y */ null, + /* morekeys_s */ "\u0161", + /* morekeys_y */ null, // U+0111: "đ" LATIN SMALL LETTER D WITH STROKE - /* more_keys_for_d */ "\u0111", + /* morekeys_d */ "\u0111", // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON - /* more_keys_for_z */ "\u017E", - /* more_keys_for_t ~ */ + /* morekeys_z */ "\u017E", + /* morekeys_t ~ */ null, null, null, - /* ~ more_keys_for_g */ + /* ~ morekeys_g */ /* single_angle_quotes */ "!text/single_raqm_laqm", /* double_angle_quotes */ "!text/double_raqm_laqm", }; /* Language sr: Serbian */ private static final String[] LANGUAGE_sr = { - /* more_keys_for_a ~ */ + /* morekeys_a ~ */ null, null, null, null, null, null, - /* ~ more_keys_for_c */ + /* ~ morekeys_c */ /* double_quotes */ "!text/double_9qm_lqm", - /* more_keys_for_n */ null, + /* morekeys_n */ null, /* single_quotes */ "!text/single_9qm_lqm", // END: More keys definitions for Serbian (Cyrillic) // Label for "switch to alphabetic" key. // U+0410: "А" CYRILLIC CAPITAL LETTER A // U+0411: "Б" CYRILLIC CAPITAL LETTER BE // U+0412: "В" CYRILLIC CAPITAL LETTER VE - /* label_to_alpha_key */ "\u0410\u0411\u0412", - /* more_keys_for_s ~ */ + /* keylabel_to_alpha */ "\u0410\u0411\u0412", + /* morekeys_s ~ */ null, null, null, null, null, null, null, - /* ~ more_keys_for_g */ + /* ~ morekeys_g */ /* single_angle_quotes */ "!text/single_raqm_laqm", /* double_angle_quotes */ "!text/double_raqm_laqm", - /* keylabel_for_currency ~ */ + /* keyspec_currency ~ */ null, null, null, - /* ~ more_keys_for_k */ + /* ~ morekeys_k */ // U+0450: "ѐ" CYRILLIC SMALL LETTER IE WITH GRAVE - /* more_keys_for_cyrillic_ie */ "\u0450", - /* keylabel_for_nordic_row1_11 ~ */ + /* morekeys_cyrillic_ie */ "\u0450", + /* keyspec_nordic_row1_11 ~ */ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, - /* ~ more_keys_for_cyrillic_o */ + null, null, null, null, null, null, null, null, null, null, null, null, + /* ~ morekeys_cyrillic_o */ + // U+045D: "ѝ" CYRILLIC SMALL LETTER I WITH GRAVE + /* morekeys_cyrillic_i */ "\u045D", // TODO: Move these to sr-Latn once we can handle IETF language tag with script name specified. // BEGIN: More keys definitions for Serbian (Latin) // U+0161: "š" LATIN SMALL LETTER S WITH CARON // U+00DF: "ß" LATIN SMALL LETTER SHARP S // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE - // <string name="more_keys_for_s">š,ß,ś</string> + // <string name="morekeys_s">š,ß,ś</string> // U+010D: "č" LATIN SMALL LETTER C WITH CARON // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE - // <string name="more_keys_for_c">č,ç,ć</string> + // <string name="morekeys_c">č,ç,ć</string> // U+010F: "ď" LATIN SMALL LETTER D WITH CARON - // <string name="more_keys_for_d">ď</string> + // <string name="morekeys_d">ď</string> // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE - // <string name="more_keys_for_z">ž,ź,ż</string> + // <string name="morekeys_z">ž,ź,ż</string> // END: More keys definitions for Serbian (Latin) // BEGIN: More keys definitions for Serbian (Cyrillic) // U+0437: "з" CYRILLIC SMALL LETTER ZE - /* keylabel_for_south_slavic_row1_6 */ "\u0437", + /* keyspec_south_slavic_row1_6 */ "\u0437", // U+045B: "ћ" CYRILLIC SMALL LETTER TSHE - /* keylabel_for_south_slavic_row2_11 */ "\u045B", + /* keyspec_south_slavic_row2_11 */ "\u045B", // U+0455: "ѕ" CYRILLIC SMALL LETTER DZE - /* keylabel_for_south_slavic_row3_1 */ "\u0455", + /* keyspec_south_slavic_row3_1 */ "\u0455", // U+0452: "ђ" CYRILLIC SMALL LETTER DJE - /* keylabel_for_south_slavic_row3_8 */ "\u0452", - // U+045D: "ѝ" CYRILLIC SMALL LETTER I WITH GRAVE - /* more_keys_for_cyrillic_i */ "\u045D", + /* keyspec_south_slavic_row3_8 */ "\u0452", }; /* Language sv: Swedish */ @@ -3090,88 +3073,88 @@ public final class KeyboardTextsTable { // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX // U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE - /* more_keys_for_a */ "\u00E1,\u00E0,\u00E2,\u0105,\u00E3", + /* morekeys_a */ "\u00E1,\u00E0,\u00E2,\u0105,\u00E3", // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON - /* more_keys_for_o */ "\u00F3,\u00F2,\u00F4,\u00F5,\u014D", + /* morekeys_o */ "\u00F3,\u00F2,\u00F4,\u00F5,\u014D", // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON - /* more_keys_for_u */ "\u00FC,\u00FA,\u00F9,\u00FB,\u016B", + /* morekeys_u */ "\u00FC,\u00FA,\u00F9,\u00FB,\u016B", // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK - /* more_keys_for_e */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0119", + /* morekeys_e */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0119", // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS - /* more_keys_for_i */ "\u00ED,\u00EC,\u00EE,\u00EF", + /* morekeys_i */ "\u00ED,\u00EC,\u00EE,\u00EF", // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE // U+010D: "č" LATIN SMALL LETTER C WITH CARON - /* more_keys_for_c */ "\u00E7,\u0107,\u010D", + /* morekeys_c */ "\u00E7,\u0107,\u010D", /* double_quotes */ null, // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE // U+0148: "ň" LATIN SMALL LETTER N WITH CARON - /* more_keys_for_n */ "\u0144,\u00F1,\u0148", + /* morekeys_n */ "\u0144,\u00F1,\u0148", /* single_quotes */ null, - /* label_to_alpha_key */ null, + /* keylabel_to_alpha */ null, // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE // U+0161: "š" LATIN SMALL LETTER S WITH CARON // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA // U+00DF: "ß" LATIN SMALL LETTER SHARP S - /* more_keys_for_s */ "\u015B,\u0161,\u015F,\u00DF", + /* morekeys_s */ "\u015B,\u0161,\u015F,\u00DF", // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS - /* more_keys_for_y */ "\u00FD,\u00FF", + /* morekeys_y */ "\u00FD,\u00FF", // U+00F0: "ð" LATIN SMALL LETTER ETH // U+010F: "ď" LATIN SMALL LETTER D WITH CARON - /* more_keys_for_d */ "\u00F0,\u010F", + /* morekeys_d */ "\u00F0,\u010F", // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE - /* more_keys_for_z */ "\u017A,\u017E,\u017C", + /* morekeys_z */ "\u017A,\u017E,\u017C", // U+0165: "ť" LATIN SMALL LETTER T WITH CARON // U+00FE: "þ" LATIN SMALL LETTER THORN - /* more_keys_for_t */ "\u0165,\u00FE", + /* morekeys_t */ "\u0165,\u00FE", // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE - /* more_keys_for_l */ "\u0142", - /* more_keys_for_g */ null, + /* morekeys_l */ "\u0142", + /* morekeys_g */ null, /* single_angle_quotes */ "!text/single_raqm_laqm", /* double_angle_quotes */ "!text/double_raqm_laqm", - /* keylabel_for_currency */ null, + /* keyspec_currency */ null, // U+0159: "ř" LATIN SMALL LETTER R WITH CARON - /* more_keys_for_r */ "\u0159", - /* more_keys_for_k */ null, - /* more_keys_for_cyrillic_ie */ null, + /* morekeys_r */ "\u0159", + /* morekeys_k */ null, + /* morekeys_cyrillic_ie */ null, // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE - /* keylabel_for_nordic_row1_11 */ "\u00E5", + /* keyspec_nordic_row1_11 */ "\u00E5", // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS - /* keylabel_for_nordic_row2_10 */ "\u00F6", + /* keyspec_nordic_row2_10 */ "\u00F6", // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS - /* keylabel_for_nordic_row2_11 */ "\u00E4", + /* keyspec_nordic_row2_11 */ "\u00E4", // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE // U+0153: "œ" LATIN SMALL LIGATURE OE - /* more_keys_for_nordic_row2_10 */ "\u00F8,\u0153", - /* keylabel_for_east_slavic_row1_9 ~ */ + /* morekeys_nordic_row2_10 */ "\u00F8,\u0153", + /* keyspec_east_slavic_row1_9 ~ */ null, null, null, null, null, - /* ~ more_keys_for_cyrillic_soft_sign */ + /* ~ morekeys_cyrillic_soft_sign */ // U+00E6: "æ" LATIN SMALL LETTER AE - /* more_keys_for_nordic_row2_11 */ "\u00E6", + /* morekeys_nordic_row2_11 */ "\u00E6", }; /* Language sw: Swahili */ private static final String[] LANGUAGE_sw = { - // This is the same as English except more_keys_for_g. + // This is the same as English except morekeys_g. // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX @@ -3180,7 +3163,7 @@ public final class KeyboardTextsTable { // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON - /* more_keys_for_a */ "\u00E0,\u00E1,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101", + /* morekeys_a */ "\u00E0,\u00E1,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101", // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE @@ -3189,55 +3172,55 @@ public final class KeyboardTextsTable { // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE - /* more_keys_for_o */ "\u00F4,\u00F6,\u00F2,\u00F3,\u0153,\u00F8,\u014D,\u00F5", + /* morekeys_o */ "\u00F4,\u00F6,\u00F2,\u00F3,\u0153,\u00F8,\u014D,\u00F5", // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON - /* more_keys_for_u */ "\u00FB,\u00FC,\u00F9,\u00FA,\u016B", + /* morekeys_u */ "\u00FB,\u00FC,\u00F9,\u00FA,\u016B", // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON - /* more_keys_for_e */ "\u00E8,\u00E9,\u00EA,\u00EB,\u0113", + /* morekeys_e */ "\u00E8,\u00E9,\u00EA,\u00EB,\u0113", // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE - /* more_keys_for_i */ "\u00EE,\u00EF,\u00ED,\u012B,\u00EC", + /* morekeys_i */ "\u00EE,\u00EF,\u00ED,\u012B,\u00EC", // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA - /* more_keys_for_c */ "\u00E7", + /* morekeys_c */ "\u00E7", /* double_quotes */ null, // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE - /* more_keys_for_n */ "\u00F1", + /* morekeys_n */ "\u00F1", /* single_quotes */ null, - /* label_to_alpha_key */ null, + /* keylabel_to_alpha */ null, // U+00DF: "ß" LATIN SMALL LETTER SHARP S - /* more_keys_for_s */ "\u00DF", - /* more_keys_for_y ~ */ + /* morekeys_s */ "\u00DF", + /* morekeys_y ~ */ null, null, null, null, null, - /* ~ more_keys_for_l */ - /* more_keys_for_g */ "g\'", + /* ~ morekeys_l */ + /* morekeys_g */ "g\'", }; /* Language th: Thai */ private static final String[] LANGUAGE_th = { - /* more_keys_for_a ~ */ + /* morekeys_a ~ */ null, null, null, null, null, null, null, null, null, /* ~ single_quotes */ // Label for "switch to alphabetic" key. // U+0E01: "ก" THAI CHARACTER KO KAI // U+0E02: "ข" THAI CHARACTER KHO KHAI // U+0E04: "ค" THAI CHARACTER KHO KHWAI - /* label_to_alpha_key */ "\u0E01\u0E02\u0E04", - /* more_keys_for_s ~ */ + /* keylabel_to_alpha */ "\u0E01\u0E02\u0E04", + /* morekeys_s ~ */ null, null, null, null, null, null, null, null, null, /* ~ double_angle_quotes */ // U+0E3F: "฿" THAI CURRENCY SYMBOL BAHT - /* keylabel_for_currency */ "\u0E3F", + /* keyspec_currency */ "\u0E3F", }; /* Language tl: Tagalog */ @@ -3252,7 +3235,7 @@ public final class KeyboardTextsTable { // U+00E6: "æ" LATIN SMALL LETTER AE // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON // U+00AA: "ª" FEMININE ORDINAL INDICATOR - /* more_keys_for_a */ "\u00E1,\u00E0,\u00E4,\u00E2,\u00E3,\u00E5,\u0105,\u00E6,\u0101,\u00AA", + /* morekeys_a */ "\u00E1,\u00E0,\u00E4,\u00E2,\u00E3,\u00E5,\u0105,\u00E6,\u0101,\u00AA", // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS @@ -3262,13 +3245,13 @@ public final class KeyboardTextsTable { // U+0153: "œ" LATIN SMALL LIGATURE OE // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON // U+00BA: "º" MASCULINE ORDINAL INDICATOR - /* more_keys_for_o */ "\u00F3,\u00F2,\u00F6,\u00F4,\u00F5,\u00F8,\u0153,\u014D,\u00BA", + /* morekeys_o */ "\u00F3,\u00F2,\u00F6,\u00F4,\u00F5,\u00F8,\u0153,\u014D,\u00BA", // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON - /* more_keys_for_u */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B", + /* morekeys_u */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B", // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS @@ -3276,28 +3259,28 @@ public final class KeyboardTextsTable { // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON - /* more_keys_for_e */ "\u00E9,\u00E8,\u00EB,\u00EA,\u0119,\u0117,\u0113", + /* morekeys_e */ "\u00E9,\u00E8,\u00EB,\u00EA,\u0119,\u0117,\u0113", // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON - /* more_keys_for_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B", + /* morekeys_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B", // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE // U+010D: "č" LATIN SMALL LETTER C WITH CARON - /* more_keys_for_c */ "\u00E7,\u0107,\u010D", + /* morekeys_c */ "\u00E7,\u0107,\u010D", /* double_quotes */ null, // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE - /* more_keys_for_n */ "\u00F1,\u0144", + /* morekeys_n */ "\u00F1,\u0144", }; /* Language tr: Turkish */ private static final String[] LANGUAGE_tr = { // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX - /* more_keys_for_a */ "\u00E2", + /* morekeys_a */ "\u00E2", // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX // U+0153: "œ" LATIN SMALL LIGATURE OE @@ -3306,14 +3289,14 @@ public final class KeyboardTextsTable { // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON - /* more_keys_for_o */ "\u00F6,\u00F4,\u0153,\u00F2,\u00F3,\u00F5,\u00F8,\u014D", + /* morekeys_o */ "\u00F6,\u00F4,\u0153,\u00F2,\u00F3,\u00F5,\u00F8,\u014D", // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON - /* more_keys_for_u */ "\u00FC,\u00FB,\u00F9,\u00FA,\u016B", - /* more_keys_for_e */ null, + /* morekeys_u */ "\u00FC,\u00FB,\u00F9,\u00FA,\u016B", + /* morekeys_e */ null, // U+0131: "ı" LATIN SMALL LETTER DOTLESS I // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS @@ -3321,67 +3304,68 @@ public final class KeyboardTextsTable { // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON - /* more_keys_for_i */ "\u0131,\u00EE,\u00EF,\u00EC,\u00ED,\u012F,\u012B", + /* morekeys_i */ "\u0131,\u00EE,\u00EF,\u00EC,\u00ED,\u012F,\u012B", // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE // U+010D: "č" LATIN SMALL LETTER C WITH CARON - /* more_keys_for_c */ "\u00E7,\u0107,\u010D", + /* morekeys_c */ "\u00E7,\u0107,\u010D", /* double_quotes ~ */ null, null, null, null, - /* ~ label_to_alpha_key */ + /* ~ keylabel_to_alpha */ // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA // U+00DF: "ß" LATIN SMALL LETTER SHARP S // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE // U+0161: "š" LATIN SMALL LETTER S WITH CARON - /* more_keys_for_s */ "\u015F,\u00DF,\u015B,\u0161", - /* more_keys_for_y ~ */ + /* morekeys_s */ "\u015F,\u00DF,\u015B,\u0161", + /* morekeys_y ~ */ null, null, null, null, null, - /* ~ more_keys_for_l */ + /* ~ morekeys_l */ // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE - /* more_keys_for_g */ "\u011F", + /* morekeys_g */ "\u011F", }; /* Language uk: Ukrainian */ private static final String[] LANGUAGE_uk = { - /* more_keys_for_a ~ */ + /* morekeys_a ~ */ null, null, null, null, null, null, - /* ~ more_keys_for_c */ + /* ~ morekeys_c */ /* double_quotes */ "!text/double_9qm_lqm", - /* more_keys_for_n */ null, + /* morekeys_n */ null, /* single_quotes */ "!text/single_9qm_lqm", // Label for "switch to alphabetic" key. // U+0410: "А" CYRILLIC CAPITAL LETTER A // U+0411: "Б" CYRILLIC CAPITAL LETTER BE // U+0412: "В" CYRILLIC CAPITAL LETTER VE - /* label_to_alpha_key */ "\u0410\u0411\u0412", - /* more_keys_for_s ~ */ + /* keylabel_to_alpha */ "\u0410\u0411\u0412", + /* morekeys_s ~ */ null, null, null, null, null, null, null, null, null, /* ~ double_angle_quotes */ // U+20B4: "₴" HRYVNIA SIGN - /* keylabel_for_currency */ "\u20B4", - /* more_keys_for_r ~ */ + /* keyspec_currency */ "\u20B4", + /* morekeys_r ~ */ null, null, null, null, null, null, null, - /* ~ more_keys_for_nordic_row2_10 */ + /* ~ morekeys_nordic_row2_10 */ // U+0449: "щ" CYRILLIC SMALL LETTER SHCHA - /* keylabel_for_east_slavic_row1_9 */ "\u0449", + /* keyspec_east_slavic_row1_9 */ "\u0449", // U+0456: "і" CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I - /* keylabel_for_east_slavic_row2_2 */ "\u0456", + /* keyspec_east_slavic_row2_2 */ "\u0456", // U+0454: "є" CYRILLIC SMALL LETTER UKRAINIAN IE - /* keylabel_for_east_slavic_row2_11 */ "\u0454", + /* keyspec_east_slavic_row2_11 */ "\u0454", // U+0438: "и" CYRILLIC SMALL LETTER I - /* keylabel_for_east_slavic_row3_5 */ "\u0438", + /* keyspec_east_slavic_row3_5 */ "\u0438", // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN - /* more_keys_for_cyrillic_soft_sign */ "\u044A", - /* more_keys_for_nordic_row2_11 ~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + /* morekeys_cyrillic_soft_sign */ "\u044A", + /* morekeys_nordic_row2_11 ~ */ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, - /* ~ more_keys_for_cyrillic_en */ - // U+0491: "ґ" CYRILLIC SMALL LETTER GHE WITH UPTURN - /* more_keys_for_cyrillic_ghe */ "\u0491", + null, null, null, null, null, null, null, null, null, null, null, null, null, + /* ~ morekeys_w */ // U+0457: "ї" CYRILLIC SMALL LETTER YI - /* more_keys_for_east_slavic_row2_2 */ "\u0457", + /* morekeys_east_slavic_row2_2 */ "\u0457", + /* morekeys_cyrillic_u */ null, + /* morekeys_cyrillic_en */ null, + // U+0491: "ґ" CYRILLIC SMALL LETTER GHE WITH UPTURN + /* morekeys_cyrillic_ghe */ "\u0491", }; /* Language vi: Vietnamese */ @@ -3403,7 +3387,7 @@ public final class KeyboardTextsTable { // U+1EA9: "ẩ" LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE // U+1EAB: "ẫ" LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE // U+1EAD: "ậ" LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW - /* more_keys_for_a */ "\u00E0,\u00E1,\u1EA3,\u00E3,\u1EA1,\u0103,\u1EB1,\u1EAF,\u1EB3,\u1EB5,\u1EB7,\u00E2,\u1EA7,\u1EA5,\u1EA9,\u1EAB,\u1EAD", + /* morekeys_a */ "\u00E0,\u00E1,\u1EA3,\u00E3,\u1EA1,\u0103,\u1EB1,\u1EAF,\u1EB3,\u1EB5,\u1EB7,\u00E2,\u1EA7,\u1EA5,\u1EA9,\u1EAB,\u1EAD", // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE // U+1ECF: "ỏ" LATIN SMALL LETTER O WITH HOOK ABOVE @@ -3421,7 +3405,7 @@ public final class KeyboardTextsTable { // U+1EDF: "ở" LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE // U+1EE1: "ỡ" LATIN SMALL LETTER O WITH HORN AND TILDE // U+1EE3: "ợ" LATIN SMALL LETTER O WITH HORN AND DOT BELOW - /* more_keys_for_o */ "\u00F2,\u00F3,\u1ECF,\u00F5,\u1ECD,\u00F4,\u1ED3,\u1ED1,\u1ED5,\u1ED7,\u1ED9,\u01A1,\u1EDD,\u1EDB,\u1EDF,\u1EE1,\u1EE3", + /* morekeys_o */ "\u00F2,\u00F3,\u1ECF,\u00F5,\u1ECD,\u00F4,\u1ED3,\u1ED1,\u1ED5,\u1ED7,\u1ED9,\u01A1,\u1EDD,\u1EDB,\u1EDF,\u1EE1,\u1EE3", // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE // U+1EE7: "ủ" LATIN SMALL LETTER U WITH HOOK ABOVE @@ -3433,7 +3417,7 @@ public final class KeyboardTextsTable { // U+1EED: "ử" LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE // U+1EEF: "ữ" LATIN SMALL LETTER U WITH HORN AND TILDE // U+1EF1: "ự" LATIN SMALL LETTER U WITH HORN AND DOT BELOW - /* more_keys_for_u */ "\u00F9,\u00FA,\u1EE7,\u0169,\u1EE5,\u01B0,\u1EEB,\u1EE9,\u1EED,\u1EEF,\u1EF1", + /* morekeys_u */ "\u00F9,\u00FA,\u1EE7,\u0169,\u1EE5,\u01B0,\u1EEB,\u1EE9,\u1EED,\u1EEF,\u1EF1", // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE // U+1EBB: "ẻ" LATIN SMALL LETTER E WITH HOOK ABOVE @@ -3445,29 +3429,29 @@ public final class KeyboardTextsTable { // U+1EC3: "ể" LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE // U+1EC5: "ễ" LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE // U+1EC7: "ệ" LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW - /* more_keys_for_e */ "\u00E8,\u00E9,\u1EBB,\u1EBD,\u1EB9,\u00EA,\u1EC1,\u1EBF,\u1EC3,\u1EC5,\u1EC7", + /* morekeys_e */ "\u00E8,\u00E9,\u1EBB,\u1EBD,\u1EB9,\u00EA,\u1EC1,\u1EBF,\u1EC3,\u1EC5,\u1EC7", // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE // U+1EC9: "ỉ" LATIN SMALL LETTER I WITH HOOK ABOVE // U+0129: "ĩ" LATIN SMALL LETTER I WITH TILDE // U+1ECB: "ị" LATIN SMALL LETTER I WITH DOT BELOW - /* more_keys_for_i */ "\u00EC,\u00ED,\u1EC9,\u0129,\u1ECB", - /* more_keys_for_c ~ */ + /* morekeys_i */ "\u00EC,\u00ED,\u1EC9,\u0129,\u1ECB", + /* morekeys_c ~ */ null, null, null, null, null, null, - /* ~ more_keys_for_s */ + /* ~ morekeys_s */ // U+1EF3: "ỳ" LATIN SMALL LETTER Y WITH GRAVE // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE // U+1EF7: "ỷ" LATIN SMALL LETTER Y WITH HOOK ABOVE // U+1EF9: "ỹ" LATIN SMALL LETTER Y WITH TILDE // U+1EF5: "ỵ" LATIN SMALL LETTER Y WITH DOT BELOW - /* more_keys_for_y */ "\u1EF3,\u00FD,\u1EF7,\u1EF9,\u1EF5", + /* morekeys_y */ "\u1EF3,\u00FD,\u1EF7,\u1EF9,\u1EF5", // U+0111: "đ" LATIN SMALL LETTER D WITH STROKE - /* more_keys_for_d */ "\u0111", - /* more_keys_for_z ~ */ + /* morekeys_d */ "\u0111", + /* morekeys_z ~ */ null, null, null, null, null, null, /* ~ double_angle_quotes */ // U+20AB: "₫" DONG SIGN - /* keylabel_for_currency */ "\u20AB", + /* keyspec_currency */ "\u20AB", }; /* Language zu: Zulu */ @@ -3481,7 +3465,7 @@ public final class KeyboardTextsTable { // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON - /* more_keys_for_a */ "\u00E0,\u00E1,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101", + /* morekeys_a */ "\u00E0,\u00E1,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101", // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE @@ -3490,34 +3474,34 @@ public final class KeyboardTextsTable { // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE - /* more_keys_for_o */ "\u00F4,\u00F6,\u00F2,\u00F3,\u0153,\u00F8,\u014D,\u00F5", + /* morekeys_o */ "\u00F4,\u00F6,\u00F2,\u00F3,\u0153,\u00F8,\u014D,\u00F5", // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON - /* more_keys_for_u */ "\u00FB,\u00FC,\u00F9,\u00FA,\u016B", + /* morekeys_u */ "\u00FB,\u00FC,\u00F9,\u00FA,\u016B", // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON - /* more_keys_for_e */ "\u00E8,\u00E9,\u00EA,\u00EB,\u0113", + /* morekeys_e */ "\u00E8,\u00E9,\u00EA,\u00EB,\u0113", // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE - /* more_keys_for_i */ "\u00EE,\u00EF,\u00ED,\u012B,\u00EC", + /* morekeys_i */ "\u00EE,\u00EF,\u00ED,\u012B,\u00EC", // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA - /* more_keys_for_c */ "\u00E7", + /* morekeys_c */ "\u00E7", /* double_quotes */ null, // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE - /* more_keys_for_n */ "\u00F1", + /* morekeys_n */ "\u00F1", /* single_quotes */ null, - /* label_to_alpha_key */ null, + /* keylabel_to_alpha */ null, // U+00DF: "ß" LATIN SMALL LETTER SHARP S - /* more_keys_for_s */ "\u00DF", + /* morekeys_s */ "\u00DF", }; /* Language zz: Alphabet */ @@ -3533,7 +3517,7 @@ public final class KeyboardTextsTable { // U+0103: "ă" LATIN SMALL LETTER A WITH BREVE // U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK // U+00AA: "ª" FEMININE ORDINAL INDICATOR - /* more_keys_for_a */ "\u00E0,\u00E1,\u00E2,\u00E3,\u00E4,\u00E5,\u00E6,\u0101,\u0103,\u0105,\u00AA", + /* morekeys_a */ "\u00E0,\u00E1,\u00E2,\u00E3,\u00E4,\u00E5,\u00E6,\u0101,\u0103,\u0105,\u00AA", // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX @@ -3545,7 +3529,7 @@ public final class KeyboardTextsTable { // U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE // U+0153: "œ" LATIN SMALL LIGATURE OE // U+00BA: "º" MASCULINE ORDINAL INDICATOR - /* more_keys_for_o */ "\u00F2,\u00F3,\u00F4,\u00F5,\u00F6,\u00F8,\u014D,\u014F,\u0151,\u0153,\u00BA", + /* morekeys_o */ "\u00F2,\u00F3,\u00F4,\u00F5,\u00F6,\u00F8,\u014D,\u014F,\u0151,\u0153,\u00BA", // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX @@ -3556,7 +3540,7 @@ public final class KeyboardTextsTable { // U+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE // U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE // U+0173: "ų" LATIN SMALL LETTER U WITH OGONEK - /* more_keys_for_u */ "\u00F9,\u00FA,\u00FB,\u00FC,\u0169,\u016B,\u016D,\u016F,\u0171,\u0173", + /* morekeys_u */ "\u00F9,\u00FA,\u00FB,\u00FC,\u0169,\u016B,\u016D,\u016F,\u0171,\u0173", // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX @@ -3566,7 +3550,7 @@ public final class KeyboardTextsTable { // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK // U+011B: "ě" LATIN SMALL LETTER E WITH CARON - /* more_keys_for_e */ "\u00E8,\u00E9,\u00EA,\u00EB,\u0113,\u0115,\u0117,\u0119,\u011B", + /* morekeys_e */ "\u00E8,\u00E9,\u00EA,\u00EB,\u0113,\u0115,\u0117,\u0119,\u011B", // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX @@ -3577,13 +3561,13 @@ public final class KeyboardTextsTable { // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK // U+0131: "ı" LATIN SMALL LETTER DOTLESS I // U+0133: "ij" LATIN SMALL LIGATURE IJ - /* more_keys_for_i */ "\u00EC,\u00ED,\u00EE,\u00EF,\u0129,\u012B,\u012D,\u012F,\u0131,\u0133", + /* morekeys_i */ "\u00EC,\u00ED,\u00EE,\u00EF,\u0129,\u012B,\u012D,\u012F,\u0131,\u0133", // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE // U+0109: "ĉ" LATIN SMALL LETTER C WITH CIRCUMFLEX // U+010B: "ċ" LATIN SMALL LETTER C WITH DOT ABOVE // U+010D: "č" LATIN SMALL LETTER C WITH CARON - /* more_keys_for_c */ "\u00E7,\u0107,\u0109,\u010B,\u010D", + /* morekeys_c */ "\u00E7,\u0107,\u0109,\u010B,\u010D", /* double_quotes */ null, // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE @@ -3591,117 +3575,117 @@ public final class KeyboardTextsTable { // U+0148: "ň" LATIN SMALL LETTER N WITH CARON // U+0149: "ʼn" LATIN SMALL LETTER N PRECEDED BY APOSTROPHE // U+014B: "ŋ" LATIN SMALL LETTER ENG - /* more_keys_for_n */ "\u00F1,\u0144,\u0146,\u0148,\u0149,\u014B", + /* morekeys_n */ "\u00F1,\u0144,\u0146,\u0148,\u0149,\u014B", /* single_quotes */ null, - /* label_to_alpha_key */ null, + /* keylabel_to_alpha */ null, // U+00DF: "ß" LATIN SMALL LETTER SHARP S // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE // U+015D: "ŝ" LATIN SMALL LETTER S WITH CIRCUMFLEX // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA // U+0161: "š" LATIN SMALL LETTER S WITH CARON // U+017F: "ſ" LATIN SMALL LETTER LONG S - /* more_keys_for_s */ "\u00DF,\u015B,\u015D,\u015F,\u0161,\u017F", + /* morekeys_s */ "\u00DF,\u015B,\u015D,\u015F,\u0161,\u017F", // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE // U+0177: "ŷ" LATIN SMALL LETTER Y WITH CIRCUMFLEX // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS // U+0133: "ij" LATIN SMALL LIGATURE IJ - /* more_keys_for_y */ "\u00FD,\u0177,\u00FF,\u0133", + /* morekeys_y */ "\u00FD,\u0177,\u00FF,\u0133", // U+010F: "ď" LATIN SMALL LETTER D WITH CARON // U+0111: "đ" LATIN SMALL LETTER D WITH STROKE // U+00F0: "ð" LATIN SMALL LETTER ETH - /* more_keys_for_d */ "\u010F,\u0111,\u00F0", + /* morekeys_d */ "\u010F,\u0111,\u00F0", // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON - /* more_keys_for_z */ "\u017A,\u017C,\u017E", + /* morekeys_z */ "\u017A,\u017C,\u017E", // U+00FE: "þ" LATIN SMALL LETTER THORN // U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA // U+0165: "ť" LATIN SMALL LETTER T WITH CARON // U+0167: "ŧ" LATIN SMALL LETTER T WITH STROKE - /* more_keys_for_t */ "\u00FE,\u0163,\u0165,\u0167", + /* morekeys_t */ "\u00FE,\u0163,\u0165,\u0167", // U+013A: "ĺ" LATIN SMALL LETTER L WITH ACUTE // U+013C: "ļ" LATIN SMALL LETTER L WITH CEDILLA // U+013E: "ľ" LATIN SMALL LETTER L WITH CARON // U+0140: "ŀ" LATIN SMALL LETTER L WITH MIDDLE DOT // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE - /* more_keys_for_l */ "\u013A,\u013C,\u013E,\u0140,\u0142", + /* morekeys_l */ "\u013A,\u013C,\u013E,\u0140,\u0142", // U+011D: "ĝ" LATIN SMALL LETTER G WITH CIRCUMFLEX // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE // U+0121: "ġ" LATIN SMALL LETTER G WITH DOT ABOVE // U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA - /* more_keys_for_g */ "\u011D,\u011F,\u0121,\u0123", + /* morekeys_g */ "\u011D,\u011F,\u0121,\u0123", /* single_angle_quotes ~ */ null, null, null, - /* ~ keylabel_for_currency */ + /* ~ keyspec_currency */ // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA // U+0159: "ř" LATIN SMALL LETTER R WITH CARON - /* more_keys_for_r */ "\u0155,\u0157,\u0159", + /* morekeys_r */ "\u0155,\u0157,\u0159", // U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA // U+0138: "ĸ" LATIN SMALL LETTER KRA - /* more_keys_for_k */ "\u0137,\u0138", - /* more_keys_for_cyrillic_ie ~ */ + /* morekeys_k */ "\u0137,\u0138", + /* morekeys_cyrillic_ie ~ */ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, - /* ~ more_keys_for_question */ + null, null, null, null, null, null, + /* ~ morekeys_question */ // U+0125: "ĥ" LATIN SMALL LETTER H WITH CIRCUMFLEX - /* more_keys_for_h */ "\u0125", + /* morekeys_h */ "\u0125", // U+0175: "ŵ" LATIN SMALL LETTER W WITH CIRCUMFLEX - /* more_keys_for_w */ "\u0175", - /* more_keys_for_cyrillic_u ~ */ + /* morekeys_w */ "\u0175", + /* morekeys_east_slavic_row2_2 ~ */ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - /* ~ more_keys_for_v */ + /* ~ morekeys_v */ // U+0135: "ĵ" LATIN SMALL LETTER J WITH CIRCUMFLEX - /* more_keys_for_j */ "\u0135", + /* morekeys_j */ "\u0135", }; // TODO: Use the language + "_" + region representation for the locale string key. // Currently we are dropping the region from the key. private static final Object[] LANGUAGES_AND_TEXTS = { // "locale", TEXT_ARRAY, /* numberOfNonNullText/lengthOf_TEXT_ARRAY localeName */ - "DEFAULT", LANGUAGE_DEFAULT, /* 169/169 default */ + "DEFAULT", LANGUAGE_DEFAULT, /* 168/168 default */ "af", LANGUAGE_af, /* 7/ 12 Afrikaans */ - "ar", LANGUAGE_ar, /* 56/108 Arabic */ + "ar", LANGUAGE_ar, /* 55/107 Arabic */ "az", LANGUAGE_az_AZ, /* 8/ 17 Azerbaijani (Azerbaijan) */ "be", LANGUAGE_be_BY, /* 9/ 32 Belarusian (Belarus) */ "bg", LANGUAGE_bg, /* 2/ 10 Bulgarian */ - "ca", LANGUAGE_ca, /* 11/115 Catalan */ + "ca", LANGUAGE_ca, /* 11/114 Catalan */ "cs", LANGUAGE_cs, /* 17/ 21 Czech */ "da", LANGUAGE_da, /* 19/ 33 Danish */ - "de", LANGUAGE_de, /* 16/ 92 German */ + "de", LANGUAGE_de, /* 16/ 91 German */ "el", LANGUAGE_el, /* 1/ 10 Greek */ "en", LANGUAGE_en, /* 8/ 11 English */ - "eo", LANGUAGE_eo, /* 26/127 Esperanto */ - "es", LANGUAGE_es, /* 8/ 56 Spanish */ + "eo", LANGUAGE_eo, /* 26/126 Esperanto */ + "es", LANGUAGE_es, /* 8/ 55 Spanish */ "et", LANGUAGE_et_EE, /* 22/ 27 Estonian (Estonia) */ "eu", LANGUAGE_eu_ES, /* 7/ 8 Basque (Spain) */ - "fa", LANGUAGE_fa, /* 59/118 Persian */ + "fa", LANGUAGE_fa, /* 58/117 Persian */ "fi", LANGUAGE_fi, /* 10/ 33 Finnish */ - "fr", LANGUAGE_fr, /* 13/ 92 French */ + "fr", LANGUAGE_fr, /* 13/ 91 French */ "gl", LANGUAGE_gl_ES, /* 7/ 8 Gallegan (Spain) */ - "hi", LANGUAGE_hi, /* 24/ 55 Hindi */ + "hi", LANGUAGE_hi, /* 23/ 54 Hindi */ "hr", LANGUAGE_hr, /* 9/ 19 Croatian */ "hu", LANGUAGE_hu, /* 9/ 19 Hungarian */ - "hy", LANGUAGE_hy_AM, /* 8/121 Armenian (Armenia) */ + "hy", LANGUAGE_hy_AM, /* 8/120 Armenian (Armenia) */ "is", LANGUAGE_is, /* 10/ 15 Icelandic */ "it", LANGUAGE_it, /* 5/ 5 Italian */ - "iw", LANGUAGE_iw, /* 20/116 Hebrew */ + "iw", LANGUAGE_iw, /* 20/115 Hebrew */ "ka", LANGUAGE_ka_GE, /* 3/ 10 Georgian (Georgia) */ - "kk", LANGUAGE_kk, /* 15/113 Kazakh */ - "km", LANGUAGE_km_KH, /* 2/114 Khmer (Cambodia) */ - "ky", LANGUAGE_ky, /* 10/ 81 Kirghiz */ + "kk", LANGUAGE_kk, /* 15/112 Kazakh */ + "km", LANGUAGE_km_KH, /* 2/113 Khmer (Cambodia) */ + "ky", LANGUAGE_ky, /* 10/ 80 Kirghiz */ "lo", LANGUAGE_lo_LA, /* 2/ 20 Lao (Laos) */ "lt", LANGUAGE_lt, /* 18/ 22 Lithuanian */ "lv", LANGUAGE_lv, /* 18/ 22 Latvian */ - "mk", LANGUAGE_mk, /* 9/ 86 Macedonian */ + "mk", LANGUAGE_mk, /* 9/ 85 Macedonian */ "mn", LANGUAGE_mn_MN, /* 2/ 20 Mongolian (Mongolia) */ "my", LANGUAGE_my_MM, /* 1/ 10 Burmese (Myanmar) */ "nb", LANGUAGE_nb, /* 11/ 33 Norwegian Bokmål */ - "ne", LANGUAGE_ne_NP, /* 24/ 55 Nepali (Nepal) */ + "ne", LANGUAGE_ne_NP, /* 23/ 54 Nepali (Nepal) */ "nl", LANGUAGE_nl, /* 9/ 12 Dutch */ "pl", LANGUAGE_pl, /* 10/ 16 Polish */ "pt", LANGUAGE_pt, /* 6/ 6 Portuguese */ @@ -3710,16 +3694,16 @@ public final class KeyboardTextsTable { "ru", LANGUAGE_ru, /* 9/ 32 Russian */ "sk", LANGUAGE_sk, /* 20/ 22 Slovak */ "sl", LANGUAGE_sl, /* 8/ 19 Slovenian */ - "sr", LANGUAGE_sr, /* 11/ 86 Serbian */ + "sr", LANGUAGE_sr, /* 11/ 85 Serbian */ "sv", LANGUAGE_sv, /* 21/ 33 Swedish */ "sw", LANGUAGE_sw, /* 9/ 17 Swahili */ "th", LANGUAGE_th, /* 2/ 20 Thai */ "tl", LANGUAGE_tl, /* 7/ 8 Tagalog */ "tr", LANGUAGE_tr, /* 7/ 17 Turkish */ - "uk", LANGUAGE_uk, /* 11/ 80 Ukrainian */ + "uk", LANGUAGE_uk, /* 11/ 79 Ukrainian */ "vi", LANGUAGE_vi, /* 8/ 20 Vietnamese */ "zu", LANGUAGE_zu, /* 8/ 11 Zulu */ - "zz", LANGUAGE_zz, /* 19/110 Alphabet */ + "zz", LANGUAGE_zz, /* 19/109 Alphabet */ }; static { diff --git a/java/src/com/android/inputmethod/latin/DictionaryFacilitatorForSuggest.java b/java/src/com/android/inputmethod/latin/DictionaryFacilitatorForSuggest.java index d6178fcee..ae2d7c9c6 100644 --- a/java/src/com/android/inputmethod/latin/DictionaryFacilitatorForSuggest.java +++ b/java/src/com/android/inputmethod/latin/DictionaryFacilitatorForSuggest.java @@ -26,15 +26,14 @@ import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo; import com.android.inputmethod.latin.personalization.PersonalizationDictionary; import com.android.inputmethod.latin.personalization.PersonalizationHelper; import com.android.inputmethod.latin.personalization.UserHistoryDictionary; -import com.android.inputmethod.latin.settings.SettingsValues; import com.android.inputmethod.latin.utils.CollectionUtils; import com.android.inputmethod.latin.utils.ExecutorUtils; import com.android.inputmethod.latin.utils.LanguageModelParam; +import com.android.inputmethod.latin.utils.SuggestionResults; import java.io.File; import java.util.ArrayList; import java.util.HashMap; -import java.util.HashSet; import java.util.Locale; import java.util.Map; import java.util.Set; @@ -50,197 +49,314 @@ public class DictionaryFacilitatorForSuggest { // dictionary. private static final int CAPITALIZED_FORM_MAX_PROBABILITY_FOR_INSERT = 140; - private final Context mContext; - public final Locale mLocale; + private Dictionaries mDictionaries = new Dictionaries(); + private volatile CountDownLatch mLatchForWaitingLoadingMainDictionary = new CountDownLatch(0); + // To synchronize assigning mDictionaries to ensure closing dictionaries. + private Object mLock = new Object(); - private final ConcurrentHashMap<String, Dictionary> mDictionaries = - CollectionUtils.newConcurrentHashMap(); + /** + * Class contains dictionaries for a locale. + */ + private static class Dictionaries { + public final Locale mLocale; + public final ConcurrentHashMap<String, Dictionary> mDictMap = + CollectionUtils.newConcurrentHashMap(); + // Main dictionary will be asynchronously loaded. + public Dictionary mMainDictionary; + public final ContactsBinaryDictionary mContactsDictionary; + public final UserBinaryDictionary mUserDictionary; + public final UserHistoryDictionary mUserHistoryDictionary; + public final PersonalizationDictionary mPersonalizationDictionary; + + public Dictionaries() { + mLocale = null; + mMainDictionary = null; + mContactsDictionary = null; + mUserDictionary = null; + mUserHistoryDictionary = null; + mPersonalizationDictionary = null; + } - private Dictionary mMainDictionary; - private ContactsBinaryDictionary mContactsDictionary; - private UserBinaryDictionary mUserDictionary; - private UserHistoryDictionary mUserHistoryDictionary; - private PersonalizationDictionary mPersonalizationDictionary; + public Dictionaries(final Locale locale, final Dictionary mainDict, + final ContactsBinaryDictionary contactsDict, final UserBinaryDictionary userDict, + final UserHistoryDictionary userHistoryDict, + final PersonalizationDictionary personalizationDict) { + mLocale = locale; + setMainDict(mainDict); + mContactsDictionary = contactsDict; + if (mContactsDictionary != null) { + mDictMap.put(Dictionary.TYPE_CONTACTS, mContactsDictionary); + } + mUserDictionary = userDict; + if (mUserDictionary != null) { + mDictMap.put(Dictionary.TYPE_USER, mUserDictionary); + } + mUserHistoryDictionary = userHistoryDict; + if (mUserHistoryDictionary != null) { + mDictMap.put(Dictionary.TYPE_USER_HISTORY, mUserHistoryDictionary); + } + mPersonalizationDictionary = personalizationDict; + if (mPersonalizationDictionary != null) { + mDictMap.put(Dictionary.TYPE_PERSONALIZATION, mPersonalizationDictionary); + } + } - private final CountDownLatch mLatchForWaitingLoadingMainDictionary; + public void setMainDict(final Dictionary mainDict) { + mMainDictionary = mainDict; + // Close old dictionary if exists. Main dictionary can be assigned multiple times. + final Dictionary oldDict; + if (mMainDictionary != null) { + oldDict = mDictMap.put(Dictionary.TYPE_MAIN, mMainDictionary); + } else { + oldDict = mDictMap.remove(Dictionary.TYPE_MAIN); + } + if (oldDict != null && mMainDictionary != oldDict) { + oldDict.close(); + } + } + + public boolean hasMainDict() { + return mMainDictionary != null; + } + + public boolean hasContactsDict() { + return mContactsDictionary != null; + } + + public boolean hasUserDict() { + return mUserDictionary != null; + } + + public boolean hasUserHistoryDict() { + return mUserHistoryDictionary != null; + } + + public boolean hasPersonalizationDict() { + return mPersonalizationDictionary != null; + } + } public interface DictionaryInitializationListener { public void onUpdateMainDictionaryAvailability(boolean isMainDictionaryAvailable); } - /** - * Creates instance for initialization or when the locale is changed. - * - * @param context the context - * @param locale the locale - * @param settingsValues current settings values to control what dictionaries should be used - * @param listener the listener - * @param oldDictionaryFacilitator the instance having old dictionaries. This is null when the - * instance is initially created. - */ - public DictionaryFacilitatorForSuggest(final Context context, final Locale locale, - final SettingsValues settingsValues, final DictionaryInitializationListener listener, - final DictionaryFacilitatorForSuggest oldDictionaryFacilitator) { - mContext = context; - mLocale = locale; - mLatchForWaitingLoadingMainDictionary = new CountDownLatch(1); - loadMainDict(context, locale, listener); - setUserDictionary(new UserBinaryDictionary(context, locale)); - resetAdditionalDictionaries(oldDictionaryFacilitator, settingsValues); + public DictionaryFacilitatorForSuggest() {} + + public Locale getLocale() { + return mDictionaries.mLocale; } - /** - * Creates instance for reloading the main dict. - * - * @param listener the listener - * @param oldDictionaryFacilitator the instance having old dictionaries. This must not be null. - */ - public DictionaryFacilitatorForSuggest(final DictionaryInitializationListener listener, - final DictionaryFacilitatorForSuggest oldDictionaryFacilitator) { - mContext = oldDictionaryFacilitator.mContext; - mLocale = oldDictionaryFacilitator.mLocale; - mLatchForWaitingLoadingMainDictionary = new CountDownLatch(1); - loadMainDict(mContext, mLocale, listener); - // Transfer user dictionary. - setUserDictionary(oldDictionaryFacilitator.mUserDictionary); - oldDictionaryFacilitator.removeDictionary(Dictionary.TYPE_USER); - // Transfer contacts dictionary. - setContactsDictionary(oldDictionaryFacilitator.mContactsDictionary); - oldDictionaryFacilitator.removeDictionary(Dictionary.TYPE_CONTACTS); - // Transfer user history dictionary. - setUserHistoryDictionary(oldDictionaryFacilitator.mUserHistoryDictionary); - oldDictionaryFacilitator.removeDictionary(Dictionary.TYPE_USER_HISTORY); - // Transfer personalization dictionary. - setPersonalizationDictionary(oldDictionaryFacilitator.mPersonalizationDictionary); - oldDictionaryFacilitator.removeDictionary(Dictionary.TYPE_PERSONALIZATION); + public void resetDictionaries(final Context context, final Locale newLocale, + final boolean useContactsDict, final boolean usePersonalizedDicts, + final boolean forceReloadMainDictionary, + final DictionaryInitializationListener listener) { + final boolean localeHasBeenChanged = !newLocale.equals(mDictionaries.mLocale); + // We always try to have the main dictionary. Other dictionaries can be unused. + final boolean reloadMainDictionary = localeHasBeenChanged || forceReloadMainDictionary; + final boolean closeContactsDictionary = localeHasBeenChanged || !useContactsDict; + final boolean closeUserDictionary = localeHasBeenChanged; + final boolean closeUserHistoryDictionary = localeHasBeenChanged || !usePersonalizedDicts; + final boolean closePersonalizationDictionary = + localeHasBeenChanged || !usePersonalizedDicts; + + final Dictionary newMainDict; + if (reloadMainDictionary) { + // The main dictionary will be asynchronously loaded. + newMainDict = null; + } else { + newMainDict = mDictionaries.mMainDictionary; + } + + // Open or move contacts dictionary. + final ContactsBinaryDictionary newContactsDict; + if (!closeContactsDictionary && mDictionaries.hasContactsDict()) { + newContactsDict = mDictionaries.mContactsDictionary; + } else if (useContactsDict) { + newContactsDict = new ContactsBinaryDictionary(context, newLocale); + } else { + newContactsDict = null; + } + + // Open or move user dictionary. + final UserBinaryDictionary newUserDictionary; + if (!closeUserDictionary && mDictionaries.hasUserDict()) { + newUserDictionary = mDictionaries.mUserDictionary; + } else { + newUserDictionary = new UserBinaryDictionary(context, newLocale); + } + + // Open or move user history dictionary. + final UserHistoryDictionary newUserHistoryDict; + if (!closeUserHistoryDictionary && mDictionaries.hasUserHistoryDict()) { + newUserHistoryDict = mDictionaries.mUserHistoryDictionary; + } else if (usePersonalizedDicts) { + newUserHistoryDict = PersonalizationHelper.getUserHistoryDictionary(context, newLocale); + } else { + newUserHistoryDict = null; + } + + // Open or move personalization dictionary. + final PersonalizationDictionary newPersonalizationDict; + if (!closePersonalizationDictionary && mDictionaries.hasPersonalizationDict()) { + newPersonalizationDict = mDictionaries.mPersonalizationDictionary; + } else if (usePersonalizedDicts) { + newPersonalizationDict = + PersonalizationHelper.getPersonalizationDictionary(context, newLocale); + } else { + newPersonalizationDict = null; + } + + // Replace Dictionaries. + final Dictionaries newDictionaries = new Dictionaries(newLocale, newMainDict, + newContactsDict, newUserDictionary, newUserHistoryDict, newPersonalizationDict); + if (listener != null) { + listener.onUpdateMainDictionaryAvailability(newDictionaries.hasMainDict()); + } + final Dictionaries oldDictionaries; + synchronized (mLock) { + oldDictionaries = mDictionaries; + mDictionaries = newDictionaries; + if (reloadMainDictionary) { + asyncReloadMainDictionary(context, newLocale, listener); + } + } + + // Clean up old dictionaries. + oldDictionaries.mDictMap.clear(); + if (reloadMainDictionary && oldDictionaries.hasMainDict()) { + oldDictionaries.mMainDictionary.close(); + } + if (closeContactsDictionary && oldDictionaries.hasContactsDict()) { + oldDictionaries.mContactsDictionary.close(); + } + if (closeUserDictionary && oldDictionaries.hasUserDict()) { + oldDictionaries.mUserDictionary.close(); + } + if (closeUserHistoryDictionary && oldDictionaries.hasUserHistoryDict()) { + oldDictionaries.mUserHistoryDictionary.close(); + } + if (closePersonalizationDictionary && oldDictionaries.hasPersonalizationDict()) { + oldDictionaries.mPersonalizationDictionary.close(); + } } - /** - * Creates instance for when the settings values have been changed. - * - * @param settingsValues the new settings values - * @param oldDictionaryFacilitator the instance having old dictionaries. This must not be null. - */ - // - public DictionaryFacilitatorForSuggest(final SettingsValues settingsValues, - final DictionaryFacilitatorForSuggest oldDictionaryFacilitator) { - mContext = oldDictionaryFacilitator.mContext; - mLocale = oldDictionaryFacilitator.mLocale; - mLatchForWaitingLoadingMainDictionary = new CountDownLatch(0); - // Transfer main dictionary. - setMainDictionary(oldDictionaryFacilitator.mMainDictionary); - oldDictionaryFacilitator.removeDictionary(Dictionary.TYPE_MAIN); - // Transfer user dictionary. - setUserDictionary(oldDictionaryFacilitator.mUserDictionary); - oldDictionaryFacilitator.removeDictionary(Dictionary.TYPE_USER); - // Transfer or create additional dictionaries depending on the settings values. - resetAdditionalDictionaries(oldDictionaryFacilitator, settingsValues); + private void asyncReloadMainDictionary(final Context context, final Locale locale, + final DictionaryInitializationListener listener) { + final CountDownLatch latchForWaitingLoadingMainDictionary = new CountDownLatch(1); + mLatchForWaitingLoadingMainDictionary = latchForWaitingLoadingMainDictionary; + ExecutorUtils.getExecutor("InitializeBinaryDictionary").execute(new Runnable() { + @Override + public void run() { + final Dictionary mainDict = + DictionaryFactory.createMainDictionaryFromManager(context, locale); + synchronized (mLock) { + if (locale.equals(mDictionaries.mLocale)) { + mDictionaries.setMainDict(mainDict); + } else { + // Dictionary facilitator has been reset for another locale. + mainDict.close(); + } + } + if (listener != null) { + listener.onUpdateMainDictionaryAvailability(mDictionaries.hasMainDict()); + } + latchForWaitingLoadingMainDictionary.countDown(); + } + }); } @UsedForTesting - public DictionaryFacilitatorForSuggest(final Context context, final Locale locale, + public void resetDictionariesForTesting(final Context context, final Locale locale, final ArrayList<String> dictionaryTypes, final HashMap<String, File> dictionaryFiles, final Map<String, Map<String, String>> additionalDictAttributes) { - mContext = context; - mLocale = locale; - mLatchForWaitingLoadingMainDictionary = new CountDownLatch(0); + Dictionary mainDictionary = null; + ContactsBinaryDictionary contactsDictionary = null; + UserBinaryDictionary userDictionary = null; + UserHistoryDictionary userHistoryDictionary = null; + PersonalizationDictionary personalizationDictionary = null; + for (final String dictType : dictionaryTypes) { if (dictType.equals(Dictionary.TYPE_MAIN)) { - final DictionaryCollection mainDictionary = - DictionaryFactory.createMainDictionaryFromManager(context, locale); - setMainDictionary(mainDictionary); + mainDictionary = DictionaryFactory.createMainDictionaryFromManager(context, locale); } else if (dictType.equals(Dictionary.TYPE_USER_HISTORY)) { - final UserHistoryDictionary userHistoryDictionary = + userHistoryDictionary = PersonalizationHelper.getUserHistoryDictionary(context, locale); // Staring with an empty user history dictionary for testing. // Testing program may populate this dictionary before actual testing. userHistoryDictionary.reloadDictionaryIfRequired(); userHistoryDictionary.waitAllTasksForTests(); - setUserHistoryDictionary(userHistoryDictionary); if (additionalDictAttributes.containsKey(dictType)) { userHistoryDictionary.clearAndFlushDictionaryWithAdditionalAttributes( additionalDictAttributes.get(dictType)); } } else if (dictType.equals(Dictionary.TYPE_PERSONALIZATION)) { - final PersonalizationDictionary personalizationDictionary = + personalizationDictionary = PersonalizationHelper.getPersonalizationDictionary(context, locale); // Staring with an empty personalization dictionary for testing. // Testing program may populate this dictionary before actual testing. personalizationDictionary.reloadDictionaryIfRequired(); personalizationDictionary.waitAllTasksForTests(); - setPersonalizationDictionary(personalizationDictionary); if (additionalDictAttributes.containsKey(dictType)) { personalizationDictionary.clearAndFlushDictionaryWithAdditionalAttributes( additionalDictAttributes.get(dictType)); } } else if (dictType.equals(Dictionary.TYPE_USER)) { final File file = dictionaryFiles.get(dictType); - final UserBinaryDictionary userDictionary = new UserBinaryDictionary( - context, locale, file); + userDictionary = new UserBinaryDictionary(context, locale, file); userDictionary.reloadDictionaryIfRequired(); userDictionary.waitAllTasksForTests(); - setUserDictionary(userDictionary); } else if (dictType.equals(Dictionary.TYPE_CONTACTS)) { final File file = dictionaryFiles.get(dictType); - final ContactsBinaryDictionary contactsDictionary = new ContactsBinaryDictionary( - context, locale, file); + contactsDictionary = new ContactsBinaryDictionary(context, locale, file); contactsDictionary.reloadDictionaryIfRequired(); contactsDictionary.waitAllTasksForTests(); - setContactsDictionary(contactsDictionary); } else { throw new RuntimeException("Unknown dictionary type: " + dictType); } } + mDictionaries = new Dictionaries(locale, mainDictionary, contactsDictionary, + userDictionary, userHistoryDictionary, personalizationDictionary); } - public boolean needsToBeRecreated(final Locale newLocale, - final SettingsValues newSettingsValues) { - return !mLocale.equals(newLocale) - || (newSettingsValues.mUseContactsDict != (mContactsDictionary != null)) - || (newSettingsValues.mUsePersonalizedDicts != (mUserHistoryDictionary != null)) - || (newSettingsValues.mUsePersonalizedDicts != hasPersonalizationDictionary()); - } - - public void close() { - final HashSet<Dictionary> dictionaries = CollectionUtils.newHashSet(); - dictionaries.addAll(mDictionaries.values()); - for (final Dictionary dictionary : dictionaries) { - dictionary.close(); + public void closeDictionaries() { + final Dictionaries dictionaries; + synchronized (mLock) { + dictionaries = mDictionaries; + mDictionaries = new Dictionaries(); } - } - - private void loadMainDict(final Context context, final Locale locale, - final DictionaryInitializationListener listener) { - mMainDictionary = null; - if (listener != null) { - listener.onUpdateMainDictionaryAvailability(hasMainDictionary()); + if (dictionaries.hasMainDict()) { + dictionaries.mMainDictionary.close(); + } + if (dictionaries.hasContactsDict()) { + dictionaries.mContactsDictionary.close(); + } + if (dictionaries.hasUserDict()) { + dictionaries.mUserDictionary.close(); + } + if (dictionaries.hasUserHistoryDict()) { + dictionaries.mUserHistoryDictionary.close(); + } + if (dictionaries.hasPersonalizationDict()) { + dictionaries.mPersonalizationDictionary.close(); } - ExecutorUtils.getExecutor("InitializeBinaryDictionary").execute(new Runnable() { - public void run() { - final DictionaryCollection newMainDict = - DictionaryFactory.createMainDictionaryFromManager(context, locale); - setMainDictionary(newMainDict); - if (listener != null) { - listener.onUpdateMainDictionaryAvailability(hasMainDictionary()); - } - mLatchForWaitingLoadingMainDictionary.countDown(); - } - }); } // The main dictionary could have been loaded asynchronously. Don't cache the return value // of this method. - public boolean hasMainDictionary() { - return null != mMainDictionary && mMainDictionary.isInitialized(); + public boolean hasInitializedMainDictionary() { + final Dictionaries dictionaries = mDictionaries; + return dictionaries.hasMainDict() && dictionaries.mMainDictionary.isInitialized(); } public boolean hasPersonalizationDictionary() { - return null != mPersonalizationDictionary; + return mDictionaries.hasPersonalizationDict(); } public void flushPersonalizationDictionary() { - if (hasPersonalizationDictionary()) { - mPersonalizationDictionary.flush(); + final PersonalizationDictionary personalizationDict = + mDictionaries.mPersonalizationDictionary; + if (personalizationDict != null) { + personalizationDict.flush(); } } @@ -253,177 +369,48 @@ public class DictionaryFacilitatorForSuggest { public void waitForLoadingDictionariesForTesting(final long timeout, final TimeUnit unit) throws InterruptedException { waitForLoadingMainDictionary(timeout, unit); - if (mContactsDictionary != null) { - mContactsDictionary.waitAllTasksForTests(); + final Dictionaries dictionaries = mDictionaries; + if (dictionaries.hasContactsDict()) { + dictionaries.mContactsDictionary.waitAllTasksForTests(); } - if (mUserDictionary != null) { - mUserDictionary.waitAllTasksForTests(); + if (dictionaries.hasUserDict()) { + dictionaries.mUserDictionary.waitAllTasksForTests(); } - if (mUserHistoryDictionary != null) { - mUserHistoryDictionary.waitAllTasksForTests(); + if (dictionaries.hasUserHistoryDict()) { + dictionaries.mUserHistoryDictionary.waitAllTasksForTests(); } - if (mPersonalizationDictionary != null) { - mPersonalizationDictionary.waitAllTasksForTests(); + if (dictionaries.hasPersonalizationDict()) { + dictionaries.mPersonalizationDictionary.waitAllTasksForTests(); } } - private void setMainDictionary(final Dictionary mainDictionary) { - mMainDictionary = mainDictionary; - addOrReplaceDictionary(Dictionary.TYPE_MAIN, mainDictionary); - } - - /** - * Sets an optional user dictionary resource to be loaded. The user dictionary is consulted - * before the main dictionary, if set. This refers to the system-managed user dictionary. - */ - private void setUserDictionary(final UserBinaryDictionary userDictionary) { - mUserDictionary = userDictionary; - addOrReplaceDictionary(Dictionary.TYPE_USER, userDictionary); - } - - /** - * Sets an optional contacts dictionary resource to be loaded. It is also possible to remove - * the contacts dictionary by passing null to this method. In this case no contacts dictionary - * won't be used. - */ - private void setContactsDictionary(final ContactsBinaryDictionary contactsDictionary) { - mContactsDictionary = contactsDictionary; - addOrReplaceDictionary(Dictionary.TYPE_CONTACTS, contactsDictionary); - } - - private void setUserHistoryDictionary(final UserHistoryDictionary userHistoryDictionary) { - mUserHistoryDictionary = userHistoryDictionary; - addOrReplaceDictionary(Dictionary.TYPE_USER_HISTORY, userHistoryDictionary); - } - - private void setPersonalizationDictionary( - final PersonalizationDictionary personalizationDictionary) { - mPersonalizationDictionary = personalizationDictionary; - addOrReplaceDictionary(Dictionary.TYPE_PERSONALIZATION, personalizationDictionary); - } - - /** - * Reset dictionaries that can be turned off according to the user settings. - * - * @param oldDictionaryFacilitator the instance having old dictionaries - * @param settingsValues current SettingsValues - */ - private void resetAdditionalDictionaries( - final DictionaryFacilitatorForSuggest oldDictionaryFacilitator, - final SettingsValues settingsValues) { - // Contacts dictionary - resetContactsDictionary(null != oldDictionaryFacilitator ? - oldDictionaryFacilitator.mContactsDictionary : null, settingsValues); - // User history dictionary & Personalization dictionary - resetPersonalizedDictionaries(oldDictionaryFacilitator, settingsValues); - } - - /** - * Set the user history dictionary and personalization dictionary according to the user - * settings. - * - * @param oldDictionaryFacilitator the instance that has been used - * @param settingsValues current settingsValues - */ - // TODO: Consolidate resetPersonalizedDictionaries() and resetContactsDictionary(). Call up the - // new method for each dictionary. - private void resetPersonalizedDictionaries( - final DictionaryFacilitatorForSuggest oldDictionaryFacilitator, - final SettingsValues settingsValues) { - final boolean shouldSetDictionaries = settingsValues.mUsePersonalizedDicts; - - final UserHistoryDictionary oldUserHistoryDictionary = (null == oldDictionaryFacilitator) ? - null : oldDictionaryFacilitator.mUserHistoryDictionary; - final PersonalizationDictionary oldPersonalizationDictionary = - (null == oldDictionaryFacilitator) ? null : - oldDictionaryFacilitator.mPersonalizationDictionary; - final UserHistoryDictionary userHistoryDictionaryToUse; - final PersonalizationDictionary personalizationDictionaryToUse; - if (!shouldSetDictionaries) { - userHistoryDictionaryToUse = null; - personalizationDictionaryToUse = null; - } else { - if (null != oldUserHistoryDictionary - && oldUserHistoryDictionary.mLocale.equals(mLocale)) { - userHistoryDictionaryToUse = oldUserHistoryDictionary; - } else { - userHistoryDictionaryToUse = - PersonalizationHelper.getUserHistoryDictionary(mContext, mLocale); - } - if (null != oldPersonalizationDictionary - && oldPersonalizationDictionary.mLocale.equals(mLocale)) { - personalizationDictionaryToUse = oldPersonalizationDictionary; - } else { - personalizationDictionaryToUse = - PersonalizationHelper.getPersonalizationDictionary(mContext, mLocale); - } - } - setUserHistoryDictionary(userHistoryDictionaryToUse); - setPersonalizationDictionary(personalizationDictionaryToUse); - } - - /** - * Set the contacts dictionary according to the user settings. - * - * This method takes an optional contacts dictionary to use when the locale hasn't changed - * since the contacts dictionary can be opened or closed as necessary depending on the settings. - * - * @param oldContactsDictionary an optional dictionary to use, or null - * @param settingsValues current settingsValues - */ - private void resetContactsDictionary(final ContactsBinaryDictionary oldContactsDictionary, - final SettingsValues settingsValues) { - final boolean shouldSetDictionary = settingsValues.mUseContactsDict; - final ContactsBinaryDictionary dictionaryToUse; - if (!shouldSetDictionary) { - // Make sure the dictionary is closed. If it is already closed, this is a no-op, - // so it's safe to call it anyways. - if (null != oldContactsDictionary) oldContactsDictionary.close(); - dictionaryToUse = null; - } else { - if (null != oldContactsDictionary) { - if (!oldContactsDictionary.mLocale.equals(mLocale)) { - // If the locale has changed then recreate the contacts dictionary. This - // allows locale dependent rules for handling bigram name predictions. - oldContactsDictionary.close(); - dictionaryToUse = new ContactsBinaryDictionary(mContext, mLocale); - } else { - // Make sure the old contacts dictionary is opened. If it is already open, - // this is a no-op, so it's safe to call it anyways. - oldContactsDictionary.reopen(mContext); - dictionaryToUse = oldContactsDictionary; - } - } else { - dictionaryToUse = new ContactsBinaryDictionary(mContext, mLocale); - } - } - setContactsDictionary(dictionaryToUse); - } - public boolean isUserDictionaryEnabled() { - if (mUserDictionary == null) { + final UserBinaryDictionary userDictionary = mDictionaries.mUserDictionary; + if (userDictionary == null) { return false; } - return mUserDictionary.mEnabled; + return userDictionary.mEnabled; } public void addWordToUserDictionary(String word) { - if (mUserDictionary == null) { + final UserBinaryDictionary userDictionary = mDictionaries.mUserDictionary; + if (userDictionary == null) { return; } - mUserDictionary.addWordToUserDictionary(word); + userDictionary.addWordToUserDictionary(word); } public void addToUserHistory(final String suggestion, final boolean wasAutoCapitalized, final String previousWord, final int timeStampInSeconds) { - if (mUserHistoryDictionary == null) { + final Dictionaries dictionaries = mDictionaries; + if (!dictionaries.hasUserHistoryDict()) { return; } final int maxFreq = getMaxFrequency(suggestion); if (maxFreq == 0) { return; } - final String suggestionLowerCase = suggestion.toLowerCase(mLocale); + final String suggestionLowerCase = suggestion.toLowerCase(dictionaries.mLocale); final String secondWord; if (wasAutoCapitalized) { secondWord = suggestionLowerCase; @@ -432,11 +419,11 @@ public class DictionaryFacilitatorForSuggest { // History dictionary in order to avoid suggesting them until the dictionary // consolidation is done. // TODO: Remove this hack when ready. - final int lowerCasefreqInMainDict = mMainDictionary != null ? - mMainDictionary.getFrequency(suggestionLowerCase) : + final int lowerCaseFreqInMainDict = dictionaries.hasMainDict() ? + dictionaries.mMainDictionary.getFrequency(suggestionLowerCase) : Dictionary.NOT_A_PROBABILITY; - if (maxFreq < lowerCasefreqInMainDict - && lowerCasefreqInMainDict >= CAPITALIZED_FORM_MAX_PROBABILITY_FOR_INSERT) { + if (maxFreq < lowerCaseFreqInMainDict + && lowerCaseFreqInMainDict >= CAPITALIZED_FORM_MAX_PROBABILITY_FOR_INSERT) { // Use lower cased word as the word can be a distracter of the popular word. secondWord = suggestionLowerCase; } else { @@ -446,54 +433,59 @@ public class DictionaryFacilitatorForSuggest { // We demote unrecognized words (frequency < 0, below) by specifying them as "invalid". // We don't add words with 0-frequency (assuming they would be profanity etc.). final boolean isValid = maxFreq > 0; - mUserHistoryDictionary.addToDictionary( + dictionaries.mUserHistoryDictionary.addToDictionary( previousWord, secondWord, isValid, timeStampInSeconds); } public void cancelAddingUserHistory(final String previousWord, final String committedWord) { - if (mUserHistoryDictionary != null) { - mUserHistoryDictionary.cancelAddingUserHistory(previousWord, committedWord); + final UserHistoryDictionary userHistoryDictionary = mDictionaries.mUserHistoryDictionary; + if (userHistoryDictionary != null) { + userHistoryDictionary.cancelAddingUserHistory(previousWord, committedWord); } } // TODO: Revise the way to fusion suggestion results. - public void getSuggestions(final WordComposer composer, + public SuggestionResults getSuggestionResults(final WordComposer composer, final String prevWord, final ProximityInfo proximityInfo, final boolean blockOffensiveWords, final int[] additionalFeaturesOptions, - final int sessionId, final Set<SuggestedWordInfo> suggestionSet, - final ArrayList<SuggestedWordInfo> rawSuggestions) { - for (final String key : mDictionaries.keySet()) { - final Dictionary dictionary = mDictionaries.get(key); + final int sessionId, final ArrayList<SuggestedWordInfo> rawSuggestions) { + final Dictionaries dictionaries = mDictionaries; + final Map<String, Dictionary> dictMap = dictionaries.mDictMap; + final SuggestionResults suggestionResults = + new SuggestionResults(dictionaries.mLocale, SuggestedWords.MAX_SUGGESTIONS); + for (final Dictionary dictionary : dictMap.values()) { if (null == dictionary) continue; final ArrayList<SuggestedWordInfo> dictionarySuggestions = dictionary.getSuggestionsWithSessionId(composer, prevWord, proximityInfo, blockOffensiveWords, additionalFeaturesOptions, sessionId); if (null == dictionarySuggestions) continue; - suggestionSet.addAll(dictionarySuggestions); + suggestionResults.addAll(dictionarySuggestions); if (null != rawSuggestions) { rawSuggestions.addAll(dictionarySuggestions); } } + return suggestionResults; } public boolean isValidMainDictWord(final String word) { - if (TextUtils.isEmpty(word) || !hasMainDictionary()) { + final Dictionaries dictionaries = mDictionaries; + if (TextUtils.isEmpty(word) || !dictionaries.hasMainDict()) { return false; } - return mMainDictionary.isValidWord(word); + return dictionaries.mMainDictionary.isValidWord(word); } public boolean isValidWord(final String word, final boolean ignoreCase) { if (TextUtils.isEmpty(word)) { return false; } - final String lowerCasedWord = word.toLowerCase(mLocale); - for (final String key : mDictionaries.keySet()) { - final Dictionary dictionary = mDictionaries.get(key); - // It's unclear how realistically 'dictionary' can be null, but the monkey is somehow - // managing to get null in here. Presumably the language is changing to a language with - // no main dictionary and the monkey manages to type a whole word before the thread - // that reads the dictionary is started or something? + final Dictionaries dictionaries = mDictionaries; + if (dictionaries.mLocale == null) { + return false; + } + final String lowerCasedWord = word.toLowerCase(dictionaries.mLocale); + final Map<String, Dictionary> dictMap = dictionaries.mDictMap; + for (final Dictionary dictionary : dictMap.values()) { // Ideally the passed map would come out of a {@link java.util.concurrent.Future} and // would be immutable once it's finished initializing, but concretely a null test is // probably good enough for the time being. @@ -511,9 +503,8 @@ public class DictionaryFacilitatorForSuggest { return Dictionary.NOT_A_PROBABILITY; } int maxFreq = -1; - for (final String key : mDictionaries.keySet()) { - final Dictionary dictionary = mDictionaries.get(key); - if (null == dictionary) continue; + final Map<String, Dictionary> dictMap = mDictionaries.mDictMap; + for (final Dictionary dictionary : dictMap.values()) { final int tempFreq = dictionary.getFrequency(word); if (tempFreq >= maxFreq) { maxFreq = tempFreq; @@ -522,61 +513,50 @@ public class DictionaryFacilitatorForSuggest { return maxFreq; } - private void removeDictionary(final String key) { - mDictionaries.remove(key); - } - - private void addOrReplaceDictionary(final String key, final Dictionary dict) { - final Dictionary oldDict; - if (dict == null) { - oldDict = mDictionaries.remove(key); - } else { - oldDict = mDictionaries.put(key, dict); - } - if (oldDict != null && dict != oldDict) { - oldDict.close(); - } - } public void clearUserHistoryDictionary() { - if (mUserHistoryDictionary == null) { + final UserHistoryDictionary userHistoryDict = mDictionaries.mUserHistoryDictionary; + if (userHistoryDict == null) { return; } - mUserHistoryDictionary.clearAndFlushDictionary(); + userHistoryDict.clearAndFlushDictionary(); } // This method gets called only when the IME receives a notification to remove the // personalization dictionary. public void clearPersonalizationDictionary() { - if (!hasPersonalizationDictionary()) { + final PersonalizationDictionary personalizationDict = + mDictionaries.mPersonalizationDictionary; + if (personalizationDict == null) { return; } - mPersonalizationDictionary.clearAndFlushDictionary(); + personalizationDict.clearAndFlushDictionary(); } public void addMultipleDictionaryEntriesToPersonalizationDictionary( final ArrayList<LanguageModelParam> languageModelParams, final ExpandableBinaryDictionary.AddMultipleDictionaryEntriesCallback callback) { - if (!hasPersonalizationDictionary()) { + final PersonalizationDictionary personalizationDict = + mDictionaries.mPersonalizationDictionary; + if (personalizationDict == null) { if (callback != null) { callback.onFinished(); } return; } - mPersonalizationDictionary.addMultipleDictionaryEntriesToDictionary(languageModelParams, - callback); + personalizationDict.addMultipleDictionaryEntriesToDictionary(languageModelParams, callback); } public void dumpDictionaryForDebug(final String dictName) { final ExpandableBinaryDictionary dictToDump; if (dictName.equals(Dictionary.TYPE_CONTACTS)) { - dictToDump = mContactsDictionary; + dictToDump = mDictionaries.mContactsDictionary; } else if (dictName.equals(Dictionary.TYPE_USER)) { - dictToDump = mUserDictionary; + dictToDump = mDictionaries.mUserDictionary; } else if (dictName.equals(Dictionary.TYPE_USER_HISTORY)) { - dictToDump = mUserHistoryDictionary; + dictToDump = mDictionaries.mUserHistoryDictionary; } else if (dictName.equals(Dictionary.TYPE_PERSONALIZATION)) { - dictToDump = mPersonalizationDictionary; + dictToDump = mDictionaries.mPersonalizationDictionary; } else { dictToDump = null; } diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java index 38e386493..0c0be82df 100644 --- a/java/src/com/android/inputmethod/latin/LatinIME.java +++ b/java/src/com/android/inputmethod/latin/LatinIME.java @@ -215,7 +215,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen false /* includeResumedWordInSuggestions */); break; case MSG_REOPEN_DICTIONARIES: - latinIme.initSuggest(); + latinIme.resetSuggest(); // In theory we could call latinIme.updateSuggestionStrip() right away, but // in the practice, the dictionary is not finished opening yet so we wouldn't // get any suggestions. Wait one frame. @@ -478,10 +478,12 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen // TODO: Resolve mutual dependencies of {@link #loadSettings()} and {@link #initSuggest()}. loadSettings(); - initSuggest(); + resetSuggest(); if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) { ResearchLogger.getInstance().init(this, mKeyboardSwitcher); + ResearchLogger.getInstance().initDictionary( + mInputLogic.mSuggest.mDictionaryFacilitator); } // Register to receive ringer mode change and network state change. @@ -520,31 +522,15 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen // This method is called on startup and language switch, before the new layout has // been displayed. Opening dictionaries never affects responsivity as dictionaries are // asynchronously loaded. - initOrResetSuggestForSettingsValues(mInputLogic.mSuggest, locale, currentSettingsValues); - } - - private void initOrResetSuggestForSettingsValues(final Suggest oldSuggest, - final Locale locale, final SettingsValues settingsValues) { - if (!mHandler.hasPendingReopenDictionaries() && oldSuggest != null) { - // May need to reset dictionaries depending on the user settings. - final DictionaryFacilitatorForSuggest oldDictionaryFacilitator = - oldSuggest.mDictionaryFacilitator; - if (!oldDictionaryFacilitator.needsToBeRecreated(locale, settingsValues)) { - // Continue to use the same dictionary facilitator if no configuration has changed. - refreshPersonalizationDictionarySession(); - return; - } - final DictionaryFacilitatorForSuggest dictionaryFacilitator = - new DictionaryFacilitatorForSuggest(settingsValues, oldDictionaryFacilitator); - // Create Suggest instance with the new dictionary facilitator. - replaceSuggest(new Suggest(oldSuggest, dictionaryFacilitator)); - } else if (oldSuggest == null) { - initSuggest(); + if (!mHandler.hasPendingReopenDictionaries()) { + resetSuggestForLocale(locale); } + refreshPersonalizationDictionarySession(); } private void refreshPersonalizationDictionarySession() { - final Suggest suggest = mInputLogic.mSuggest; + final DictionaryFacilitatorForSuggest dictionaryFacilitator = + mInputLogic.mSuggest.mDictionaryFacilitator; final boolean shouldKeepUserHistoryDictionaries; final boolean shouldKeepPersonalizationDictionaries; if (mSettings.getCurrent().mUsePersonalizedDicts) { @@ -559,17 +545,13 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen if (!shouldKeepUserHistoryDictionaries) { // Remove user history dictionaries. PersonalizationHelper.removeAllUserHistoryDictionaries(this); - if (suggest != null) { - suggest.mDictionaryFacilitator.clearUserHistoryDictionary(); - } + dictionaryFacilitator.clearUserHistoryDictionary(); } if (!shouldKeepPersonalizationDictionaries) { // Remove personalization dictionaries. PersonalizationHelper.removeAllPersonalizationDictionaries(this); PersonalizationDictionarySessionRegistrar.resetAll(this); } else { - final DictionaryFacilitatorForSuggest dictionaryFacilitator = - (suggest == null) ? null : suggest.mDictionaryFacilitator; PersonalizationDictionarySessionRegistrar.init(this, dictionaryFacilitator); } } @@ -583,7 +565,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen } } - private void initSuggest() { + private void resetSuggest() { final Locale switcherSubtypeLocale = mSubtypeSwitcher.getCurrentSubtypeLocale(); final String switcherLocaleStr = switcherSubtypeLocale.toString(); final Locale subtypeLocale; @@ -599,47 +581,42 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen } else { subtypeLocale = switcherSubtypeLocale; } - initSuggestForLocale(mInputLogic.mSuggest, subtypeLocale); + resetSuggestForLocale(subtypeLocale); } - private void initSuggestForLocale(final Suggest oldSuggest, final Locale locale) { - final SettingsValues settingsValues = mSettings.getCurrent(); - final DictionaryFacilitatorForSuggest oldDictionaryFacilitator = - (oldSuggest == null) ? null : oldSuggest.mDictionaryFacilitator; - // Creates new dictionary facilitator for the new locale. + /** + * Reset suggest by loading dictionaries for the locale and the current settings values. + * + * @param locale the locale + */ + private void resetSuggestForLocale(final Locale locale) { final DictionaryFacilitatorForSuggest dictionaryFacilitator = - new DictionaryFacilitatorForSuggest(this /* context */, locale, settingsValues, - this /* DictionaryInitializationListener */, oldDictionaryFacilitator); - final Suggest newSuggest = new Suggest(locale, dictionaryFacilitator); + mInputLogic.mSuggest.mDictionaryFacilitator; + final SettingsValues settingsValues = mSettings.getCurrent(); + dictionaryFacilitator.resetDictionaries(this /* context */, locale, + settingsValues.mUseContactsDict, settingsValues.mUsePersonalizedDicts, + false /* forceReloadMainDictionary */, this); if (settingsValues.mCorrectionEnabled) { - newSuggest.setAutoCorrectionThreshold(settingsValues.mAutoCorrectionThreshold); + mInputLogic.mSuggest.setAutoCorrectionThreshold( + settingsValues.mAutoCorrectionThreshold); } - replaceSuggest(newSuggest); } + /** + * Reset suggest by loading the main dictionary of the current locale. + */ /* package private */ void resetSuggestMainDict() { - final DictionaryFacilitatorForSuggest oldDictionaryFacilitator = - mInputLogic.mSuggest.mDictionaryFacilitator; final DictionaryFacilitatorForSuggest dictionaryFacilitator = - new DictionaryFacilitatorForSuggest(this /* listener */, oldDictionaryFacilitator); - replaceSuggest(new Suggest(mInputLogic.mSuggest /* oldSuggest */, dictionaryFacilitator)); - } - - private void replaceSuggest(final Suggest newSuggest) { - if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) { - ResearchLogger.getInstance().initDictionary(newSuggest.mDictionaryFacilitator); - } - mInputLogic.replaceSuggest(newSuggest); - refreshPersonalizationDictionarySession(); + mInputLogic.mSuggest.mDictionaryFacilitator; + final SettingsValues settingsValues = mSettings.getCurrent(); + dictionaryFacilitator.resetDictionaries(this /* context */, + dictionaryFacilitator.getLocale(), settingsValues.mUseContactsDict, + settingsValues.mUsePersonalizedDicts, true /* forceReloadMainDictionary */, this); } @Override public void onDestroy() { - final Suggest suggest = mInputLogic.mSuggest; - if (suggest != null) { - suggest.close(); - mInputLogic.mSuggest = null; - } + mInputLogic.mSuggest.mDictionaryFacilitator.closeDictionaries(); mSettings.onDestroy(); unregisterReceiver(mReceiver); if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) { @@ -802,10 +779,10 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen // Note: the following does a round-trip IPC on the main thread: be careful final Locale currentLocale = mSubtypeSwitcher.getCurrentSubtypeLocale(); - Suggest suggest = mInputLogic.mSuggest; - if (null != suggest && null != currentLocale && !currentLocale.equals(suggest.mLocale)) { - initSuggest(); - suggest = mInputLogic.mSuggest; + final Suggest suggest = mInputLogic.mSuggest; + if (null != currentLocale && !currentLocale.equals(suggest.getLocale())) { + // TODO: Do this automatically. + resetSuggest(); } // TODO[IL]: Can the following be moved to InputLogic#startInput? @@ -833,13 +810,12 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen if (isDifferentTextField || !currentSettingsValues.hasSameOrientation(getResources().getConfiguration())) { loadSettings(); - suggest = mInputLogic.mSuggest; } if (isDifferentTextField) { mainKeyboardView.closing(); currentSettingsValues = mSettings.getCurrent(); - if (suggest != null && currentSettingsValues.mCorrectionEnabled) { + if (currentSettingsValues.mCorrectionEnabled) { suggest.setAutoCorrectionThreshold(currentSettingsValues.mAutoCorrectionThreshold); } @@ -865,8 +841,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen mHandler.cancelUpdateSuggestionStrip(); - mainKeyboardView.setMainDictionaryAvailability(null != suggest - ? suggest.mDictionaryFacilitator.hasMainDictionary() : false); + mainKeyboardView.setMainDictionaryAvailability( + suggest.mDictionaryFacilitator.hasInitializedMainDictionary()); mainKeyboardView.setKeyPreviewPopupEnabled(currentSettingsValues.mKeyPreviewPopupOn, currentSettingsValues.mKeyPreviewPopupDismissDelay); mainKeyboardView.setSlidingKeyInputPreviewEnabled( @@ -1407,8 +1383,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen public void getSuggestedWords(final int sessionId, final int sequenceNumber, final OnGetSuggestedWordsCallback callback) { final Keyboard keyboard = mKeyboardSwitcher.getKeyboard(); - final Suggest suggest = mInputLogic.mSuggest; - if (keyboard == null || suggest == null) { + if (keyboard == null) { callback.onGetSuggestedWords(SuggestedWords.EMPTY); return; } @@ -1437,7 +1412,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen } } } - suggest.getSuggestedWords(mInputLogic.mWordComposer, + mInputLogic.mSuggest.getSuggestedWords(mInputLogic.mWordComposer, mInputLogic.mWordComposer.getPreviousWordForSuggestion(), keyboard.getProximityInfo(), currentSettings.mBlockPotentiallyOffensive, currentSettings.mCorrectionEnabled, additionalFeaturesOptions, sessionId, @@ -1722,12 +1697,10 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen // DO NOT USE THIS for any other purpose than testing. This can break the keyboard badly. @UsedForTesting /* package for test */ void replaceDictionariesForTest(final Locale locale) { - final DictionaryFacilitatorForSuggest oldDictionaryFacilitator = - mInputLogic.mSuggest.mDictionaryFacilitator; - final DictionaryFacilitatorForSuggest dictionaryFacilitator = - new DictionaryFacilitatorForSuggest(this, locale, mSettings.getCurrent(), - this /* listener */, oldDictionaryFacilitator); - replaceSuggest(new Suggest(locale, dictionaryFacilitator)); + final SettingsValues settingsValues = mSettings.getCurrent(); + mInputLogic.mSuggest.mDictionaryFacilitator.resetDictionaries(this, locale, + settingsValues.mUseContactsDict, settingsValues.mUsePersonalizedDicts, + false /* forceReloadMainDictionary */, this /* listener */); } // DO NOT USE THIS for any other purpose than testing. @@ -1738,8 +1711,10 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen } public void dumpDictionaryForDebug(final String dictName) { - if (mInputLogic.mSuggest == null) { - initSuggest(); + final DictionaryFacilitatorForSuggest dictionaryFacilitator = + mInputLogic.mSuggest.mDictionaryFacilitator; + if (dictionaryFacilitator.getLocale() == null) { + resetSuggest(); } mInputLogic.mSuggest.mDictionaryFacilitator.dumpDictionaryForDebug(dictName); } diff --git a/java/src/com/android/inputmethod/latin/Suggest.java b/java/src/com/android/inputmethod/latin/Suggest.java index ba64028ca..6985d9a84 100644 --- a/java/src/com/android/inputmethod/latin/Suggest.java +++ b/java/src/com/android/inputmethod/latin/Suggest.java @@ -18,17 +18,17 @@ package com.android.inputmethod.latin; import android.text.TextUtils; +import com.android.inputmethod.event.Event; import com.android.inputmethod.keyboard.ProximityInfo; import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo; import com.android.inputmethod.latin.define.ProductionFlag; import com.android.inputmethod.latin.utils.AutoCorrectionUtils; import com.android.inputmethod.latin.utils.BinaryDictionaryUtils; -import com.android.inputmethod.latin.utils.BoundedTreeSet; import com.android.inputmethod.latin.utils.CollectionUtils; import com.android.inputmethod.latin.utils.StringUtils; +import com.android.inputmethod.latin.utils.SuggestionResults; import java.util.ArrayList; -import java.util.Comparator; import java.util.Locale; /** @@ -53,29 +53,16 @@ public final class Suggest { private static final int SUPPRESS_SUGGEST_THRESHOLD = -2000000000; private static final boolean DBG = LatinImeLogger.sDBG; - public final DictionaryFacilitatorForSuggest mDictionaryFacilitator; + public final DictionaryFacilitatorForSuggest mDictionaryFacilitator = + new DictionaryFacilitatorForSuggest(); private float mAutoCorrectionThreshold; - // Locale used for upper- and title-casing words - public final Locale mLocale; - - // TODO: Move dictionaryFacilitator constructing logics from LatinIME to Suggest. - public Suggest(final Locale locale, - final DictionaryFacilitatorForSuggest dictionaryFacilitator) { - mLocale = locale; - mDictionaryFacilitator = dictionaryFacilitator; - } - - // Creates instance with new dictionary facilitator. - public Suggest(final Suggest oldSuggst, - final DictionaryFacilitatorForSuggest dictionaryFacilitator) { - mLocale = oldSuggst.mLocale; - mAutoCorrectionThreshold = oldSuggst.mAutoCorrectionThreshold; - mDictionaryFacilitator = dictionaryFacilitator; + public Locale getLocale() { + return mDictionaryFacilitator.getLocale(); } - public void setAutoCorrectionThreshold(float threshold) { + public void setAutoCorrectionThreshold(final float threshold) { mAutoCorrectionThreshold = threshold; } @@ -108,9 +95,6 @@ public final class Suggest { final int[] additionalFeaturesOptions, final int sequenceNumber, final OnGetSuggestedWordsCallback callback) { final int trailingSingleQuotesCount = wordComposer.trailingSingleQuotesCount(); - final BoundedTreeSet suggestionsSet = new BoundedTreeSet(sSuggestedWordInfoComparator, - SuggestedWords.MAX_SUGGESTIONS); - final String typedWord = wordComposer.getTypedWord(); final String consideredWord = trailingSingleQuotesCount > 0 ? typedWord.substring(0, typedWord.length() - trailingSingleQuotesCount) @@ -121,7 +105,11 @@ public final class Suggest { if (trailingSingleQuotesCount > 0) { wordComposerForLookup = new WordComposer(wordComposer); for (int i = trailingSingleQuotesCount - 1; i >= 0; --i) { - wordComposerForLookup.deleteLast(); + // TODO: do not create a fake event for this. Ideally the word composer should know + // how to give out the word without trailing quotes and we can remove this entirely + wordComposerForLookup.deleteLast(Event.createSoftwareKeypressEvent( + Event.NOT_A_CODE_POINT, Constants.CODE_DELETE, + Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE)); } } else { wordComposerForLookup = wordComposer; @@ -132,20 +120,20 @@ public final class Suggest { } else { rawSuggestions = null; } - mDictionaryFacilitator.getSuggestions(wordComposerForLookup, prevWordForBigram, - proximityInfo, blockOffensiveWords, additionalFeaturesOptions, SESSION_TYPING, - suggestionsSet, rawSuggestions); + final SuggestionResults suggestionResults = mDictionaryFacilitator.getSuggestionResults( + wordComposerForLookup, prevWordForBigram, proximityInfo, blockOffensiveWords, + additionalFeaturesOptions, SESSION_TYPING, rawSuggestions); final boolean isFirstCharCapitalized = wordComposer.isFirstCharCapitalized(); final boolean isAllUpperCase = wordComposer.isAllUpperCase(); final String firstSuggestion; final String whitelistedWord; - if (suggestionsSet.isEmpty()) { + if (suggestionResults.isEmpty()) { whitelistedWord = firstSuggestion = null; } else { final SuggestedWordInfo firstSuggestedWordInfo = getTransformedSuggestedWordInfo( - suggestionsSet.first(), mLocale, isAllUpperCase, isFirstCharCapitalized, - trailingSingleQuotesCount); + suggestionResults.first(), suggestionResults.mLocale, isAllUpperCase, + isFirstCharCapitalized, trailingSingleQuotesCount); firstSuggestion = firstSuggestedWordInfo.mWord; if (SuggestedWordInfo.KIND_WHITELIST != firstSuggestedWordInfo.mKind) { whitelistedWord = null; @@ -175,10 +163,10 @@ public final class Suggest { // the current settings. It may also be useful to know, when the setting is off, whether // the word *would* have been auto-corrected. if (!isCorrectionEnabled || !allowsToBeAutoCorrected || isPrediction - || suggestionsSet.isEmpty() || wordComposer.hasDigits() + || suggestionResults.isEmpty() || wordComposer.hasDigits() || wordComposer.isMostlyCaps() || wordComposer.isResumed() - || !mDictionaryFacilitator.hasMainDictionary() - || SuggestedWordInfo.KIND_SHORTCUT == suggestionsSet.first().mKind) { + || !mDictionaryFacilitator.hasInitializedMainDictionary() + || SuggestedWordInfo.KIND_SHORTCUT == suggestionResults.first().mKind) { // If we don't have a main dictionary, we never want to auto-correct. The reason for // this is, the user may have a contact whose name happens to match a valid word in // their language, and it will unexpectedly auto-correct. For example, if the user @@ -190,17 +178,17 @@ public final class Suggest { hasAutoCorrection = false; } else { hasAutoCorrection = AutoCorrectionUtils.suggestionExceedsAutoCorrectionThreshold( - suggestionsSet.first(), consideredWord, mAutoCorrectionThreshold); + suggestionResults.first(), consideredWord, mAutoCorrectionThreshold); } final ArrayList<SuggestedWordInfo> suggestionsContainer = - CollectionUtils.newArrayList(suggestionsSet); + CollectionUtils.newArrayList(suggestionResults); final int suggestionsCount = suggestionsContainer.size(); if (isFirstCharCapitalized || isAllUpperCase || 0 != trailingSingleQuotesCount) { for (int i = 0; i < suggestionsCount; ++i) { final SuggestedWordInfo wordInfo = suggestionsContainer.get(i); final SuggestedWordInfo transformedWordInfo = getTransformedSuggestedWordInfo( - wordInfo, mLocale, isAllUpperCase, isFirstCharCapitalized, + wordInfo, suggestionResults.mLocale, isAllUpperCase, isFirstCharCapitalized, trailingSingleQuotesCount); suggestionsContainer.set(i, transformedWordInfo); } @@ -244,23 +232,21 @@ public final class Suggest { final boolean blockOffensiveWords, final int[] additionalFeaturesOptions, final int sessionId, final int sequenceNumber, final OnGetSuggestedWordsCallback callback) { - final BoundedTreeSet suggestionsSet = new BoundedTreeSet(sSuggestedWordInfoComparator, - SuggestedWords.MAX_SUGGESTIONS); final ArrayList<SuggestedWordInfo> rawSuggestions; if (ProductionFlag.INCLUDE_RAW_SUGGESTIONS) { rawSuggestions = CollectionUtils.newArrayList(); } else { rawSuggestions = null; } - mDictionaryFacilitator.getSuggestions(wordComposer, prevWordForBigram, proximityInfo, - blockOffensiveWords, additionalFeaturesOptions, sessionId, suggestionsSet, - rawSuggestions); - for (SuggestedWordInfo wordInfo : suggestionsSet) { + final SuggestionResults suggestionResults = mDictionaryFacilitator.getSuggestionResults( + wordComposer, prevWordForBigram, proximityInfo, blockOffensiveWords, + additionalFeaturesOptions, sessionId, rawSuggestions); + for (SuggestedWordInfo wordInfo : suggestionResults) { LatinImeLogger.onAddSuggestedWord(wordInfo.mWord, wordInfo.mSourceDict.mDictType); } final ArrayList<SuggestedWordInfo> suggestionsContainer = - CollectionUtils.newArrayList(suggestionsSet); + CollectionUtils.newArrayList(suggestionResults); final int suggestionsCount = suggestionsContainer.size(); final boolean isFirstCharCapitalized = wordComposer.wasShiftedNoLock(); final boolean isAllUpperCase = wordComposer.isAllUpperCase(); @@ -268,7 +254,7 @@ public final class Suggest { for (int i = 0; i < suggestionsCount; ++i) { final SuggestedWordInfo wordInfo = suggestionsContainer.get(i); final SuggestedWordInfo transformedWordInfo = getTransformedSuggestedWordInfo( - wordInfo, mLocale, isAllUpperCase, isFirstCharCapitalized, + wordInfo, suggestionResults.mLocale, isAllUpperCase, isFirstCharCapitalized, 0 /* trailingSingleQuotesCount */); suggestionsContainer.set(i, transformedWordInfo); } @@ -326,22 +312,6 @@ public final class Suggest { return suggestionsList; } - private static final class SuggestedWordInfoComparator - implements Comparator<SuggestedWordInfo> { - // This comparator ranks the word info with the higher frequency first. That's because - // that's the order we want our elements in. - @Override - public int compare(final SuggestedWordInfo o1, final SuggestedWordInfo o2) { - if (o1.mScore > o2.mScore) return -1; - if (o1.mScore < o2.mScore) return 1; - if (o1.mCodePointCount < o2.mCodePointCount) return -1; - if (o1.mCodePointCount > o2.mCodePointCount) return 1; - return o1.mWord.compareTo(o2.mWord); - } - } - private static final SuggestedWordInfoComparator sSuggestedWordInfoComparator = - new SuggestedWordInfoComparator(); - /* package for test */ static SuggestedWordInfo getTransformedSuggestedWordInfo( final SuggestedWordInfo wordInfo, final Locale locale, final boolean isAllUpperCase, final boolean isFirstCharCapitalized, final int trailingSingleQuotesCount) { @@ -365,8 +335,4 @@ public final class Suggest { wordInfo.mSourceDict, wordInfo.mIndexOfTouchPointOfSecondWord, wordInfo.mAutoCommitFirstWordConfidence); } - - public void close() { - mDictionaryFacilitator.close(); - } } diff --git a/java/src/com/android/inputmethod/latin/WordComposer.java b/java/src/com/android/inputmethod/latin/WordComposer.java index a60ca3d41..a955f375b 100644 --- a/java/src/com/android/inputmethod/latin/WordComposer.java +++ b/java/src/com/android/inputmethod/latin/WordComposer.java @@ -314,29 +314,14 @@ public final class WordComposer { } /** - * Delete the last keystroke as a result of hitting backspace. + * Delete the last composing unit as a result of hitting backspace. */ - public void deleteLast() { - final int size = size(); - if (size > 0) { - // Note: mTypedWord.length() and mCodes.length differ when there are surrogate pairs - final int stringBuilderLength = mTypedWord.length(); - if (stringBuilderLength < size) { - throw new RuntimeException( - "In WordComposer: mCodes and mTypedWords have non-matching lengths"); - } - final int lastChar = mTypedWord.codePointBefore(stringBuilderLength); - // TODO: with events and composition, this is absolutely not necessarily true. - mEvents.remove(mEvents.size() - 1); - if (Character.isSupplementaryCodePoint(lastChar)) { - mTypedWord.delete(stringBuilderLength - 2, stringBuilderLength); - } else { - mTypedWord.deleteCharAt(stringBuilderLength - 1); - } - if (Character.isUpperCase(lastChar)) mCapsCount--; - if (Character.isDigit(lastChar)) mDigitsCount--; - refreshSize(); - } + public void deleteLast(final Event event) { + mCombinerChain.processEvent(mEvents, event); + mTypedWord.replace(0, mTypedWord.length(), + mCombinerChain.getComposingWordWithCombiningFeedback().toString()); + mEvents.add(event); + refreshSize(); // We may have deleted the last one. if (0 == size()) { mIsFirstCharCapitalized = false; diff --git a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java index 36b30eabe..3a59be198 100644 --- a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java +++ b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java @@ -32,6 +32,7 @@ import com.android.inputmethod.event.InputTransaction; import com.android.inputmethod.keyboard.KeyboardSwitcher; import com.android.inputmethod.latin.Constants; import com.android.inputmethod.latin.Dictionary; +import com.android.inputmethod.latin.DictionaryFacilitatorForSuggest; import com.android.inputmethod.latin.InputPointers; import com.android.inputmethod.latin.LastComposedWord; import com.android.inputmethod.latin.LatinIME; @@ -77,8 +78,7 @@ public final class InputLogic { private int mSpaceState; // Never null public SuggestedWords mSuggestedWords = SuggestedWords.EMPTY; - // TODO: mSuggest should be touched by a single thread. - public volatile Suggest mSuggest; + public final Suggest mSuggest = new Suggest(); public LastComposedWord mLastComposedWord = LastComposedWord.NOT_A_COMPOSED_WORD; public final WordComposer mWordComposer; @@ -106,15 +106,6 @@ public final class InputLogic { mInputLogicHandler = InputLogicHandler.NULL_HANDLER; } - // Replace the old Suggest with the passed Suggest and close it. - public void replaceSuggest(final Suggest newSuggest) { - final Suggest oldSuggest = mSuggest; - mSuggest = newSuggest; - if (oldSuggest != null) { - oldSuggest.close(); - } - } - /** * Initializes the input logic for input in an editor. * @@ -283,23 +274,18 @@ public final class InputLogic { // We should show the "Touch again to save" hint if the user pressed the first entry // AND it's in none of our current dictionaries (main, user or otherwise). - // Please note that if mSuggest is null, it means that everything is off: suggestion - // and correction, so we shouldn't try to show the hint - final Suggest suggest = mSuggest; + final DictionaryFacilitatorForSuggest dictionaryFacilitator = + mSuggest.mDictionaryFacilitator; final boolean showingAddToDictionaryHint = (SuggestedWordInfo.KIND_TYPED == suggestionInfo.mKind || SuggestedWordInfo.KIND_OOV_CORRECTION == suggestionInfo.mKind) - && suggest != null - // If the suggestion is not in the dictionary, the hint should be shown. - && !suggest.mDictionaryFacilitator.isValidWord(suggestion, - true /* ignoreCase */); + && !dictionaryFacilitator.isValidWord(suggestion, true /* ignoreCase */); if (settingsValues.mIsInternal) { LatinImeLoggerUtils.onSeparator((char)Constants.CODE_SPACE, Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE); } - if (showingAddToDictionaryHint - && suggest.mDictionaryFacilitator.isUserDictionaryEnabled()) { + if (showingAddToDictionaryHint && dictionaryFacilitator.isUserDictionaryEnabled()) { mSuggestionStripViewAccessor.showAddToDictionaryHint(suggestion); } else { // If we're not showing the "Touch again to save", then update the suggestion strip. @@ -922,7 +908,7 @@ public final class InputLogic { mWordComposer.reset(); mWordComposer.setRejectedBatchModeSuggestion(rejectedSuggestion); } else { - mWordComposer.deleteLast(); + mWordComposer.deleteLast(inputTransaction.mEvent); } mConnection.setComposingText(getTextWithUnderline(mWordComposer.getTypedWord()), 1); handler.postUpdateSuggestionStrip(); @@ -1231,20 +1217,17 @@ public final class InputLogic { if (!settingsValues.mCorrectionEnabled) return; if (TextUtils.isEmpty(suggestion)) return; - final Suggest suggest = mSuggest; - if (suggest == null) return; - final boolean wasAutoCapitalized = mWordComposer.wasAutoCapitalized() && !mWordComposer.isMostlyCaps(); final int timeStampInSeconds = (int)TimeUnit.MILLISECONDS.toSeconds( System.currentTimeMillis()); - suggest.mDictionaryFacilitator.addToUserHistory(suggestion, wasAutoCapitalized, prevWord, + mSuggest.mDictionaryFacilitator.addToUserHistory(suggestion, wasAutoCapitalized, prevWord, timeStampInSeconds); } public void performUpdateSuggestionStripSync(final SettingsValues settingsValues) { // Check if we have a suggestion engine attached. - if (mSuggest == null || !settingsValues.isSuggestionsRequested()) { + if (!settingsValues.isSuggestionsRequested()) { if (mWordComposer.isComposingWord()) { Log.w(TAG, "Called updateSuggestionsOrPredictions but suggestions were not " + "requested!"); @@ -1446,10 +1429,8 @@ public final class InputLogic { } mConnection.deleteSurroundingText(deleteLength, 0); if (!TextUtils.isEmpty(previousWord) && !TextUtils.isEmpty(committedWord)) { - if (mSuggest != null) { - mSuggest.mDictionaryFacilitator.cancelAddingUserHistory( - previousWord, committedWordString); - } + mSuggest.mDictionaryFacilitator.cancelAddingUserHistory( + previousWord, committedWordString); } final String stringToCommit = originallyTypedWord + mLastComposedWord.mSeparatorString; final SpannableString textToCommit = new SpannableString(stringToCommit); diff --git a/java/src/com/android/inputmethod/latin/utils/BoundedTreeSet.java b/java/src/com/android/inputmethod/latin/utils/BoundedTreeSet.java deleted file mode 100644 index ae1fd3f79..000000000 --- a/java/src/com/android/inputmethod/latin/utils/BoundedTreeSet.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (C) 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. - */ - -package com.android.inputmethod.latin.utils; - -import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo; - -import java.util.Collection; -import java.util.Comparator; -import java.util.TreeSet; - -/** - * A TreeSet that is bounded in size and throws everything that's smaller than its limit - */ -public final class BoundedTreeSet extends TreeSet<SuggestedWordInfo> { - private final int mCapacity; - public BoundedTreeSet(final Comparator<SuggestedWordInfo> comparator, final int capacity) { - super(comparator); - mCapacity = capacity; - } - - @Override - public boolean add(final SuggestedWordInfo e) { - if (size() < mCapacity) return super.add(e); - if (comparator().compare(e, last()) > 0) return false; - super.add(e); - pollLast(); // removes the last element - return true; - } - - @Override - public boolean addAll(final Collection<? extends SuggestedWordInfo> e) { - if (null == e) return false; - return super.addAll(e); - } -} diff --git a/java/src/com/android/inputmethod/latin/utils/LanguageModelParam.java b/java/src/com/android/inputmethod/latin/utils/LanguageModelParam.java index 562ff9e8d..acd16a9e4 100644 --- a/java/src/com/android/inputmethod/latin/utils/LanguageModelParam.java +++ b/java/src/com/android/inputmethod/latin/utils/LanguageModelParam.java @@ -119,7 +119,7 @@ public final class LanguageModelParam { private static LanguageModelParam detectWhetherVaildWordOrNotAndGetLanguageModelParam( final String prevWord, final String targetWord, final int timestamp, final DictionaryFacilitatorForSuggest dictionaryFacilitator) { - final Locale locale = dictionaryFacilitator.mLocale; + final Locale locale = dictionaryFacilitator.getLocale(); if (!dictionaryFacilitator.isValidWord(targetWord, true /* ignoreCase */)) { // OOV word. return createAndGetLanguageModelParamOfWord(prevWord, targetWord, timestamp, diff --git a/java/src/com/android/inputmethod/latin/utils/SuggestionResults.java b/java/src/com/android/inputmethod/latin/utils/SuggestionResults.java new file mode 100644 index 000000000..0b362c48a --- /dev/null +++ b/java/src/com/android/inputmethod/latin/utils/SuggestionResults.java @@ -0,0 +1,76 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.inputmethod.latin.utils; + +import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo; + +import java.util.Collection; +import java.util.Comparator; +import java.util.Locale; +import java.util.TreeSet; + +/** + * A TreeSet of SuggestedWordInfo that is bounded in size and throws everything that's smaller + * than its limit + */ +public final class SuggestionResults extends TreeSet<SuggestedWordInfo> { + public final Locale mLocale; + private final int mCapacity; + + public SuggestionResults(final Locale locale, final int capacity) { + this(locale, sSuggestedWordInfoComparator, capacity); + } + + public SuggestionResults(final Locale locale, final Comparator<SuggestedWordInfo> comparator, + final int capacity) { + super(comparator); + mLocale = locale; + mCapacity = capacity; + } + + @Override + public boolean add(final SuggestedWordInfo e) { + if (size() < mCapacity) return super.add(e); + if (comparator().compare(e, last()) > 0) return false; + super.add(e); + pollLast(); // removes the last element + return true; + } + + @Override + public boolean addAll(final Collection<? extends SuggestedWordInfo> e) { + if (null == e) return false; + return super.addAll(e); + } + + private static final class SuggestedWordInfoComparator + implements Comparator<SuggestedWordInfo> { + // This comparator ranks the word info with the higher frequency first. That's because + // that's the order we want our elements in. + @Override + public int compare(final SuggestedWordInfo o1, final SuggestedWordInfo o2) { + if (o1.mScore > o2.mScore) return -1; + if (o1.mScore < o2.mScore) return 1; + if (o1.mCodePointCount < o2.mCodePointCount) return -1; + if (o1.mCodePointCount > o2.mCodePointCount) return 1; + return o1.mWord.compareTo(o2.mWord); + } + } + + private static final SuggestedWordInfoComparator sSuggestedWordInfoComparator = + new SuggestedWordInfoComparator(); +} diff --git a/java/src/com/android/inputmethod/research/MainLogBuffer.java b/java/src/com/android/inputmethod/research/MainLogBuffer.java index 9b1d8c535..ffdb43c15 100644 --- a/java/src/com/android/inputmethod/research/MainLogBuffer.java +++ b/java/src/com/android/inputmethod/research/MainLogBuffer.java @@ -155,8 +155,9 @@ public abstract class MainLogBuffer extends FixedLogBuffer { } // Reload the dictionary in case it has changed (e.g., because the user has changed // languages). - if ((mDictionaryFacilitator == null || !mDictionaryFacilitator.hasMainDictionary()) - && mDictionaryForTesting == null) { + if ((mDictionaryFacilitator == null + || !mDictionaryFacilitator.hasInitializedMainDictionary()) + && mDictionaryForTesting == null) { // Main dictionary is unavailable. Since we cannot check it, we cannot tell if a // word is out-of-vocabulary or not. Therefore, we must judge the entire buffer // contents to potentially pose a privacy risk. |