diff options
Diffstat (limited to 'java')
209 files changed, 5526 insertions, 5565 deletions
diff --git a/java/res/values-land/keyboard-heights.xml b/java/res/values-land/keyboard-heights.xml index 670be3329..d57f96be3 100644 --- a/java/res/values-land/keyboard-heights.xml +++ b/java/res/values-land/keyboard-heights.xml @@ -33,7 +33,5 @@ <!-- Preferable keyboard height in absolute scale: 45.0mm --> <!-- Xoom --> <item>HARDWARE=stingray,265.4378</item> - <!-- Default value for unknown device: empty string --> - <item>,</item> </string-array> </resources> diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml index 5bedd4ac2..78cf34de7 100644 --- a/java/res/values/attrs.xml +++ b/java/res/values/attrs.xml @@ -111,10 +111,6 @@ <attr name="keyPreviewOffset" format="dimension" /> <!-- Height of the key press feedback popup. --> <attr name="keyPreviewHeight" format="dimension" /> - <!-- Duration of key preview popup zoom in animation in millisecond --> - <attr name="keyPreviewZoomInDuration" format="integer" /> - <!-- Duration of key preview popup zoom out animation in millisecond --> - <attr name="keyPreviewZoomOutDuration" format="integer" /> <!-- Delay after key releasing and key press feedback dismissing in millisecond --> <attr name="keyPreviewLingerTimeout" format="integer" /> <!-- Layout resource for more keys keyboard --> @@ -240,11 +236,6 @@ </declare-styleable> <declare-styleable name="Keyboard_Key"> - <!-- TODO: Remove code attribute and consolidate with keySpec. --> - <!-- The unicode value that this key outputs. - Code value represented in hexadecimal prefixed with "0x" or code value reference using - "!code/<code_name>" notation. --> - <attr name="code" format="string" /> <!-- The alternate unicode value that this key outputs while typing. Code value represented in hexadecimal prefixed with "0x" or code value reference using "!code/<code_name>" notation. --> @@ -276,9 +267,8 @@ <flag name="altCodeWhileTyping" value="0x04" /> <flag name="enableLongPress" value="0x08" /> </attr> - <!-- TODO: Rename keyLabel to keySpec. --> - <!-- The label to display on the key. --> - <attr name="keyLabel" format="string" /> + <!-- The label, icon to display on the key. And code, outputText of the key. --> + <attr name="keySpec" format="string" /> <!-- The hint label to display on the key in conjunction with the label. --> <attr name="keyHintLabel" format="string" /> <!-- The vertical adjustment of key hint label in proportion to its height. --> @@ -318,9 +308,6 @@ <!-- If true, disable additionalMoreKeys. --> <flag name="disableAdditionalMoreKeys" value="0x80000000" /> </attr> - <!-- TODO: Remove keyIcon attribute and consolidate with keySpec. --> - <!-- The icon to display on the key instead of the label. --> - <attr name="keyIcon" format="string" /> <!-- The icon for disabled key --> <attr name="keyIconDisabled" format="string" /> <!-- The icon to show in the popup preview. --> diff --git a/java/res/values/config-common.xml b/java/res/values/config-common.xml index c92015288..1b44bad50 100644 --- a/java/res/values/config-common.xml +++ b/java/res/values/config-common.xml @@ -35,8 +35,10 @@ <integer name="config_ignore_alt_code_key_timeout">350</integer> - <integer name="config_key_preview_zoom_in_duration">35</integer> - <integer name="config_key_preview_zoom_out_duration">40</integer> + <integer name="config_key_preview_show_up_duration">35</integer> + <integer name="config_key_preview_dismiss_duration">40</integer> + <fraction name="config_key_preview_show_up_start_scale">70%</fraction> + <fraction name="config_key_preview_dismiss_end_scale">70%</fraction> <integer name="config_key_preview_linger_timeout">70</integer> <!-- Suppress showing key preview duration after batch input in millisecond --> <integer name="config_suppress_key_preview_after_batch_input_duration">1000</integer> diff --git a/java/res/values/keyboard-heights.xml b/java/res/values/keyboard-heights.xml index c651a89b3..12dd51d9d 100644 --- a/java/res/values/keyboard-heights.xml +++ b/java/res/values/keyboard-heights.xml @@ -33,7 +33,5 @@ <!-- Preferable keyboard height in absolute scale: 48.0mm --> <!-- Xoom --> <item>HARDWARE=stingray,283.1337</item> - <!-- Default value for unknown device: empty string --> - <item>,</item> </string-array> </resources> diff --git a/java/res/values/keypress-vibration-durations.xml b/java/res/values/keypress-vibration-durations.xml index cde4e4447..032b5fd91 100644 --- a/java/res/values/keypress-vibration-durations.xml +++ b/java/res/values/keypress-vibration-durations.xml @@ -59,7 +59,5 @@ <item>MODEL=XT1035:MANUFACTURER=motorola,18</item> <!-- Sony Xperia Z, Z Ultra --> <item>MODEL=C6603|C6806:MANUFACTURER=Sony,35</item> - <!-- Default value for unknown device. The negative value means system default. --> - <item>,-1</item> </string-array> </resources> diff --git a/java/res/values/keypress-volumes.xml b/java/res/values/keypress-volumes.xml index d359055c2..074581d00 100644 --- a/java/res/values/keypress-volumes.xml +++ b/java/res/values/keypress-volumes.xml @@ -26,7 +26,5 @@ <item>HARDWARE=grouper,0.3f</item> <item>HARDWARE=mako,0.3f</item> <item>HARDWARE=manta,0.2f</item> - <!-- Default value for unknown device. The negative value means system default. --> - <item>,-1.0f</item> </string-array> </resources> diff --git a/java/res/values/phantom-sudden-move-event-device-list.xml b/java/res/values/phantom-sudden-move-event-device-list.xml index 53002b31e..4f91cd389 100644 --- a/java/res/values/phantom-sudden-move-event-device-list.xml +++ b/java/res/values/phantom-sudden-move-event-device-list.xml @@ -23,7 +23,5 @@ See {@link com.android.inputmethod.keyboard.PointerTracker}. --> <!-- Xoom --> <item>HARDWARE=stingray,true</item> - <!-- Default value for unknown device --> - <item>,false</item> </string-array> </resources> diff --git a/java/res/values/strings.xml b/java/res/values/strings.xml index 70f4c1829..9045ce51b 100644 --- a/java/res/values/strings.xml +++ b/java/res/values/strings.xml @@ -78,7 +78,7 @@ <string name="key_preview_popup_dismiss_default_delay">Default</string> <!-- Units abbreviation for the duration (milliseconds) [CHAR LIMIT=10] --> - <string name="abbreviation_unit_milliseconds"><xliff:g id="milliseconds">%s</xliff:g>ms</string> + <string name="abbreviation_unit_milliseconds"><xliff:g id="MILLISECONDS">%s</xliff:g>ms</string> <!-- The text that represents the current settings value is the system default [CHAR LIMIT=25] --> <string name="settings_system_default">System default</string> @@ -157,9 +157,6 @@ <!-- Description for "gesture_space_aware" option. The user can input multiple words by gliding through the space key during a gesture input.[CHAR LIMIT=65]--> <string name="gesture_space_aware_summary">Input spaces during gestures by gliding to the space key</string> - <!-- Indicates that a word has been added to the dictionary --> - <string name="added_word"><xliff:g id="word">%s</xliff:g> : Saved</string> - <!-- Spoken description to let the user know that when typing in a password, they can plug in a headset in to hear spoken descriptions of the keys they type. [CHAR LIMIT=NONE] --> <string name="spoken_use_headphones">Plug in a headset to hear password keys spoken aloud.</string> @@ -169,9 +166,9 @@ <string name="spoken_no_text_entered">No text entered</string> <!-- Spoken description to let the user know what auto-correction will be performed when a key is pressed. An auto-correction replaces a single word with one or more words. --> - <string name="spoken_auto_correct"><xliff:g id="key" example="Space">%1$s</xliff:g> corrects <xliff:g id="original_word">%2$s</xliff:g> to <xliff:g id="corrected">%3$s</xliff:g></string> + <string name="spoken_auto_correct"><xliff:g id="KEY_NAME" example="Space">%1$s</xliff:g> corrects <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> to <xliff:g id="CORRECTED_WORD">%3$s</xliff:g></string> <!-- Spoken description used during obscured (e.g. password) entry to let the user know that auto-correction will be performed when a key is pressed. --> - <string name="spoken_auto_correct_obscured"><xliff:g id="key" example="Space">%1$s</xliff:g> performs auto-correction</string> + <string name="spoken_auto_correct_obscured"><xliff:g id="KEY_NAME" example="Space">%1$s</xliff:g> performs auto-correction</string> <!-- Spoken description for unknown keyboard keys. --> <string name="spoken_description_unknown">Key code %d</string> @@ -231,7 +228,7 @@ <!-- Spoken feedback when the keyboard is hidden. --> <string name="announce_keyboard_hidden">Keyboard hidden</string> <!-- Spoken feedback when the keyboard mode changes. --> - <string name="announce_keyboard_mode">Showing <xliff:g id="mode" example="email">%s</xliff:g> keyboard</string> + <string name="announce_keyboard_mode">Showing <xliff:g id="KEYBOARD_MODE" example="email">%s</xliff:g> keyboard</string> <!-- Description of the keyboard mode for entering dates. --> <string name="keyboard_mode_date">date</string> <!-- Description of the keyboard mode for entering dates and times. --> @@ -350,15 +347,15 @@ <string name="subtype_es_US">Spanish (US)</string> <!-- Description for English (United Kingdom) keyboard subtype with explicit keyboard layout [CHAR LIMIT=25] This should be identical to subtype_en_GB aside from the trailing (%s). --> - <string name="subtype_with_layout_en_GB">English (UK) (<xliff:g id="layout">%s</xliff:g>)</string> + <string name="subtype_with_layout_en_GB">English (UK) (<xliff:g id="KEYBOARD_LAYOUT" example="QWERTY">%s</xliff:g>)</string> <!-- Description for English (United States) keyboard subtype with explicit keyboard layout [CHAR LIMIT=25] This should be identical to subtype_en_US aside from the trailing (%s). --> - <string name="subtype_with_layout_en_US">English (US) (<xliff:g id="layout">%s</xliff:g>)</string> + <string name="subtype_with_layout_en_US">English (US) (<xliff:g id="KEYBOARD_LAYOUT" example="QWERTY">%s</xliff:g>)</string> <!-- Description for Spanish (United States) keyboard subtype with explicit keyboard layout [CHAR LIMIT=25] This should be identical to subtype_es_US aside from the trailing (%s). --> - <string name="subtype_with_layout_es_US">Spanish (US) (<xliff:g id="layout">%s</xliff:g>)</string> + <string name="subtype_with_layout_es_US">Spanish (US) (<xliff:g id="KEYBOARD_LAYOUT" example="QWERTY">%s</xliff:g>)</string> <!-- Description for Nepali (Traditional) keyboard subtype [CHAR LIMIT=25] --> - <string name="subtype_nepali_traditional"><xliff:g id="language">%s</xliff:g> (Traditional)</string> + <string name="subtype_nepali_traditional"><xliff:g id="LANGUAGE_NAME" example="Nepali">%s</xliff:g> (Traditional)</string> <!-- TODO: Uncomment once we can handle IETF language tag with script name specified. Description for Serbian Cyrillic keyboard subtype [CHAR LIMIT=25] <string name="subtype_serbian_cyrillic">Serbian (Cyrillic)</string> @@ -366,7 +363,7 @@ <string name="subtype_serbian_latin">Serbian (Latin)</string> Description for Serbian Latin keyboard subtype with explicit keyboard layout [CHAR LIMIT=25] This should be identical to subtype_serbian_latin aside from the trailing (%s). - <string name="subtype_with_layout_sr-Latn">Serbian (Latin) (<xliff:g id="layout">%s</xliff:g>)</string> + <string name="subtype_with_layout_sr-Latn">Serbian (Latin) (<xliff:g id="KEYBOARD_LAYOUT" example="QWERTY">%s</xliff:g>)</string> --> <!-- This string is displayed in a language list that allows to choose a language for suggestions in a software keyboard. This setting won't give suggestions in any particular @@ -476,7 +473,7 @@ mobile devices. [CHAR LIMIT=25] --> <!-- Title of the button to postpone enabling a custom input style entry in the settings dialog [CHAR LIMIT=15] --> <string name="not_now">Not now</string> <!-- Toast text to describe the same input style already exists [CHAR LIMIT=64]--> - <string name="custom_input_style_already_exists">"The same input style already exists: <xliff:g id="input_style_name">%s</xliff:g>"</string> + <string name="custom_input_style_already_exists">"The same input style already exists: <xliff:g id="INPUT_STYLE_NAME" example="English (Dvorak)">%s</xliff:g>"</string> <!-- Title of an option for usability study mode --> <string name="prefs_usability_study_mode">Usability study mode</string> @@ -486,6 +483,14 @@ mobile devices. [CHAR LIMIT=25] --> <string name="prefs_keypress_vibration_duration_settings">Keypress vibration duration</string> <!-- Title of the settings for keypress sound volume [CHAR LIMIT=35] --> <string name="prefs_keypress_sound_volume_settings">Keypress sound volume</string> + <!-- Title of the settings for key popup show up animation duration (in milliseconds) [CHAR LIMIT=35] --> + <string name="prefs_key_popup_show_up_duration_settings" translatable="false">Key popup show up duration</string> + <!-- Title of the settings for key popup dismiss animation duration (in milliseconds) [CHAR LIMIT=35] --> + <string name="prefs_key_popup_dismiss_duration_settings" translatable="false">Key popup dismiss duration</string> + <!-- Title of the settings for key popup show up animation start scale (in percentile) [CHAR LIMIT=35] --> + <string name="prefs_key_popup_show_up_start_scale_settings" translatable="false">Key popup show up start scale</string> + <!-- Title of the settings for key popup dismiss animation end scale (in percentile) [CHAR LIMIT=35] --> + <string name="prefs_key_popup_dismiss_end_scale_settings" translatable="false">Key popup dismiss end scale</string> <!-- Title of the settings for reading an external dictionary file --> <string name="prefs_read_external_dictionary">Read external dictionary file</string> <!-- Title of the settings for using only personalization dictionary --> @@ -495,7 +500,7 @@ mobile devices. [CHAR LIMIT=25] --> <!-- Title of the dialog that selects a file to install as an external dictionary [CHAR LIMIT=50] --> <string name="read_external_dictionary_multiple_files_title">Select a dictionary file to install</string> <!-- Title of the confirmation dialog to install a file as an external dictionary [CHAR LIMIT=50] --> - <string name="read_external_dictionary_confirm_install_message">Really install this file for <xliff:g id="locale_name">%s</xliff:g>?</string> + <string name="read_external_dictionary_confirm_install_message">Really install this file for <xliff:g id="LANGUAGE_NAME" example="English">%s</xliff:g>?</string> <!-- Title for an error dialog that contains the details of the error in the body [CHAR LIMIT=80] --> <string name="error">There was an error</string> <!-- Title of the settings for dumpping contacts dictionary file [CHAR LIMIT=35] --> @@ -511,7 +516,7 @@ mobile devices. [CHAR LIMIT=25] --> <string name="button_default">Default</string> <!-- Title of the setup wizard welcome screen. [CHAR LIMT=40] --> - <string name="setup_welcome_title">"Welcome to <xliff:g id="application_name">%s</xliff:g>"</string> + <string name="setup_welcome_title">"Welcome to <xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g>"</string> <!-- Additional title of the setup wizard welcome screen, just below the setup_welcome_title. [CHAR_LIMIT=64] --> <string name="setup_welcome_additional_description">with Gesture Typing</string> <!-- The label of the button that starts the setup wizard. [CHAR_LIMIT=64] --> @@ -519,23 +524,23 @@ mobile devices. [CHAR LIMIT=25] --> <!-- The label of the button that navigates the user to the next step of the setup wizard. [CHAR_LIMIT=64] --> <string name="setup_next_action">Next step</string> <!-- Title of the setup wizard. [CHAR LIMT=40] --> - <string name="setup_steps_title">"Setting up <xliff:g id="application_name">%s</xliff:g>"</string> + <string name="setup_steps_title">"Setting up <xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g>"</string> <!-- Ordinal number of the 1st step in the setup wizard. [CHAR LIMIT=5] --> <string name="setup_step1_bullet" translatable="false">1</string> <!-- Title of the 1st step in the setup wizard. [CHAR LIMIT=64] --> - <string name="setup_step1_title">"Enable <xliff:g id="application_name">%s</xliff:g>"</string> + <string name="setup_step1_title">"Enable <xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g>"</string> <!-- Detailed instruction of the 1st step in the setup wizard. [CHAR LIMIT=120] --> - <string name="setup_step1_instruction">"Please check \"<xliff:g id="application_name">%s</xliff:g>\" in your Language & input settings. This will authorize it to run on your device."</string> + <string name="setup_step1_instruction">"Please check \"<xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g>\" in your Language & input settings. This will authorize it to run on your device."</string> <!-- Detailed instruction of the already finished 1st step in the setup wizard. [CHAR LIMIT=120] --> - <string name="setup_step1_finished_instruction">"<xliff:g id="application_name">%s</xliff:g> is already enabled in your Language & input settings, so this step is done. On to the next one!"</string> + <string name="setup_step1_finished_instruction">"<xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g> is already enabled in your Language & input settings, so this step is done. On to the next one!"</string> <!-- The label of the button that triggers the Language & input settings in order to enable the keyboard. [CHAR_LIMIT=64] --> <string name="setup_step1_action">Enable in Settings</string> <!-- Ordinal number of the 2nd step in the setup wizard. [CHAR LIMIT=5] --> <string name="setup_step2_bullet" translatable="false">2</string> <!-- Title of the 2nd step in the setup wizard. [CHAR LIMIT=64] --> - <string name="setup_step2_title">"Switch to <xliff:g id="application_name">%s</xliff:g>"</string> + <string name="setup_step2_title">"Switch to <xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g>"</string> <!-- Detailed instruction of the 2nd step in the setup wizard. [CHAR LIMIT=120] --> - <string name="setup_step2_instruction">"Next, select \"<xliff:g id="application_name">%s</xliff:g>\" as your active text-input method."</string> + <string name="setup_step2_instruction">"Next, select \"<xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g>\" as your active text-input method."</string> <!-- The label of the button that triggers the choose input method dialog in order to select the keyboard. [CHAR_LIMIT=64] --> <string name="setup_step2_action">Switch input methods</string> <!-- Ordinal number of the 3rd step in the setup wizard. [CHAR LIMIT=5] --> @@ -543,7 +548,7 @@ mobile devices. [CHAR LIMIT=25] --> <!-- Title of the 3rd step in the setup wizard. [CHAR LIMIT=64] --> <string name="setup_step3_title">"Congratulations, you're all set!"</string> <!-- Detailed instruction of the 3rd step in the setup wizard. [CHAR LIMIT=120] --> - <string name="setup_step3_instruction">Now you can type in all your favorite apps with <xliff:g id="application_name">%s</xliff:g>.</string> + <string name="setup_step3_instruction">Now you can type in all your favorite apps with <xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g>.</string> <!-- The label of the button that triggers the screen for configuaring additional languages of the keyboard. [CHAR_LIMIT=64] --> <string name="setup_step3_action">Configure additional languages</string> <!-- The label of the button that finishes the setup wizard. [CHAR_LIMIT=64] --> @@ -594,7 +599,7 @@ mobile devices. [CHAR LIMIT=25] --> <!-- Message to display in a dialog box while we are actively updating the word list [CHAR LIMIT=60] --> <string name="message_updating">Checking for updates</string> <!-- Message to display while the add-on dictionary list is updating [no space constraints on this, there is plenty of space but shorter is better because it's only on the screen for a second] --> - <string name="message_loading">Loading...</string> + <string name="message_loading">Loading…</string> <!-- String to explain this dictionary is the main dictionary for this language [CHAR_LIMIT=30] --> <string name="main_dict_description">Main dictionary</string> @@ -611,24 +616,24 @@ mobile devices. [CHAR LIMIT=25] --> <!-- Message in the popup informing the user a dictionary is available for their language, and asking for a decision to download over their mobile data plan or not. The reason we ask for this is, the data is large and may be downloaded over a paid-per-megabyte connection but a dictionary is also essential to type comfortably, so we ask the user. This only pops in selected cases, when there is no dictionary at all currently, and the only available network seems to be metered. The "Language & input" part should be set to the actual name of the option (message ID 5292716747264442359 in the translation console). [CHAR_LIMIT=700] --> <string name="should_download_over_metered_prompt">The selected language on your mobile device has an available dictionary.<br/> -We recommend <b>downloading</b> the <xliff:g id="language" example="English">%1$s</xliff:g> dictionary to improve your typing experience.<br/> +We recommend <b>downloading</b> the <xliff:g id="LANGUAGE_NAME" example="English">%1$s</xliff:g> dictionary to improve your typing experience.<br/> <br/> The download could take a minute or two over 3G. Charges may apply if you don\'t have an <b>unlimited data plan</b>.<br/> If you are not sure which data plan you have, we recommend finding a Wi-Fi connection to start the download automatically.<br/> <br/> Tip: You can download and remove dictionaries by going to <b>Language & input</b> in the <b>Settings</b> menu of your mobile device.</string> - <string name="download_over_metered">Download now (<xliff:g id="size_in_megabytes" example="0.7">%1$.1f</xliff:g>MB)</string> + <string name="download_over_metered">Download now (<xliff:g id="SIZE_IN_MEGABYTES" example="0.7">%1$.1f</xliff:g>MB)</string> <string name="do_not_download_over_metered">Download over Wi-Fi</string> <!-- The text of the "dictionary available" notification. --> - <string name="dict_available_notification_title">A dictionary is available for <xliff:g id="language" example="English">%1$s</xliff:g></string> + <string name="dict_available_notification_title">A dictionary is available for <xliff:g id="LANGUAGE_NAME" example="English">%1$s</xliff:g></string> <!-- The small subtext in the "dictionary available" notification. --> <string name="dict_available_notification_description">Press to review and download</string> <!-- The text of the toast warning a download is starting automatically to enable suggestions for the selected language [CHAR LIMIT=100] --> - <string name="toast_downloading_suggestions">Downloading: suggestions for <xliff:g id="language" example="English">%1$s</xliff:g> will be ready soon.</string> + <string name="toast_downloading_suggestions">Downloading: suggestions for <xliff:g id="LANGUAGE_NAME" example="English">%1$s</xliff:g> will be ready soon.</string> <!-- Version text [CHAR LIMIT=30]--> - <string name="version_text">Version <xliff:g id="version_number" example="1.0.1864.643521">%1$s</xliff:g></string> + <string name="version_text">Version <xliff:g id="VERSION_NUMBER" example="1.0.1864.643521">%1$s</xliff:g></string> <!-- User dictionary settings --> <!-- User dictionary settings. The summary of the listem item to go into the User dictionary settings screen. --> diff --git a/java/res/values/themes-common.xml b/java/res/values/themes-common.xml index 3bfd73a55..fc96d19a1 100644 --- a/java/res/values/themes-common.xml +++ b/java/res/values/themes-common.xml @@ -77,8 +77,6 @@ <item name="ignoreAltCodeKeyTimeout">@integer/config_ignore_alt_code_key_timeout</item> <item name="keyPreviewLayout">@layout/key_preview</item> <item name="keyPreviewHeight">@dimen/config_key_preview_height</item> - <item name="keyPreviewZoomInDuration">@integer/config_key_preview_zoom_in_duration</item> - <item name="keyPreviewZoomOutDuration">@integer/config_key_preview_zoom_out_duration</item> <item name="keyPreviewLingerTimeout">@integer/config_key_preview_linger_timeout</item> <item name="moreKeysKeyboardLayout">@layout/more_keys_keyboard</item> <item name="showMoreKeysKeyboardAtTouchedPoint">@bool/config_show_more_keys_keyboard_at_touched_point</item> diff --git a/java/res/xml-sw600dp/key_azerty3_right.xml b/java/res/xml-sw600dp/key_azerty3_right.xml index a5a6e9526..25b0e52b8 100644 --- a/java/res/xml-sw600dp/key_azerty3_right.xml +++ b/java/res/xml-sw600dp/key_azerty3_right.xml @@ -22,7 +22,7 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Key - latin:keyLabel=":" + latin:keySpec=":" latin:keyHintLabel=";" latin:moreKeys=";" latin:keyStyle="hasShiftedLetterHintStyle" /> diff --git a/java/res/xml-sw600dp/key_colemak_colon.xml b/java/res/xml-sw600dp/key_colemak_colon.xml index a5a6e9526..25b0e52b8 100644 --- a/java/res/xml-sw600dp/key_colemak_colon.xml +++ b/java/res/xml-sw600dp/key_colemak_colon.xml @@ -22,7 +22,7 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Key - latin:keyLabel=":" + latin:keySpec=":" latin:keyHintLabel=";" latin:moreKeys=";" latin:keyStyle="hasShiftedLetterHintStyle" /> diff --git a/java/res/xml-sw600dp/key_f1.xml b/java/res/xml-sw600dp/key_f1.xml index 530f7d63b..ba78a6430 100644 --- a/java/res/xml-sw600dp/key_f1.xml +++ b/java/res/xml-sw600dp/key_f1.xml @@ -26,11 +26,11 @@ latin:mode="email" > <Key - latin:keyLabel="\@" /> + latin:keySpec="\@" /> </case> <default> <Key - latin:keyLabel="/" /> + latin:keySpec="/" /> </default> </switch> </merge> diff --git a/java/res/xml-sw600dp/key_greek_semicolon.xml b/java/res/xml-sw600dp/key_greek_semicolon.xml index 3f09419b1..9e2c1fad0 100644 --- a/java/res/xml-sw600dp/key_greek_semicolon.xml +++ b/java/res/xml-sw600dp/key_greek_semicolon.xml @@ -22,7 +22,7 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Key - latin:keyLabel=";" + latin:keySpec=";" latin:keyHintLabel=":" latin:moreKeys=":" latin:keyStyle="hasShiftedLetterHintStyle" /> diff --git a/java/res/xml-sw600dp/key_question_exclamation.xml b/java/res/xml-sw600dp/key_question_exclamation.xml index 860a0be77..edee5c5dd 100644 --- a/java/res/xml-sw600dp/key_question_exclamation.xml +++ b/java/res/xml-sw600dp/key_question_exclamation.xml @@ -26,11 +26,11 @@ latin:mode="email|url" > <Key - latin:keyLabel="-" /> + latin:keySpec="-" /> </case> <default> <Key - latin:keyLabel="\?" + latin:keySpec="\?" latin:keyHintLabel="!" latin:moreKeys="!" latin:keyStyle="hasShiftedLetterHintStyle" /> diff --git a/java/res/xml-sw600dp/key_styles_common.xml b/java/res/xml-sw600dp/key_styles_common.xml index 4e4579b4f..6a79c6fc2 100644 --- a/java/res/xml-sw600dp/key_styles_common.xml +++ b/java/res/xml-sw600dp/key_styles_common.xml @@ -39,7 +39,6 @@ <!-- Base style for shift key. A single space is used for dummy label in moreKeys. --> <key-style latin:styleName="baseForShiftKeyStyle" - latin:code="!code/key_shift" latin:keyActionFlags="noKeyPreview" latin:keyLabelFlags="preserveCase" latin:moreKeys="!noPanelAutoMoreKey!, |!code/key_capslock" /> @@ -49,7 +48,7 @@ > <key-style latin:styleName="shiftKeyStyle" - latin:keyIcon="!icon/shift_key_shifted" + latin:keySpec="!icon/shift_key_shifted|!code/key_shift" latin:backgroundType="stickyOff" latin:parentStyle="baseForShiftKeyStyle" /> </case> @@ -58,71 +57,56 @@ > <key-style latin:styleName="shiftKeyStyle" - latin:keyIcon="!icon/shift_key_shifted" + latin:keySpec="!icon/shift_key_shifted|!code/key_shift" latin:backgroundType="stickyOn" latin:parentStyle="baseForShiftKeyStyle" /> </case> <default> <key-style latin:styleName="shiftKeyStyle" - latin:keyIcon="!icon/shift_key" + latin:keySpec="!icon/shift_key|!code/key_shift" latin:backgroundType="stickyOff" latin:parentStyle="baseForShiftKeyStyle" /> </default> </switch> <key-style latin:styleName="deleteKeyStyle" - latin:code="!code/key_delete" - latin:keyIcon="!icon/delete_key" + latin:keySpec="!icon/delete_key|!code/key_delete" latin:keyActionFlags="isRepeatable|noKeyPreview" latin:backgroundType="functional" /> <include latin:keyboardLayout="@xml/key_styles_enter" /> - <!-- Override defaultEnterKeyStyle in key_styles_enter.xml --> - <key-style - latin:styleName="defaultEnterKeyStyle" - latin:code="!code/key_enter" - latin:keyIcon="!icon/enter_key" - latin:keyLabelFlags="preserveCase|autoXScale|followKeyLargeLabelRatio" - latin:keyActionFlags="noKeyPreview" - latin:backgroundType="functional" - latin:parentStyle="navigateMoreKeysStyle" /> <key-style latin:styleName="spaceKeyStyle" - latin:code="!code/key_space" + latin:keySpec=" |!code/key_space" latin:keyActionFlags="noKeyPreview|enableLongPress" /> <!-- U+200C: ZERO WIDTH NON-JOINER U+200D: ZERO WIDTH JOINER --> <key-style latin:styleName="zwnjKeyStyle" - latin:code="0x200C" - latin:keyIcon="!icon/zwnj_key" + latin:keySpec="!icon/zwnj_key|‌" latin:moreKeys="!icon/zwj_key|‍" latin:keyLabelFlags="hasPopupHint" latin:keyActionFlags="noKeyPreview" /> <key-style latin:styleName="shortcutKeyStyle" - latin:code="!code/key_shortcut" - latin:keyIcon="!icon/shortcut_key" + latin:keySpec="!icon/shortcut_key|!code/key_shortcut" latin:keyIconDisabled="!icon/shortcut_key_disabled" latin:keyActionFlags="noKeyPreview" latin:backgroundType="functional" /> <key-style latin:styleName="languageSwitchKeyStyle" - latin:code="!code/key_language_switch" - latin:keyIcon="!icon/language_switch_key" + latin:keySpec="!icon/language_switch_key|!code/key_language_switch" latin:keyActionFlags="noKeyPreview|altCodeWhileTyping|enableLongPress" latin:altCode="!code/key_space" /> <key-style latin:styleName="emojiKeyStyle" - latin:code="!code/key_emoji" - latin:keyIcon="!icon/emoji_key" + latin:keySpec="!icon/emoji_key|!code/key_emoji" latin:keyActionFlags="noKeyPreview" latin:backgroundType="functional" /> <key-style latin:styleName="settingsKeyStyle" - latin:code="!code/key_settings" - latin:keyIcon="!icon/settings_key" + latin:keySpec="!icon/settings_key|!code/key_settings" latin:keyActionFlags="noKeyPreview" latin:backgroundType="functional" /> <switch> @@ -132,8 +116,7 @@ > <key-style latin:styleName="tabKeyStyle" - latin:code="!code/key_action_previous" - latin:keyIcon="!icon/tab_key" + latin:keySpec="!icon/tab_key|!code/key_action_previous" latin:keyIconPreview="!icon/tab_key_preview" latin:backgroundType="functional" /> </case> @@ -143,16 +126,14 @@ > <key-style latin:styleName="tabKeyStyle" - latin:code="!code/key_action_next" - latin:keyIcon="!icon/tab_key" + latin:keySpec="!icon/tab_key|!code/key_action_next" latin:keyIconPreview="!icon/tab_key_preview" latin:backgroundType="functional" /> </case> <default> <key-style latin:styleName="tabKeyStyle" - latin:code="!code/key_tab" - latin:keyIcon="!icon/tab_key" + latin:keySpec="!icon/tab_key|!code/key_tab" latin:keyIconPreview="!icon/tab_key_preview" latin:backgroundType="functional" /> </default> @@ -164,27 +145,23 @@ latin:backgroundType="functional" /> <key-style latin:styleName="toSymbolKeyStyle" - latin:code="!code/key_switch_alpha_symbol" - latin:keyLabel="!text/label_to_symbol_key" + latin:keySpec="!text/label_to_symbol_key|!code/key_switch_alpha_symbol" latin:parentStyle="baseForLayoutSwitchKeyStyle" /> <key-style latin:styleName="toAlphaKeyStyle" - latin:code="!code/key_switch_alpha_symbol" - latin:keyLabel="!text/label_to_alpha_key" + latin:keySpec="!text/label_to_alpha_key|!code/key_switch_alpha_symbol" latin:parentStyle="baseForLayoutSwitchKeyStyle" /> <key-style latin:styleName="toMoreSymbolKeyStyle" - latin:code="!code/key_shift" - latin:keyLabel="!text/label_to_more_symbol_for_tablet_key" + latin:keySpec="!text/label_to_more_symbol_for_tablet_key|!code/key_shift" latin:parentStyle="baseForLayoutSwitchKeyStyle" /> <key-style latin:styleName="backFromMoreSymbolKeyStyle" - latin:code="!code/key_shift" - latin:keyLabel="!text/label_to_symbol_key" + latin:keySpec="!text/label_to_symbol_key|!code/key_shift" latin:parentStyle="baseForLayoutSwitchKeyStyle" /> <key-style latin:styleName="comKeyStyle" - latin:keyLabel="!text/keylabel_for_popular_domain|!text/keylabel_for_popular_domain" + latin:keySpec="!text/keylabel_for_popular_domain|!text/keylabel_for_popular_domain" latin:keyLabelFlags="autoXScale|fontNormal|hasPopupHint|preserveCase" latin:moreKeys="!text/more_keys_for_popular_domain" /> </merge> diff --git a/java/res/xml-sw600dp/key_styles_enter.xml b/java/res/xml-sw600dp/key_styles_enter.xml index 1d8ccfae3..38a38fd45 100644 --- a/java/res/xml-sw600dp/key_styles_enter.xml +++ b/java/res/xml-sw600dp/key_styles_enter.xml @@ -99,22 +99,11 @@ <!-- Enter key style --> <key-style latin:styleName="defaultEnterKeyStyle" - latin:code="!code/key_enter" - latin:keyIcon="!icon/enter_key" + latin:keySpec="!icon/enter_key|!code/key_enter" latin:keyLabelFlags="preserveCase|autoXScale|followKeyLabelRatio" latin:keyActionFlags="noKeyPreview" latin:backgroundType="functional" latin:parentStyle="navigateMoreKeysStyle" /> - <key-style - latin:styleName="shiftEnterKeyStyle" - latin:code="!code/key_shift_enter" - latin:parentStyle="defaultEnterKeyStyle" /> - <key-style - latin:styleName="defaultActionEnterKeyStyle" - latin:code="!code/key_enter" - latin:keyIcon="!icon/undefined" - latin:backgroundType="action" - latin:parentStyle="defaultEnterKeyStyle" /> <switch> <!-- Shift + Enter in textMultiLine field. --> <case @@ -123,63 +112,72 @@ > <key-style latin:styleName="enterKeyStyle" - latin:parentStyle="shiftEnterKeyStyle" /> + latin:keySpec="!text/label_go_key|!code/key_shift_enter" + latin:parentStyle="defaultEnterKeyStyle" /> </case> <case latin:imeAction="actionGo" > <key-style latin:styleName="enterKeyStyle" - latin:keyLabel="!text/label_go_key" - latin:parentStyle="defaultActionEnterKeyStyle" /> + latin:keySpec="!text/label_go_key|!code/key_enter" + latin:backgroundType="action" + latin:parentStyle="defaultEnterKeyStyle" /> </case> <case latin:imeAction="actionNext" > <key-style latin:styleName="enterKeyStyle" - latin:keyLabel="!text/label_next_key" - latin:parentStyle="defaultActionEnterKeyStyle" /> + latin:keySpec="!text/label_next_key|!code/key_enter" + latin:backgroundType="action" + latin:parentStyle="defaultEnterKeyStyle" /> </case> <case latin:imeAction="actionPrevious" > <key-style latin:styleName="enterKeyStyle" - latin:keyLabel="!text/label_previous_key" - latin:parentStyle="defaultActionEnterKeyStyle" /> + latin:keySpec="!text/label_previous_key|!code/key_enter" + latin:backgroundType="action" + latin:parentStyle="defaultEnterKeyStyle" /> </case> <case latin:imeAction="actionDone" > <key-style latin:styleName="enterKeyStyle" - latin:keyLabel="!text/label_done_key" - latin:parentStyle="defaultActionEnterKeyStyle" /> + latin:keySpec="!text/label_done_key|!code/key_enter" + latin:backgroundType="action" + latin:parentStyle="defaultEnterKeyStyle" /> </case> <case latin:imeAction="actionSend" > <key-style latin:styleName="enterKeyStyle" - latin:keyLabel="!text/label_send_key" - latin:parentStyle="defaultActionEnterKeyStyle" /> + latin:keySpec="!text/label_send_key|!code/key_enter" + latin:backgroundType="action" + latin:parentStyle="defaultEnterKeyStyle" /> </case> <case latin:imeAction="actionSearch" > <key-style latin:styleName="enterKeyStyle" - latin:keyIcon="!icon/search_key" - latin:parentStyle="defaultActionEnterKeyStyle" /> + latin:keySpec="!icon/search_key|!code/key_enter" + latin:backgroundType="action" + latin:parentStyle="defaultEnterKeyStyle" /> </case> <case latin:imeAction="actionCustomLabel" > <key-style latin:styleName="enterKeyStyle" + latin:keySpec="dummy_label|!code/key_enter" latin:keyLabelFlags="fromCustomActionLabel" - latin:parentStyle="defaultActionEnterKeyStyle" /> + latin:backgroundType="action" + latin:parentStyle="defaultEnterKeyStyle" /> </case> <!-- imeAction is either actionNone or actionUnspecified. --> <default> diff --git a/java/res/xml-sw600dp/keys_arabic3_left.xml b/java/res/xml-sw600dp/keys_arabic3_left.xml index 0f2ccc0ac..9b4031e55 100644 --- a/java/res/xml-sw600dp/keys_arabic3_left.xml +++ b/java/res/xml-sw600dp/keys_arabic3_left.xml @@ -23,10 +23,10 @@ > <!-- U+0630: "ذ" ARABIC LETTER THAL --> <Key - latin:keyLabel="ذ" + latin:keySpec="ذ" latin:keyLabelFlags="fontNormal" /> <!-- U+0626: "ئ" ARABIC LETTER YEH WITH HAMZA ABOVE --> <Key - latin:keyLabel="ئ" + latin:keySpec="ئ" latin:keyLabelFlags="fontNormal" /> </merge> diff --git a/java/res/xml-sw600dp/keys_comma_period.xml b/java/res/xml-sw600dp/keys_comma_period.xml index 55302aeab..eda96b288 100644 --- a/java/res/xml-sw600dp/keys_comma_period.xml +++ b/java/res/xml-sw600dp/keys_comma_period.xml @@ -22,14 +22,14 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Key - latin:keyLabel="!text/keylabel_for_tablet_comma" + latin:keySpec="!text/keylabel_for_tablet_comma" latin:keyHintLabel="!text/keyhintlabel_for_tablet_comma" latin:keyLabelFlags="hasPopupHint" latin:moreKeys="!text/more_keys_for_tablet_comma" latin:backgroundType="functional" latin:keyStyle="hasShiftedLetterHintStyle" /> <Key - latin:keyLabel="!text/keylabel_for_tablet_period" + latin:keySpec="!text/keylabel_for_tablet_period" latin:keyHintLabel="!text/keyhintlabel_for_tablet_period" latin:keyLabelFlags="hasPopupHint" latin:moreKeys="!text/more_keys_for_tablet_period" diff --git a/java/res/xml-sw600dp/keys_dvorak_123.xml b/java/res/xml-sw600dp/keys_dvorak_123.xml index 58416abb4..91ceb1c43 100644 --- a/java/res/xml-sw600dp/keys_dvorak_123.xml +++ b/java/res/xml-sw600dp/keys_dvorak_123.xml @@ -26,31 +26,31 @@ latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted" > <Key - latin:keyLabel=""" + latin:keySpec=""" latin:keyHintLabel="1" latin:additionalMoreKeys="1" /> <Key - latin:keyLabel="<" + latin:keySpec="<" latin:keyHintLabel="2" latin:additionalMoreKeys="2" /> <Key - latin:keyLabel=">" + latin:keySpec=">" latin:keyHintLabel="3" latin:additionalMoreKeys="3" /> </case> <default> <Key - latin:keyLabel="\'" + latin:keySpec="\'" latin:keyHintLabel="1" latin:additionalMoreKeys="1" latin:moreKeys="!,"" /> <Key - latin:keyLabel="," + latin:keySpec="," latin:keyHintLabel="2" latin:additionalMoreKeys="2" latin:moreKeys="\?,<" /> <Key - latin:keyLabel="." + latin:keySpec="." latin:keyHintLabel="3" latin:additionalMoreKeys="3" latin:moreKeys=">" /> diff --git a/java/res/xml-sw600dp/keys_exclamation_question.xml b/java/res/xml-sw600dp/keys_exclamation_question.xml index fd849222d..116bef2be 100644 --- a/java/res/xml-sw600dp/keys_exclamation_question.xml +++ b/java/res/xml-sw600dp/keys_exclamation_question.xml @@ -22,9 +22,9 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Key - latin:keyLabel="!" + latin:keySpec="!" latin:moreKeys="!text/more_keys_for_exclamation" /> <Key - latin:keyLabel="\?" + latin:keySpec="\?" latin:moreKeys="!text/more_keys_for_question" /> </merge> diff --git a/java/res/xml-sw600dp/keys_farsi3_right.xml b/java/res/xml-sw600dp/keys_farsi3_right.xml index 3c91ae92d..45d128628 100644 --- a/java/res/xml-sw600dp/keys_farsi3_right.xml +++ b/java/res/xml-sw600dp/keys_farsi3_right.xml @@ -23,10 +23,10 @@ > <!-- U+0622: "آ" ARABIC LETTER ALEF WITH MADDA ABOVE --> <Key - latin:keyLabel="آ" + latin:keySpec="آ" latin:keyLabelFlags="fontNormal" /> <!-- U+0686: "چ" ARABIC LETTER TCHEH --> <Key - latin:keyLabel="چ" + latin:keySpec="چ" latin:keyLabelFlags="fontNormal" /> </merge> diff --git a/java/res/xml-sw600dp/keys_pcqwerty2_right3.xml b/java/res/xml-sw600dp/keys_pcqwerty2_right3.xml index 324e025ed..ab99ec574 100644 --- a/java/res/xml-sw600dp/keys_pcqwerty2_right3.xml +++ b/java/res/xml-sw600dp/keys_pcqwerty2_right3.xml @@ -26,17 +26,17 @@ latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted" > <Key - latin:keyLabel="[" + latin:keySpec="[" latin:keyHintLabel="{" latin:additionalMoreKeys="{" latin:keyStyle="hasShiftedLetterHintStyle" /> <Key - latin:keyLabel="]" + latin:keySpec="]" latin:keyHintLabel="}" latin:additionalMoreKeys="}" latin:keyStyle="hasShiftedLetterHintStyle" /> <Key - latin:keyLabel="\\" + latin:keySpec="\\" latin:keyHintLabel="|" latin:additionalMoreKeys="\\|" latin:keyStyle="hasShiftedLetterHintStyle" /> @@ -44,11 +44,11 @@ <!-- keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted" --> <default> <Key - latin:keyLabel="{" /> + latin:keySpec="{" /> <Key - latin:keyLabel="}" /> + latin:keySpec="}" /> <Key - latin:keyLabel="|" /> + latin:keySpec="|" /> </default> </switch> </merge>
\ No newline at end of file diff --git a/java/res/xml-sw600dp/keys_pcqwerty3_right2.xml b/java/res/xml-sw600dp/keys_pcqwerty3_right2.xml index 254b5e571..54433964f 100644 --- a/java/res/xml-sw600dp/keys_pcqwerty3_right2.xml +++ b/java/res/xml-sw600dp/keys_pcqwerty3_right2.xml @@ -26,12 +26,12 @@ latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted" > <Key - latin:keyLabel=";" + latin:keySpec=";" latin:keyHintLabel=":" latin:additionalMoreKeys=":" latin:keyStyle="hasShiftedLetterHintStyle" /> <Key - latin:keyLabel="\'" + latin:keySpec="\'" latin:keyHintLabel=""" latin:additionalMoreKeys=""" latin:keyStyle="hasShiftedLetterHintStyle" @@ -40,9 +40,9 @@ <!-- keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted" --> <default> <Key - latin:keyLabel=":" /> + latin:keySpec=":" /> <Key - latin:keyLabel=""" + latin:keySpec=""" latin:moreKeys="!fixedColumnOrder!3,!text/double_quotes,!text/single_quotes" /> </default> </switch> diff --git a/java/res/xml-sw600dp/keys_pcqwerty4_right3.xml b/java/res/xml-sw600dp/keys_pcqwerty4_right3.xml index 46a1c85dc..c95ca2ee7 100644 --- a/java/res/xml-sw600dp/keys_pcqwerty4_right3.xml +++ b/java/res/xml-sw600dp/keys_pcqwerty4_right3.xml @@ -26,17 +26,17 @@ latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted" > <Key - latin:keyLabel="," + latin:keySpec="," latin:keyHintLabel="<" latin:additionalMoreKeys="<" latin:keyStyle="hasShiftedLetterHintStyle" /> <Key - latin:keyLabel="." + latin:keySpec="." latin:keyHintLabel=">" latin:additionalMoreKeys=">" latin:keyStyle="hasShiftedLetterHintStyle" /> <Key - latin:keyLabel="/" + latin:keySpec="/" latin:keyHintLabel="\?" latin:additionalMoreKeys="\?" latin:keyStyle="hasShiftedLetterHintStyle" @@ -51,13 +51,13 @@ U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK --> <Key - latin:keyLabel="<" + latin:keySpec="<" latin:moreKeys="!fixedColumnOrder!3,‹,≤,«" /> <Key - latin:keyLabel=">" + latin:keySpec=">" latin:moreKeys="!fixedColumnOrder!3,›,≥,»" /> <Key - latin:keyLabel="\?" + latin:keySpec="\?" latin:moreKeys="!text/more_keys_for_question" /> </default> </switch> diff --git a/java/res/xml-sw600dp/row_dvorak4.xml b/java/res/xml-sw600dp/row_dvorak4.xml index 11b403452..2ba6a491b 100644 --- a/java/res/xml-sw600dp/row_dvorak4.xml +++ b/java/res/xml-sw600dp/row_dvorak4.xml @@ -39,7 +39,7 @@ <include latin:keyboardLayout="@xml/key_question_exclamation" /> <Key - latin:keyLabel="-" + latin:keySpec="-" latin:keyHintLabel="_" latin:moreKeys="_" latin:keyStyle="hasShiftedLetterHintStyle" /> diff --git a/java/res/xml-sw600dp/rowkeys_dvorak3.xml b/java/res/xml-sw600dp/rowkeys_dvorak3.xml index 2148bb2c7..edc68a3af 100644 --- a/java/res/xml-sw600dp/rowkeys_dvorak3.xml +++ b/java/res/xml-sw600dp/rowkeys_dvorak3.xml @@ -22,26 +22,26 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Key - latin:keyLabel="q" /> + latin:keySpec="q" /> <Key - latin:keyLabel="j" + latin:keySpec="j" latin:moreKeys="!text/more_keys_for_j" /> <Key - latin:keyLabel="k" + latin:keySpec="k" latin:moreKeys="!text/more_keys_for_k" /> <Key - latin:keyLabel="x" /> + latin:keySpec="x" /> <Key - latin:keyLabel="b" /> + latin:keySpec="b" /> <Key - latin:keyLabel="m" /> + latin:keySpec="m" /> <Key - latin:keyLabel="w" + latin:keySpec="w" latin:moreKeys="!text/more_keys_for_w" /> <Key - latin:keyLabel="v" + latin:keySpec="v" latin:moreKeys="!text/more_keys_for_v" /> <Key - latin:keyLabel="z" + latin:keySpec="z" latin:moreKeys="!text/more_keys_for_z" /> </merge> diff --git a/java/res/xml-sw600dp/rowkeys_pcqwerty1.xml b/java/res/xml-sw600dp/rowkeys_pcqwerty1.xml index ae6bab79c..5389e2201 100644 --- a/java/res/xml-sw600dp/rowkeys_pcqwerty1.xml +++ b/java/res/xml-sw600dp/rowkeys_pcqwerty1.xml @@ -22,66 +22,66 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Key - latin:keyLabel="`" + latin:keySpec="`" latin:keyHintLabel="~" latin:additionalMoreKeys="~" latin:keyStyle="hasShiftedLetterHintStyle" /> <Key - latin:keyLabel="1" + latin:keySpec="1" latin:keyHintLabel="!" latin:additionalMoreKeys="!" latin:keyStyle="hasShiftedLetterHintStyle" latin:moreKeys="!text/more_keys_for_exclamation,!text/more_keys_for_symbols_1" /> <Key - latin:keyLabel="2" + latin:keySpec="2" latin:keyHintLabel="\@" latin:additionalMoreKeys="\@" latin:keyStyle="hasShiftedLetterHintStyle" latin:moreKeys="!text/more_keys_for_symbols_2" /> <Key - latin:keyLabel="3" + latin:keySpec="3" latin:keyHintLabel="\#" latin:additionalMoreKeys="\#" latin:keyStyle="hasShiftedLetterHintStyle" latin:moreKeys="!text/more_keys_for_symbols_3" /> <Key - latin:keyLabel="4" + latin:keySpec="4" latin:keyHintLabel="$" latin:additionalMoreKeys="$" latin:keyStyle="hasShiftedLetterHintStyle" latin:moreKeys="!text/more_keys_for_symbols_4" /> <Key - latin:keyLabel="5" + latin:keySpec="5" latin:keyHintLabel="%" latin:additionalMoreKeys="\\%" latin:keyStyle="hasShiftedLetterHintStyle" latin:moreKeys="!text/more_keys_for_symbols_5" /> <Key - latin:keyLabel="6" + latin:keySpec="6" latin:keyHintLabel="^" latin:additionalMoreKeys="^" latin:keyStyle="hasShiftedLetterHintStyle" latin:moreKeys="!text/more_keys_for_symbols_6" /> <Key - latin:keyLabel="7" + latin:keySpec="7" latin:keyHintLabel="&" latin:additionalMoreKeys="&" latin:keyStyle="hasShiftedLetterHintStyle" latin:moreKeys="!text/more_keys_for_symbols_7" /> <Key - latin:keyLabel="8" + latin:keySpec="8" latin:keyHintLabel="*" latin:additionalMoreKeys="*" latin:keyStyle="hasShiftedLetterHintStyle" latin:moreKeys="!text/more_keys_for_symbols_8" /> <Key - latin:keyLabel="9" + latin:keySpec="9" latin:keyHintLabel="(" latin:additionalMoreKeys="(" latin:keyStyle="hasShiftedLetterHintStyle" latin:moreKeys="!text/more_keys_for_symbols_9" /> <Key - latin:keyLabel="0" + latin:keySpec="0" latin:keyHintLabel=")" latin:additionalMoreKeys=")" latin:keyStyle="hasShiftedLetterHintStyle" @@ -90,7 +90,7 @@ U+2014: "—" EM DASH U+00B7: "·" MIDDLE DOT --> <Key - latin:keyLabel="-" + latin:keySpec="-" latin:keyHintLabel="_" latin:additionalMoreKeys="_" latin:keyStyle="hasShiftedLetterHintStyle" @@ -99,7 +99,7 @@ U+2260: "≠" NOT EQUAL TO U+2248: "≈" ALMOST EQUAL TO --> <Key - latin:keyLabel="=" + latin:keySpec="=" latin:keyHintLabel="+" latin:additionalMoreKeys="+" latin:keyStyle="hasShiftedLetterHintStyle" diff --git a/java/res/xml-sw600dp/rows_number_normal.xml b/java/res/xml-sw600dp/rows_number_normal.xml index 37bf2e808..15f4cde08 100644 --- a/java/res/xml-sw600dp/rows_number_normal.xml +++ b/java/res/xml-sw600dp/rows_number_normal.xml @@ -23,29 +23,29 @@ > <Row> <Key - latin:keyLabel="-" + latin:keySpec="-" latin:keyStyle="numKeyStyle" latin:keyWidth="10%p" latin:backgroundType="functional" /> <Key - latin:keyLabel="+" + latin:keySpec="+" latin:keyStyle="numKeyStyle" latin:keyWidth="10%p" latin:backgroundType="functional" /> <Key - latin:keyLabel="." + latin:keySpec="." latin:keyStyle="numKeyStyle" latin:keyWidth="10%p" latin:backgroundType="functional" /> <Key - latin:keyLabel="1" + latin:keySpec="1" latin:keyStyle="numKeyStyle" latin:keyXPos="31%p" /> <Key - latin:keyLabel="2" + latin:keySpec="2" latin:keyStyle="numKeyStyle" /> <Key - latin:keyLabel="3" + latin:keySpec="3" latin:keyStyle="numKeyStyle" /> <Key latin:keyStyle="deleteKeyStyle" @@ -58,7 +58,7 @@ latin:keyWidth="10%p" latin:backgroundType="functional" /> <Key - latin:keyLabel="/" + latin:keySpec="/" latin:keyStyle="numKeyStyle" latin:keyWidth="10%p" latin:backgroundType="functional" /> @@ -67,7 +67,7 @@ latin:mode="time|datetime" > <Key - latin:keyLabel="," + latin:keySpec="," latin:keyLabelFlags="hasPopupHint" latin:moreKeys="!text/more_keys_for_am_pm" latin:keyStyle="numKeyStyle" @@ -76,21 +76,21 @@ </case> <default> <Key - latin:keyLabel="," + latin:keySpec="," latin:keyStyle="numKeyStyle" latin:keyWidth="10%p" latin:backgroundType="functional" /> </default> </switch> <Key - latin:keyLabel="4" + latin:keySpec="4" latin:keyStyle="numKeyStyle" latin:keyXPos="31%p" /> <Key - latin:keyLabel="5" + latin:keySpec="5" latin:keyStyle="numKeyStyle" /> <Key - latin:keyLabel="6" + latin:keySpec="6" latin:keyStyle="numKeyStyle" /> <Key latin:keyStyle="enterKeyStyle" @@ -99,12 +99,12 @@ </Row> <Row> <Key - latin:keyLabel="(" + latin:keySpec="(" latin:keyStyle="numKeyStyle" latin:keyWidth="10%p" latin:backgroundType="functional" /> <Key - latin:keyLabel=")" + latin:keySpec=")" latin:keyStyle="numKeyStyle" latin:keyWidth="10%p" latin:backgroundType="functional" /> @@ -113,28 +113,28 @@ latin:mode="time|datetime" > <Key - latin:keyLabel=":" + latin:keySpec=":" latin:keyStyle="numKeyStyle" latin:keyWidth="10%p" latin:backgroundType="functional" /> </case> <default> <Key - latin:keyLabel="=" + latin:keySpec="=" latin:keyStyle="numKeyStyle" latin:keyWidth="10%p" latin:backgroundType="functional" /> </default> </switch> <Key - latin:keyLabel="7" + latin:keySpec="7" latin:keyStyle="numKeyStyle" latin:keyXPos="31%p" /> <Key - latin:keyLabel="8" + latin:keySpec="8" latin:keyStyle="numKeyStyle" /> <Key - latin:keyLabel="9" + latin:keySpec="9" latin:keyStyle="numKeyStyle" /> <!-- Note: This Spacer prevents the above key from being marked as a right edge key. --> <Spacer /> @@ -148,10 +148,10 @@ latin:keyStyle="numStarKeyStyle" latin:keyXPos="31%p" /> <Key - latin:keyLabel="0" + latin:keySpec="0" latin:keyStyle="numKeyStyle" /> <Key - latin:keyLabel="\#" + latin:keySpec="\#" latin:keyStyle="numKeyStyle" /> <!-- Note: This Spacer prevents the above key from being marked as a right edge key. --> <Spacer diff --git a/java/res/xml-sw600dp/rows_phone.xml b/java/res/xml-sw600dp/rows_phone.xml index c4799bbcd..9022bc532 100644 --- a/java/res/xml-sw600dp/rows_phone.xml +++ b/java/res/xml-sw600dp/rows_phone.xml @@ -27,12 +27,12 @@ latin:keyboardLayout="@xml/key_styles_number" /> <Row> <Key - latin:keyLabel="-" + latin:keySpec="-" latin:keyStyle="numKeyStyle" latin:keyWidth="10%p" latin:backgroundType="functional" /> <Key - latin:keyLabel="+" + latin:keySpec="+" latin:keyStyle="numKeyStyle" latin:keyWidth="10%p" latin:backgroundType="functional" /> @@ -54,12 +54,12 @@ </Row> <Row> <Key - latin:keyLabel="," + latin:keySpec="," latin:keyStyle="numKeyStyle" latin:keyWidth="10%p" latin:backgroundType="functional" /> <Key - latin:keyLabel="." + latin:keySpec="." latin:keyStyle="numKeyStyle" latin:keyWidth="10%p" latin:backgroundType="functional" /> @@ -81,17 +81,17 @@ </Row> <Row> <Key - latin:keyLabel="(" + latin:keySpec="(" latin:keyStyle="numKeyStyle" latin:keyWidth="10%p" latin:backgroundType="functional" /> <Key - latin:keyLabel=")" + latin:keySpec=")" latin:keyStyle="numKeyStyle" latin:keyWidth="10%p" latin:backgroundType="functional" /> <Key - latin:keyLabel="N" + latin:keySpec="N" latin:keyStyle="numKeyStyle" latin:keyWidth="10%p" latin:backgroundType="functional" /> @@ -116,7 +116,7 @@ <Key latin:keyStyle="num0KeyStyle" /> <Key - latin:keyLabel="\#" + latin:keySpec="\#" latin:keyStyle="numKeyStyle" /> </Row> </merge> diff --git a/java/res/xml-sw600dp/rows_symbols.xml b/java/res/xml-sw600dp/rows_symbols.xml index 7a33f4923..a915c3351 100644 --- a/java/res/xml-sw600dp/rows_symbols.xml +++ b/java/res/xml-sw600dp/rows_symbols.xml @@ -51,9 +51,9 @@ latin:keyStyle="toMoreSymbolKeyStyle" latin:keyWidth="10.0%p" /> <Key - latin:keyLabel="\\" /> + latin:keySpec="\\" /> <Key - latin:keyLabel="=" /> + latin:keySpec="=" /> <include latin:keyboardLayout="@xml/rowkeys_symbols3" /> <Key diff --git a/java/res/xml-sw600dp/rows_symbols_shift.xml b/java/res/xml-sw600dp/rows_symbols_shift.xml index 79d1aa142..7ead4d5b1 100644 --- a/java/res/xml-sw600dp/rows_symbols_shift.xml +++ b/java/res/xml-sw600dp/rows_symbols_shift.xml @@ -54,10 +54,10 @@ latin:keyboardLayout="@xml/rowkeys_symbols_shift3" /> <!-- U+00A1: "¡" INVERTED EXCLAMATION MARK --> <Key - latin:keyLabel="¡" /> + latin:keySpec="¡" /> <!-- U+00BF: "¿" INVERTED QUESTION MARK --> <Key - latin:keyLabel="¿" /> + latin:keySpec="¿" /> <Key latin:keyStyle="backFromMoreSymbolKeyStyle" latin:keyWidth="fillRight" /> diff --git a/java/res/xml-v16/key_devanagari_sign_anusvara.xml b/java/res/xml-v16/key_devanagari_sign_anusvara.xml index 27c7bff5a..ee0f21dad 100644 --- a/java/res/xml-v16/key_devanagari_sign_anusvara.xml +++ b/java/res/xml-v16/key_devanagari_sign_anusvara.xml @@ -27,6 +27,6 @@ > <!-- U+0902: "ं" DEVANAGARI SIGN ANUSVARA --> <Key - latin:keyLabel="ं" + latin:keySpec="ं" latin:keyLabelFlags="fontNormal" /> </merge> diff --git a/java/res/xml-v16/key_devanagari_sign_candrabindu.xml b/java/res/xml-v16/key_devanagari_sign_candrabindu.xml index 03017dd78..29f41d143 100644 --- a/java/res/xml-v16/key_devanagari_sign_candrabindu.xml +++ b/java/res/xml-v16/key_devanagari_sign_candrabindu.xml @@ -43,6 +43,6 @@ <!-- U+0901: "ँ" DEVANAGARI SIGN CANDRABINDU --> <Key latin:keyStyle="moreKeysDevanagariSignCandrabindu" - latin:keyLabel="ँ" + latin:keySpec="ँ" latin:keyLabelFlags="fontNormal" /> </merge> diff --git a/java/res/xml-v16/key_devanagari_sign_nukta.xml b/java/res/xml-v16/key_devanagari_sign_nukta.xml index 09c347706..915779524 100644 --- a/java/res/xml-v16/key_devanagari_sign_nukta.xml +++ b/java/res/xml-v16/key_devanagari_sign_nukta.xml @@ -44,6 +44,6 @@ <!-- U+093C: "़" DEVANAGARI SIGN NUKTA --> <Key latin:keyStyle="moreKeysDevanagariSignNukta" - latin:keyLabel="़" + latin:keySpec="़" latin:keyLabelFlags="fontNormal" /> </merge> diff --git a/java/res/xml-v16/key_devanagari_vowel_sign_candra_o.xml b/java/res/xml-v16/key_devanagari_vowel_sign_candra_o.xml index 0316a7bde..2f1739948 100644 --- a/java/res/xml-v16/key_devanagari_vowel_sign_candra_o.xml +++ b/java/res/xml-v16/key_devanagari_vowel_sign_candra_o.xml @@ -27,6 +27,6 @@ > <!-- U+0949: "ॉ" DEVANAGARI VOWEL SIGN CANDRA O --> <Key - latin:keyLabel="ॉ" + latin:keySpec="ॉ" latin:keyLabelFlags="fontNormal" /> </merge> diff --git a/java/res/xml-v16/key_devanagari_vowel_sign_vocalic_r.xml b/java/res/xml-v16/key_devanagari_vowel_sign_vocalic_r.xml index 4dd3e85cc..dc7a0e090 100644 --- a/java/res/xml-v16/key_devanagari_vowel_sign_vocalic_r.xml +++ b/java/res/xml-v16/key_devanagari_vowel_sign_vocalic_r.xml @@ -50,6 +50,6 @@ <!-- U+0943: "ृ" DEVANAGARI VOWEL SIGN VOCALIC R --> <Key latin:keyStyle="moreKeysDevanagariVowelSignVocalicR" - latin:keyLabel="ृ" + latin:keySpec="ृ" latin:keyLabelFlags="fontNormal" /> </merge> diff --git a/java/res/xml-v16/keystyle_devanagari_sign_virama.xml b/java/res/xml-v16/keystyle_devanagari_sign_virama.xml index a2fbf53d3..764fb1fbb 100644 --- a/java/res/xml-v16/keystyle_devanagari_sign_virama.xml +++ b/java/res/xml-v16/keystyle_devanagari_sign_virama.xml @@ -28,6 +28,6 @@ <!-- U+094D: "्" DEVANAGARI SIGN VIRAMA --> <key-style latin:styleName="baseKeyDevanagariSignVirama" - latin:keyLabel="्" + latin:keySpec="्" latin:keyLabelFlags="fontNormal" /> </merge> diff --git a/java/res/xml-v16/keystyle_devanagari_sign_visarga.xml b/java/res/xml-v16/keystyle_devanagari_sign_visarga.xml index ac56cb77b..b047893a6 100644 --- a/java/res/xml-v16/keystyle_devanagari_sign_visarga.xml +++ b/java/res/xml-v16/keystyle_devanagari_sign_visarga.xml @@ -28,6 +28,6 @@ <!-- U+0903: "ः" DEVANAGARI SIGN VISARGA --> <key-style latin:styleName="baseKeyDevanagariSignVisarga" - latin:keyLabel="ः" + latin:keySpec="ः" latin:keyLabelFlags="fontNormal" /> </merge> diff --git a/java/res/xml-v16/keystyle_devanagari_vowel_sign_aa.xml b/java/res/xml-v16/keystyle_devanagari_vowel_sign_aa.xml index 8e256032c..fe9264b78 100644 --- a/java/res/xml-v16/keystyle_devanagari_vowel_sign_aa.xml +++ b/java/res/xml-v16/keystyle_devanagari_vowel_sign_aa.xml @@ -44,6 +44,6 @@ <key-style latin:styleName="baseKeyDevanagariVowelSignAa" latin:parentStyle="moreKeysDevanagariVowelSignAa" - latin:keyLabel="ा" + latin:keySpec="ा" latin:keyLabelFlags="fontNormal" /> </merge> diff --git a/java/res/xml-v16/keystyle_devanagari_vowel_sign_ai.xml b/java/res/xml-v16/keystyle_devanagari_vowel_sign_ai.xml index e79033971..fdb53bb2c 100644 --- a/java/res/xml-v16/keystyle_devanagari_vowel_sign_ai.xml +++ b/java/res/xml-v16/keystyle_devanagari_vowel_sign_ai.xml @@ -51,6 +51,6 @@ <key-style latin:styleName="baseKeyDevanagariVowelSignAi" latin:parentStyle="moreKeysDevanagariVowelSignAi" - latin:keyLabel="ै" + latin:keySpec="ै" latin:keyLabelFlags="fontNormal" /> </merge> diff --git a/java/res/xml-v16/keystyle_devanagari_vowel_sign_au.xml b/java/res/xml-v16/keystyle_devanagari_vowel_sign_au.xml index 43387a388..653e79e0f 100644 --- a/java/res/xml-v16/keystyle_devanagari_vowel_sign_au.xml +++ b/java/res/xml-v16/keystyle_devanagari_vowel_sign_au.xml @@ -43,6 +43,6 @@ <key-style latin:styleName="baseKeyDevanagariVowelSignAu" latin:parentStyle="moreKeysDevanagariVowelSignAu" - latin:keyLabel="ौ" + latin:keySpec="ौ" latin:keyLabelFlags="fontNormal" /> </merge> diff --git a/java/res/xml-v16/keystyle_devanagari_vowel_sign_e.xml b/java/res/xml-v16/keystyle_devanagari_vowel_sign_e.xml index c70d9d944..7240a2ca1 100644 --- a/java/res/xml-v16/keystyle_devanagari_vowel_sign_e.xml +++ b/java/res/xml-v16/keystyle_devanagari_vowel_sign_e.xml @@ -52,6 +52,6 @@ <key-style latin:styleName="baseKeyDevanagariVowelSignE" latin:parentStyle="moreKeysDevanagariVowelSignE" - latin:keyLabel="े" + latin:keySpec="े" latin:keyLabelFlags="fontNormal" /> </merge> diff --git a/java/res/xml-v16/keystyle_devanagari_vowel_sign_i.xml b/java/res/xml-v16/keystyle_devanagari_vowel_sign_i.xml index 845c1b02e..5a006f033 100644 --- a/java/res/xml-v16/keystyle_devanagari_vowel_sign_i.xml +++ b/java/res/xml-v16/keystyle_devanagari_vowel_sign_i.xml @@ -43,6 +43,6 @@ <key-style latin:styleName="baseKeyDevanagariVowelSignI" latin:parentStyle="moreKeysDevanagariVowelSignI" - latin:keyLabel="ि" + latin:keySpec="ि" latin:keyLabelFlags="fontNormal" /> </merge> diff --git a/java/res/xml-v16/keystyle_devanagari_vowel_sign_ii.xml b/java/res/xml-v16/keystyle_devanagari_vowel_sign_ii.xml index 0de9650be..a2b07fe5a 100644 --- a/java/res/xml-v16/keystyle_devanagari_vowel_sign_ii.xml +++ b/java/res/xml-v16/keystyle_devanagari_vowel_sign_ii.xml @@ -43,6 +43,6 @@ <key-style latin:styleName="baseKeyDevanagariVowelSignIi" latin:parentStyle="moreKeysDevanagariVowelSignIi" - latin:keyLabel="ी" + latin:keySpec="ी" latin:keyLabelFlags="fontNormal" /> </merge> diff --git a/java/res/xml-v16/keystyle_devanagari_vowel_sign_o.xml b/java/res/xml-v16/keystyle_devanagari_vowel_sign_o.xml index 06f07fac9..4b764cdee 100644 --- a/java/res/xml-v16/keystyle_devanagari_vowel_sign_o.xml +++ b/java/res/xml-v16/keystyle_devanagari_vowel_sign_o.xml @@ -45,6 +45,6 @@ <key-style latin:styleName="baseKeyDevanagariVowelSignO" latin:parentStyle="moreKeysDevanagariVowelSignO" - latin:keyLabel="ो" + latin:keySpec="ो" latin:keyLabelFlags="fontNormal" /> </merge> diff --git a/java/res/xml-v16/keystyle_devanagari_vowel_sign_u.xml b/java/res/xml-v16/keystyle_devanagari_vowel_sign_u.xml index 469a27bdf..18d485afe 100644 --- a/java/res/xml-v16/keystyle_devanagari_vowel_sign_u.xml +++ b/java/res/xml-v16/keystyle_devanagari_vowel_sign_u.xml @@ -44,6 +44,6 @@ <key-style latin:styleName="baseKeyDevanagariVowelSignU" latin:parentStyle="moreKeysDevanagariVowelSignU" - latin:keyLabel="ु" + latin:keySpec="ु" latin:keyLabelFlags="fontNormal" /> </merge> diff --git a/java/res/xml-v16/keystyle_devanagari_vowel_sign_uu.xml b/java/res/xml-v16/keystyle_devanagari_vowel_sign_uu.xml index 25867c086..d770ee6c5 100644 --- a/java/res/xml-v16/keystyle_devanagari_vowel_sign_uu.xml +++ b/java/res/xml-v16/keystyle_devanagari_vowel_sign_uu.xml @@ -44,6 +44,6 @@ <key-style latin:styleName="baseKeyDevanagariVowelSignUu" latin:parentStyle="moreKeysDevanagariVowelSignUu" - latin:keyLabel="ू" + latin:keySpec="ू" latin:keyLabelFlags="fontNormal" /> </merge> diff --git a/java/res/xml/key_armenian_sha.xml b/java/res/xml/key_armenian_sha.xml index 3865c1984..b6418f26f 100644 --- a/java/res/xml/key_armenian_sha.xml +++ b/java/res/xml/key_armenian_sha.xml @@ -23,6 +23,6 @@ > <!-- U+0577: "շ" ARMENIAN SMALL LETTER SHA --> <Key - latin:keyLabel="շ" + latin:keySpec="շ" latin:keyLabelFlags="fontNormal" /> </merge> diff --git a/java/res/xml/key_armenian_xeh.xml b/java/res/xml/key_armenian_xeh.xml index 007a5802d..cfc5bc0f9 100644 --- a/java/res/xml/key_armenian_xeh.xml +++ b/java/res/xml/key_armenian_xeh.xml @@ -23,6 +23,6 @@ > <!-- U+056D: "խ" ARMENIAN SMALL LETTER XEH --> <Key - latin:keyLabel="խ" + latin:keySpec="խ" latin:keyLabelFlags="fontNormal" /> </merge> diff --git a/java/res/xml/key_azerty3_right.xml b/java/res/xml/key_azerty3_right.xml index 65789ea69..85a066613 100644 --- a/java/res/xml/key_azerty3_right.xml +++ b/java/res/xml/key_azerty3_right.xml @@ -26,11 +26,11 @@ latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLockShifted" > <Key - latin:keyLabel="\?" /> + latin:keySpec="\?" /> </case> <default> <Key - latin:keyLabel="\'" + latin:keySpec="\'" latin:moreKeys="!text/more_keys_for_single_quote" /> </default> </switch> diff --git a/java/res/xml/key_colemak_colon.xml b/java/res/xml/key_colemak_colon.xml index 307b4ebca..9330be9a5 100644 --- a/java/res/xml/key_colemak_colon.xml +++ b/java/res/xml/key_colemak_colon.xml @@ -26,13 +26,13 @@ latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLockShifted" > <Key - latin:keyLabel=";" + latin:keySpec=";" latin:keyHintLabel="0" latin:additionalMoreKeys="0" /> </case> <default> <Key - latin:keyLabel=":" + latin:keySpec=":" latin:keyHintLabel="0" latin:additionalMoreKeys="0" latin:moreKeys=";" /> diff --git a/java/res/xml/key_devanagari_sign_anusvara.xml b/java/res/xml/key_devanagari_sign_anusvara.xml index 0acd3bcd4..5d7c01890 100644 --- a/java/res/xml/key_devanagari_sign_anusvara.xml +++ b/java/res/xml/key_devanagari_sign_anusvara.xml @@ -28,7 +28,6 @@ <!-- U+25CC: "◌" DOTTED CIRCLE U+0902: "ं" DEVANAGARI SIGN ANUSVARA --> <Key - latin:keyLabel="◌ं" - latin:code="0x0902" + latin:keySpec="◌ं|ं" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> </merge> diff --git a/java/res/xml/key_devanagari_sign_candrabindu.xml b/java/res/xml/key_devanagari_sign_candrabindu.xml index df0c4e054..9e9c371a7 100644 --- a/java/res/xml/key_devanagari_sign_candrabindu.xml +++ b/java/res/xml/key_devanagari_sign_candrabindu.xml @@ -44,7 +44,6 @@ U+0901: "ँ" DEVANAGARI SIGN CANDRABINDU --> <Key latin:keyStyle="moreKeysDevanagariSignCandrabindu" - latin:keyLabel="◌ँ" - latin:code="0x0901" + latin:keySpec="◌ँ|ँ" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> </merge> diff --git a/java/res/xml/key_devanagari_sign_nukta.xml b/java/res/xml/key_devanagari_sign_nukta.xml index f7a03ee90..b56eb0af3 100644 --- a/java/res/xml/key_devanagari_sign_nukta.xml +++ b/java/res/xml/key_devanagari_sign_nukta.xml @@ -46,7 +46,6 @@ U+093C: "़" DEVANAGARI SIGN NUKTA --> <Key latin:keyStyle="moreKeysDevanagariSignNukta" - latin:keyLabel="◌़" - latin:code="0x093C" + latin:keySpec="◌़|़" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> </merge> diff --git a/java/res/xml/key_devanagari_vowel_sign_candra_o.xml b/java/res/xml/key_devanagari_vowel_sign_candra_o.xml index 370fc5405..6d7d000b3 100644 --- a/java/res/xml/key_devanagari_vowel_sign_candra_o.xml +++ b/java/res/xml/key_devanagari_vowel_sign_candra_o.xml @@ -28,7 +28,6 @@ <!-- U+25CC: "◌" DOTTED CIRCLE U+0949: "ॉ" DEVANAGARI VOWEL SIGN CANDRA O --> <Key - latin:keyLabel="◌ॉ" - latin:code="0x0949" + latin:keySpec="◌ॉ|ॉ" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> </merge> diff --git a/java/res/xml/key_devanagari_vowel_sign_vocalic_r.xml b/java/res/xml/key_devanagari_vowel_sign_vocalic_r.xml index f150d7ed9..badea3e2c 100644 --- a/java/res/xml/key_devanagari_vowel_sign_vocalic_r.xml +++ b/java/res/xml/key_devanagari_vowel_sign_vocalic_r.xml @@ -52,7 +52,6 @@ U+0943: "ृ" DEVANAGARI VOWEL SIGN VOCALIC R --> <Key latin:keyStyle="moreKeysDevanagariVowelSignVocalicR" - latin:keyLabel="◌ृ" - latin:code="0x0943" + latin:keySpec="◌ृ|ृ" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> </merge> diff --git a/java/res/xml/key_f1.xml b/java/res/xml/key_f1.xml index 0e9d497b6..d3a753948 100644 --- a/java/res/xml/key_f1.xml +++ b/java/res/xml/key_f1.xml @@ -26,21 +26,21 @@ latin:mode="url" > <Key - latin:keyLabel="/" + latin:keySpec="/" latin:keyStyle="f1MoreKeysStyle" /> </case> <case latin:mode="email" > <Key - latin:keyLabel="\@" + latin:keySpec="\@" latin:keyStyle="f1MoreKeysStyle" /> </case> <case latin:supportsSwitchingToShortcutIme="false" > <Key - latin:keyLabel="!text/keylabel_for_comma" + latin:keySpec="!text/keylabel_for_comma" latin:keyLabelFlags="hasPopupHint" latin:additionalMoreKeys="!text/more_keys_for_comma" latin:keyStyle="f1MoreKeysStyle" /> @@ -55,7 +55,7 @@ <!-- latin:hasShortcutKey="false" --> <default> <Key - latin:keyLabel="!text/keylabel_for_comma" + latin:keySpec="!text/keylabel_for_comma" latin:keyLabelFlags="hasPopupHint" latin:additionalMoreKeys="!text/more_keys_for_comma,!text/shortcut_as_more_key" latin:keyStyle="f1MoreKeysStyle" /> diff --git a/java/res/xml/key_greek_semicolon.xml b/java/res/xml/key_greek_semicolon.xml index ae73a59f6..9001e4dfb 100644 --- a/java/res/xml/key_greek_semicolon.xml +++ b/java/res/xml/key_greek_semicolon.xml @@ -26,14 +26,14 @@ latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLockShifted" > <Key - latin:keyLabel=":" + latin:keySpec=":" latin:keyHintLabel="1" latin:moreKeys=";" latin:additionalMoreKeys="1" /> </case> <default> <Key - latin:keyLabel=";" + latin:keySpec=";" latin:keyHintLabel="1" latin:moreKeys=":" latin:additionalMoreKeys="1" /> diff --git a/java/res/xml/key_period.xml b/java/res/xml/key_period.xml index 838db25c3..edb4f9456 100644 --- a/java/res/xml/key_period.xml +++ b/java/res/xml/key_period.xml @@ -39,7 +39,7 @@ </case> <default> <Key - latin:keyLabel="!text/keylabel_for_period" + latin:keySpec="!text/keylabel_for_period" latin:keyHintLabel="!text/keyhintlabel_for_period" latin:keyLabelFlags="hasPopupHint|hasShiftedLetterHint" latin:moreKeys="!text/more_keys_for_period" diff --git a/java/res/xml/key_styles_common.xml b/java/res/xml/key_styles_common.xml index 9c40d627a..f04fc45bb 100644 --- a/java/res/xml/key_styles_common.xml +++ b/java/res/xml/key_styles_common.xml @@ -42,7 +42,6 @@ <!-- Base style for shift key. A single space is used for dummy label in moreKeys. --> <key-style latin:styleName="baseForShiftKeyStyle" - latin:code="!code/key_shift" latin:keyActionFlags="noKeyPreview" latin:keyLabelFlags="preserveCase" latin:moreKeys="!noPanelAutoMoreKey!, |!code/key_capslock" /> @@ -52,7 +51,7 @@ > <key-style latin:styleName="shiftKeyStyle" - latin:keyIcon="!icon/shift_key_shifted" + latin:keySpec="!icon/shift_key_shifted|!code/key_shift" latin:backgroundType="stickyOff" latin:parentStyle="baseForShiftKeyStyle" /> </case> @@ -61,99 +60,71 @@ > <key-style latin:styleName="shiftKeyStyle" - latin:keyIcon="!icon/shift_key_shifted" + latin:keySpec="!icon/shift_key_shifted|!code/key_shift" latin:backgroundType="stickyOn" latin:parentStyle="baseForShiftKeyStyle" /> </case> <default> <key-style latin:styleName="shiftKeyStyle" - latin:keyIcon="!icon/shift_key" + latin:keySpec="!icon/shift_key|!code/key_shift" latin:backgroundType="stickyOff" latin:parentStyle="baseForShiftKeyStyle" /> </default> </switch> <key-style latin:styleName="deleteKeyStyle" - latin:code="!code/key_delete" - latin:keyIcon="!icon/delete_key" + latin:keySpec="!icon/delete_key|!code/key_delete" latin:keyActionFlags="isRepeatable|noKeyPreview" latin:backgroundType="functional" /> + <!-- emojiKeyStyle must be defined before including @xml/key_syles_enter. --> + <key-style + latin:styleName="emojiKeyStyle" + latin:keySpec="!icon/emoji_key|!code/key_emoji" + latin:keyActionFlags="noKeyPreview" + latin:backgroundType="functional" /> <include latin:keyboardLayout="@xml/key_styles_enter" /> <key-style latin:styleName="spaceKeyStyle" - latin:code="!code/key_space" + latin:keySpec=" |!code/key_space" latin:keyActionFlags="noKeyPreview|enableLongPress" /> <!-- U+200C: ZERO WIDTH NON-JOINER U+200D: ZERO WIDTH JOINER --> <key-style latin:styleName="zwnjKeyStyle" - latin:code="0x200C" - latin:keyIcon="!icon/zwnj_key" + latin:keySpec="!icon/zwnj_key|‌" latin:moreKeys="!icon/zwj_key|‍" latin:keyLabelFlags="hasPopupHint" latin:keyActionFlags="noKeyPreview" /> <key-style latin:styleName="shortcutKeyStyle" - latin:code="!code/key_shortcut" - latin:keyIcon="!icon/shortcut_key" + latin:keySpec="!icon/shortcut_key|!code/key_shortcut" latin:keyIconDisabled="!icon/shortcut_key_disabled" latin:keyActionFlags="noKeyPreview|altCodeWhileTyping" latin:altCode="!code/key_space" latin:parentStyle="f1MoreKeysStyle" /> <key-style latin:styleName="settingsKeyStyle" - latin:code="!code/key_settings" - latin:keyIcon="!icon/settings_key" + latin:keySpec="!icon/settings_key|!code/key_settings" latin:keyActionFlags="noKeyPreview|altCodeWhileTyping" latin:altCode="!code/key_space" latin:backgroundType="functional" /> <key-style latin:styleName="languageSwitchKeyStyle" - latin:code="!code/key_language_switch" - latin:keyIcon="!icon/language_switch_key" + latin:keySpec="!icon/language_switch_key|!code/key_language_switch" latin:keyActionFlags="noKeyPreview|altCodeWhileTyping|enableLongPress" latin:altCode="!code/key_space" /> <key-style - latin:styleName="emojiKeyStyle" - latin:code="!code/key_emoji" - latin:keyIcon="!icon/emoji_key" - latin:keyActionFlags="noKeyPreview" - latin:backgroundType="functional" /> - <!-- Overriding EnterKeyStyle here --> - <switch> - <!-- Shift + Enter in textMultiLine field. --> - <case - latin:isMultiLine="true" - latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLockShifted" - > - <key-style - latin:styleName="enterKeyStyle" - latin:parentStyle="shiftEnterKeyStyle" /> - </case> - <!-- Smiley in textShortMessage field. - Overrides common enter key style. --> - <case - latin:mode="im" - > - <key-style - latin:styleName="enterKeyStyle" - latin:parentStyle="emojiKeyStyle" /> - </case> - </switch> - <key-style latin:styleName="tabKeyStyle" - latin:code="!code/key_tab" - latin:keyIcon="!icon/tab_key" + latin:keySpec="!icon/tab_key|!code/key_tab" latin:keyIconPreview="!icon/tab_key_preview" latin:backgroundType="functional" /> <!-- Note: This key style is not for functional tab key. This is used for the tab key which is laid out as normal letter key. --> <key-style latin:styleName="nonSpecialBackgroundTabKeyStyle" - latin:code="!code/key_tab" - latin:keyIcon="!icon/tab_key" + latin:keySpec="!icon/tab_key|!code/key_tab" latin:keyIconPreview="!icon/tab_key_preview" /> <key-style latin:styleName="baseForLayoutSwitchKeyStyle" @@ -161,30 +132,24 @@ latin:keyActionFlags="noKeyPreview" latin:backgroundType="functional" /> <key-style - latin:styleName="baseForToSymbolKeyStyle" - latin:keyLabel="!text/label_to_symbol_key" - latin:parentStyle="baseForLayoutSwitchKeyStyle" /> - <key-style latin:styleName="toSymbolKeyStyle" - latin:code="!code/key_switch_alpha_symbol" - latin:parentStyle="baseForToSymbolKeyStyle" /> + latin:keySpec="!text/label_to_symbol_key|!code/key_switch_alpha_symbol" + latin:parentStyle="baseForLayoutSwitchKeyStyle" /> <key-style latin:styleName="toAlphaKeyStyle" - latin:code="!code/key_switch_alpha_symbol" - latin:keyLabel="!text/label_to_alpha_key" + latin:keySpec="!text/label_to_alpha_key|!code/key_switch_alpha_symbol" latin:parentStyle="baseForLayoutSwitchKeyStyle" /> <key-style latin:styleName="toMoreSymbolKeyStyle" - latin:code="!code/key_shift" - latin:keyLabel="!text/label_to_more_symbol_key" + latin:keySpec="!text/label_to_more_symbol_key|!code/key_shift" latin:parentStyle="baseForLayoutSwitchKeyStyle" /> <key-style latin:styleName="backFromMoreSymbolKeyStyle" - latin:code="!code/key_shift" - latin:parentStyle="baseForToSymbolKeyStyle" /> + latin:keySpec="!text/label_to_symbol_key|!code/key_shift" + latin:parentStyle="baseForLayoutSwitchKeyStyle" /> <key-style latin:styleName="comKeyStyle" - latin:keyLabel="!text/keylabel_for_popular_domain|!text/keylabel_for_popular_domain" + latin:keySpec="!text/keylabel_for_popular_domain|!text/keylabel_for_popular_domain" latin:keyLabelFlags="autoXScale|fontNormal|hasPopupHint|preserveCase" latin:moreKeys="!text/more_keys_for_popular_domain" latin:backgroundType="functional" /> diff --git a/java/res/xml/key_styles_currency.xml b/java/res/xml/key_styles_currency.xml index 84c2abc08..ed40ebc58 100644 --- a/java/res/xml/key_styles_currency.xml +++ b/java/res/xml/key_styles_currency.xml @@ -113,21 +113,21 @@ U+00A2: "¢" CENT SIGN --> <key-style latin:styleName="currencyKeyStyle" - latin:keyLabel="!text/keylabel_for_currency" + latin:keySpec="!text/keylabel_for_currency" latin:moreKeys="!text/more_keys_for_currency" /> <key-style latin:styleName="moreCurrency1KeyStyle" - latin:keyLabel="£" /> + latin:keySpec="£" /> <key-style latin:styleName="moreCurrency2KeyStyle" - latin:keyLabel="€" /> + latin:keySpec="€" /> <key-style latin:styleName="moreCurrency3KeyStyle" - latin:keyLabel="$" + latin:keySpec="$" latin:moreKeys="¢" /> <key-style latin:styleName="moreCurrency4KeyStyle" - latin:keyLabel="¢" /> + latin:keySpec="¢" /> </case> <!-- GB: United Kingdom (Pound) --> <case @@ -140,21 +140,21 @@ U+20B1: "₱" PESO SIGN --> <key-style latin:styleName="currencyKeyStyle" - latin:keyLabel="£" + latin:keySpec="£" latin:moreKeys="¢,$,€,¥,₱" /> <key-style latin:styleName="moreCurrency1KeyStyle" - latin:keyLabel="€" /> + latin:keySpec="€" /> <key-style latin:styleName="moreCurrency2KeyStyle" - latin:keyLabel="¥" /> + latin:keySpec="¥" /> <key-style latin:styleName="moreCurrency3KeyStyle" - latin:keyLabel="$" + latin:keySpec="$" latin:moreKeys="¢" /> <key-style latin:styleName="moreCurrency4KeyStyle" - latin:keyLabel="¢" /> + latin:keySpec="¢" /> </case> <!-- ar: Arabic (Dollar and Rial) --> <default> diff --git a/java/res/xml/key_styles_currency_dollar.xml b/java/res/xml/key_styles_currency_dollar.xml index 674a3966d..a02c9bfa1 100644 --- a/java/res/xml/key_styles_currency_dollar.xml +++ b/java/res/xml/key_styles_currency_dollar.xml @@ -25,18 +25,18 @@ U+00A5: "¥" YEN SIGN --> <key-style latin:styleName="currencyKeyStyle" - latin:keyLabel="$" + latin:keySpec="$" latin:moreKeys="!text/more_keys_for_currency_dollar" /> <key-style latin:styleName="moreCurrency1KeyStyle" - latin:keyLabel="£" /> + latin:keySpec="£" /> <key-style latin:styleName="moreCurrency2KeyStyle" - latin:keyLabel="¢" /> + latin:keySpec="¢" /> <key-style latin:styleName="moreCurrency3KeyStyle" - latin:keyLabel="€" /> + latin:keySpec="€" /> <key-style latin:styleName="moreCurrency4KeyStyle" - latin:keyLabel="¥" /> + latin:keySpec="¥" /> </merge> diff --git a/java/res/xml/key_styles_currency_euro.xml b/java/res/xml/key_styles_currency_euro.xml index c1b5e0384..c2ae87bea 100644 --- a/java/res/xml/key_styles_currency_euro.xml +++ b/java/res/xml/key_styles_currency_euro.xml @@ -26,19 +26,19 @@ U+20B1: "₱" PESO SIGN --> <key-style latin:styleName="currencyKeyStyle" - latin:keyLabel="€" + latin:keySpec="€" latin:moreKeys="¢,£,$,¥,₱" /> <key-style latin:styleName="moreCurrency1KeyStyle" - latin:keyLabel="£" /> + latin:keySpec="£" /> <key-style latin:styleName="moreCurrency2KeyStyle" - latin:keyLabel="¥" /> + latin:keySpec="¥" /> <key-style latin:styleName="moreCurrency3KeyStyle" - latin:keyLabel="$" + latin:keySpec="$" latin:moreKeys="¢" /> <key-style latin:styleName="moreCurrency4KeyStyle" - latin:keyLabel="¢" /> + latin:keySpec="¢" /> </merge> diff --git a/java/res/xml/key_styles_enter.xml b/java/res/xml/key_styles_enter.xml index 083e6a67d..64d09b107 100644 --- a/java/res/xml/key_styles_enter.xml +++ b/java/res/xml/key_styles_enter.xml @@ -255,21 +255,13 @@ <!-- Enter key style --> <key-style latin:styleName="defaultEnterKeyStyle" - latin:code="!code/key_enter" - latin:keyIcon="!icon/enter_key" latin:keyLabelFlags="preserveCase|autoXScale|followKeyLabelRatio" latin:keyActionFlags="noKeyPreview" latin:backgroundType="functional" latin:parentStyle="navigateMoreKeysStyle" /> <key-style latin:styleName="shiftEnterKeyStyle" - latin:code="!code/key_shift_enter" - latin:parentStyle="defaultEnterKeyStyle" /> - <key-style - latin:styleName="defaultActionEnterKeyStyle" - latin:code="!code/key_enter" - latin:keyIcon="!icon/undefined" - latin:backgroundType="action" + latin:keySpec="!icon/enter_key|!code/key_shift_enter" latin:parentStyle="defaultEnterKeyStyle" /> <switch> <!-- Shift + Enter in textMultiLine field. --> @@ -281,66 +273,84 @@ latin:styleName="enterKeyStyle" latin:parentStyle="shiftEnterKeyStyle" /> </case> + <!-- Smiley in textShortMessage field. + This <case> should be after Shift + Enter <case> and before any of action <case>. --> + <case + latin:mode="im" + > + <key-style + latin:styleName="enterKeyStyle" + latin:parentStyle="emojiKeyStyle" /> + </case> <case latin:imeAction="actionGo" > <key-style latin:styleName="enterKeyStyle" - latin:keyLabel="!text/label_go_key" - latin:parentStyle="defaultActionEnterKeyStyle" /> + latin:keySpec="!text/label_go_key|!code/key_enter" + latin:backgroundType="action" + latin:parentStyle="defaultEnterKeyStyle" /> </case> <case latin:imeAction="actionNext" > <key-style latin:styleName="enterKeyStyle" - latin:keyLabel="!text/label_next_key" - latin:parentStyle="defaultActionEnterKeyStyle" /> + latin:keySpec="!text/label_next_key|!code/key_enter" + latin:backgroundType="action" + latin:parentStyle="defaultEnterKeyStyle" /> </case> <case latin:imeAction="actionPrevious" > <key-style latin:styleName="enterKeyStyle" - latin:keyLabel="!text/label_previous_key" - latin:parentStyle="defaultActionEnterKeyStyle" /> + latin:keySpec="!text/label_previous_key|!code/key_enter" + latin:backgroundType="action" + latin:parentStyle="defaultEnterKeyStyle" /> </case> <case latin:imeAction="actionDone" > <key-style latin:styleName="enterKeyStyle" - latin:keyLabel="!text/label_done_key" - latin:parentStyle="defaultActionEnterKeyStyle" /> + latin:keySpec="!text/label_done_key|!code/key_enter" + latin:backgroundType="action" + latin:parentStyle="defaultEnterKeyStyle" /> </case> <case latin:imeAction="actionSend" > <key-style latin:styleName="enterKeyStyle" - latin:keyLabel="!text/label_send_key" - latin:parentStyle="defaultActionEnterKeyStyle" /> + latin:keySpec="!text/label_send_key|!code/key_enter" + latin:backgroundType="action" + latin:parentStyle="defaultEnterKeyStyle" /> </case> <case latin:imeAction="actionSearch" > <key-style latin:styleName="enterKeyStyle" - latin:keyIcon="!icon/search_key" - latin:parentStyle="defaultActionEnterKeyStyle" /> + latin:keySpec="!icon/search_key|!code/key_enter" + latin:backgroundType="action" + latin:parentStyle="defaultEnterKeyStyle" /> </case> <case latin:imeAction="actionCustomLabel" > <key-style latin:styleName="enterKeyStyle" + latin:keySpec="dummy_label|!code/key_enter" latin:keyLabelFlags="fromCustomActionLabel" - latin:parentStyle="defaultActionEnterKeyStyle" /> + latin:backgroundType="action" + latin:parentStyle="defaultEnterKeyStyle" /> </case> <!-- imeAction is either actionNone or actionUnspecified. --> <default> <key-style latin:styleName="enterKeyStyle" + latin:keySpec="!icon/enter_key|!code/key_enter" latin:parentStyle="defaultEnterKeyStyle" /> </default> </switch> diff --git a/java/res/xml/key_styles_number.xml b/java/res/xml/key_styles_number.xml index 2e5a601b0..7136e1070 100644 --- a/java/res/xml/key_styles_number.xml +++ b/java/res/xml/key_styles_number.xml @@ -43,82 +43,74 @@ latin:parentStyle="numKeyStyle" /> <key-style latin:styleName="num0KeyStyle" - latin:keyLabel="0" + latin:keySpec="0" latin:parentStyle="numberKeyStyle" /> <key-style latin:styleName="num1KeyStyle" - latin:keyLabel="1" + latin:keySpec="1" latin:parentStyle="numberKeyStyle" /> <key-style latin:styleName="num2KeyStyle" - latin:keyLabel="2" + latin:keySpec="2" latin:keyHintLabel="ABC" latin:parentStyle="numberKeyStyle" /> <key-style latin:styleName="num3KeyStyle" - latin:keyLabel="3" + latin:keySpec="3" latin:keyHintLabel="DEF" latin:parentStyle="numberKeyStyle" /> <key-style latin:styleName="num4KeyStyle" - latin:keyLabel="4" + latin:keySpec="4" latin:keyHintLabel="GHI" latin:parentStyle="numberKeyStyle" /> <key-style latin:styleName="num5KeyStyle" - latin:keyLabel="5" + latin:keySpec="5" latin:keyHintLabel="JKL" latin:parentStyle="numberKeyStyle" /> <key-style latin:styleName="num6KeyStyle" - latin:keyLabel="6" + latin:keySpec="6" latin:keyHintLabel="MNO" latin:parentStyle="numberKeyStyle" /> <key-style latin:styleName="num7KeyStyle" - latin:keyLabel="7" + latin:keySpec="7" latin:keyHintLabel="PQRS" latin:parentStyle="numberKeyStyle" /> <key-style latin:styleName="num8KeyStyle" - latin:keyLabel="8" + latin:keySpec="8" latin:keyHintLabel="TUV" latin:parentStyle="numberKeyStyle" /> <key-style latin:styleName="num9KeyStyle" - latin:keyLabel="9" + latin:keySpec="9" latin:keyHintLabel="WXYZ" latin:parentStyle="numberKeyStyle" /> - <!-- U+002A: "*" ASTERISK - U+FF0A: "*" FULLWIDTH ASTERISK --> + <!-- U+FF0A: "*" FULLWIDTH ASTERISK --> <key-style latin:styleName="numStarKeyStyle" - latin:code="0x002A" - latin:keyLabel="*" + latin:keySpec="*|*" latin:parentStyle="numKeyStyle" /> <!-- Only for non-tablet device --> <key-style latin:styleName="numPhoneToSymbolKeyStyle" - latin:code="!code/key_switch_alpha_symbol" - latin:keyLabel="!text/label_to_phone_symbols_key" + latin:keySpec="!text/label_to_phone_symbols_key|!code/key_switch_alpha_symbol" latin:parentStyle="numModeKeyStyle" /> <key-style latin:styleName="numPhoneToNumericKeyStyle" - latin:code="!code/key_switch_alpha_symbol" - latin:keyLabel="!text/label_to_phone_numeric_key" + latin:keySpec="!text/label_to_phone_numeric_key|!code/key_switch_alpha_symbol" latin:parentStyle="numModeKeyStyle" /> - <!-- U+002C: "," COMMA --> <key-style latin:styleName="numPauseKeyStyle" - latin:code="0x002C" - latin:keyLabel="!text/label_pause_key" + latin:keySpec="!text/label_pause_key|," latin:keyLabelFlags="followKeyHintLabelRatio|autoXScale" latin:parentStyle="numKeyBaseStyle" /> - <!-- U+003B: ";" SEMICOLON --> <key-style latin:styleName="numWaitKeyStyle" - latin:code="0x003B" - latin:keyLabel="!text/label_wait_key" + latin:keySpec="!text/label_wait_key|;" latin:keyLabelFlags="followKeyHintLabelRatio|autoXScale" latin:parentStyle="numKeyBaseStyle" /> <key-style @@ -127,15 +119,13 @@ latin:parentStyle="tabKeyStyle" /> <key-style latin:styleName="numSpaceKeyStyle" - latin:code="!code/key_space" - latin:keyIcon="!icon/space_key_for_number_layout" + latin:keySpec="!icon/space_key_for_number_layout|!code/key_space" latin:keyActionFlags="enableLongPress" latin:parentStyle="numKeyBaseStyle" /> <!-- Override defaultEnterKeyStyle in key_styles_enter.xml --> <key-style latin:styleName="defaultEnterKeyStyle" - latin:code="!code/key_enter" - latin:keyIcon="!icon/enter_key" + latin:keySpec="!icon/enter_key|!code/key_enter" latin:keyLabelFlags="preserveCase|autoXScale|followKeyLargeLabelRatio" latin:keyActionFlags="noKeyPreview" latin:backgroundType="functional" diff --git a/java/res/xml/key_thai_kho_khuat.xml b/java/res/xml/key_thai_kho_khuat.xml index 0ffd0f924..84988f870 100644 --- a/java/res/xml/key_thai_kho_khuat.xml +++ b/java/res/xml/key_thai_kho_khuat.xml @@ -27,13 +27,13 @@ > <!-- U+0E05: "ฅ" THAI CHARACTER KHO KHON --> <Key - latin:keyLabel="ฅ" + latin:keySpec="ฅ" latin:keyLabelFlags="fontNormal" /> </case> <default> <!-- U+0E03: "ฃ" THAI CHARACTER KHO KHUAT --> <Key - latin:keyLabel="ฃ" + latin:keySpec="ฃ" latin:keyLabelFlags="fontNormal" /> </default> </switch> diff --git a/java/res/xml/keys_arabic3_left.xml b/java/res/xml/keys_arabic3_left.xml index 157af4a52..2b3e12c03 100644 --- a/java/res/xml/keys_arabic3_left.xml +++ b/java/res/xml/keys_arabic3_left.xml @@ -23,6 +23,6 @@ > <!-- U+0630: "ذ" ARABIC LETTER THAL --> <Key - latin:keyLabel="ذ" + latin:keySpec="ذ" latin:keyLabelFlags="fontNormal" /> </merge> diff --git a/java/res/xml/keys_comma_period_symbols.xml b/java/res/xml/keys_comma_period_symbols.xml index 880fe40d9..5221d34e3 100644 --- a/java/res/xml/keys_comma_period_symbols.xml +++ b/java/res/xml/keys_comma_period_symbols.xml @@ -22,10 +22,10 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Key - latin:keyLabel="!text/keylabel_for_comma" + latin:keySpec="!text/keylabel_for_comma" latin:moreKeys="!text/more_keys_for_comma" /> <!-- U+2026: "…" HORIZONTAL ELLIPSIS --> <Key - latin:keyLabel="." + latin:keySpec="." latin:moreKeys="…" /> </merge> diff --git a/java/res/xml/keys_curly_brackets.xml b/java/res/xml/keys_curly_brackets.xml index 6a4b1a945..da6dfc0fd 100644 --- a/java/res/xml/keys_curly_brackets.xml +++ b/java/res/xml/keys_curly_brackets.xml @@ -22,9 +22,7 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Key - latin:keyLabel="{" - latin:code="!code/key_left_curly_bracket" /> + latin:keySpec="{|!code/key_left_curly_bracket" /> <Key - latin:keyLabel="}" - latin:code="!code/key_right_curly_bracket" /> + latin:keySpec="}|!code/key_right_curly_bracket" /> </merge> diff --git a/java/res/xml/keys_dvorak_123.xml b/java/res/xml/keys_dvorak_123.xml index fa94f1f28..6efc7f2c5 100644 --- a/java/res/xml/keys_dvorak_123.xml +++ b/java/res/xml/keys_dvorak_123.xml @@ -26,7 +26,7 @@ latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted" > <Key - latin:keyLabel=""" + latin:keySpec=""" latin:keyHintLabel="1" latin:additionalMoreKeys="1" /> </case> @@ -34,7 +34,7 @@ latin:mode="url" > <Key - latin:keyLabel="/" + latin:keySpec="/" latin:keyHintLabel="1" latin:additionalMoreKeys="1" /> </case> @@ -42,13 +42,13 @@ latin:mode="email" > <Key - latin:keyLabel="\@" + latin:keySpec="\@" latin:keyHintLabel="1" latin:additionalMoreKeys="1" /> </case> <default> <Key - latin:keyLabel="\'" + latin:keySpec="\'" latin:keyHintLabel="1" latin:additionalMoreKeys="1" latin:moreKeys="!,"" /> @@ -59,22 +59,22 @@ latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted" > <Key - latin:keyLabel="<" + latin:keySpec="<" latin:keyHintLabel="2" latin:additionalMoreKeys="2" /> <Key - latin:keyLabel=">" + latin:keySpec=">" latin:keyHintLabel="3" latin:additionalMoreKeys="3" /> </case> <default> <Key - latin:keyLabel="," + latin:keySpec="," latin:keyHintLabel="2" latin:additionalMoreKeys="2" latin:moreKeys="\?,<" /> <Key - latin:keyLabel="." + latin:keySpec="." latin:keyHintLabel="3" latin:additionalMoreKeys="3" latin:moreKeys=">" /> diff --git a/java/res/xml/keys_farsi3_right.xml b/java/res/xml/keys_farsi3_right.xml index 77efb0a21..2618e478c 100644 --- a/java/res/xml/keys_farsi3_right.xml +++ b/java/res/xml/keys_farsi3_right.xml @@ -23,6 +23,6 @@ > <!-- U+0686: "چ" ARABIC LETTER TCHEH --> <Key - latin:keyLabel="چ" + latin:keySpec="چ" latin:keyLabelFlags="fontNormal" /> </merge> diff --git a/java/res/xml/keys_less_greater.xml b/java/res/xml/keys_less_greater.xml index 56d0727dd..3304e4c07 100644 --- a/java/res/xml/keys_less_greater.xml +++ b/java/res/xml/keys_less_greater.xml @@ -25,28 +25,25 @@ <case latin:languageCode="fa" > + <!-- TODO: Introduce !code/key_{left,right}_angle_quotation. --> <!-- U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK --> <Key - latin:keyLabel="«" - latin:code="0x00BB" + latin:keySpec="«|»" latin:backgroundType="functional" latin:moreKeys="!text/more_keys_for_less_than" /> <Key - latin:keyLabel="»" - latin:code="0x00AB" + latin:keySpec="»|«" latin:backgroundType="functional" latin:moreKeys="!text/more_keys_for_greater_than" /> </case> <default> <Key - latin:keyLabel="<" - latin:code="!code/key_less_than" + latin:keySpec="<|!code/key_less_than" latin:backgroundType="functional" latin:moreKeys="!text/more_keys_for_less_than" /> <Key - latin:keyLabel=">" - latin:code="!code/key_greater_than" + latin:keySpec=">|!code/key_greater_than" latin:backgroundType="functional" latin:moreKeys="!text/more_keys_for_greater_than" /> </default> diff --git a/java/res/xml/keys_parentheses.xml b/java/res/xml/keys_parentheses.xml index 25e89c930..ab33ef561 100644 --- a/java/res/xml/keys_parentheses.xml +++ b/java/res/xml/keys_parentheses.xml @@ -22,11 +22,9 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Key - latin:keyLabel="(" - latin:code="!code/key_left_parenthesis" + latin:keySpec="(|!code/key_left_parenthesis" latin:moreKeys="!text/more_keys_for_left_parenthesis" /> <Key - latin:keyLabel=")" - latin:code="!code/key_right_parenthesis" + latin:keySpec=")|!code/key_right_parenthesis" latin:moreKeys="!text/more_keys_for_right_parenthesis" /> </merge> diff --git a/java/res/xml/keys_pcqwerty2_right3.xml b/java/res/xml/keys_pcqwerty2_right3.xml index 6f86477da..9e62b09c2 100644 --- a/java/res/xml/keys_pcqwerty2_right3.xml +++ b/java/res/xml/keys_pcqwerty2_right3.xml @@ -26,23 +26,23 @@ latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted" > <Key - latin:keyLabel="[" + latin:keySpec="[" latin:additionalMoreKeys="{" /> <Key - latin:keyLabel="]" + latin:keySpec="]" latin:additionalMoreKeys="}" /> <Key - latin:keyLabel="\\" + latin:keySpec="\\" latin:additionalMoreKeys="\\|" /> </case> <!-- keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted" --> <default> <Key - latin:keyLabel="{" /> + latin:keySpec="{" /> <Key - latin:keyLabel="}" /> + latin:keySpec="}" /> <Key - latin:keyLabel="|" /> + latin:keySpec="|" /> </default> </switch> </merge> diff --git a/java/res/xml/keys_pcqwerty3_right2.xml b/java/res/xml/keys_pcqwerty3_right2.xml index 8da145b20..d889216c0 100644 --- a/java/res/xml/keys_pcqwerty3_right2.xml +++ b/java/res/xml/keys_pcqwerty3_right2.xml @@ -26,19 +26,19 @@ latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted" > <Key - latin:keyLabel=";" + latin:keySpec=";" latin:additionalMoreKeys=":" /> <Key - latin:keyLabel="\'" + latin:keySpec="\'" latin:additionalMoreKeys=""" latin:moreKeys="!fixedColumnOrder!4,!text/double_quotes,%,!text/single_quotes" /> </case> <!-- keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted" --> <default> <Key - latin:keyLabel=":" /> + latin:keySpec=":" /> <Key - latin:keyLabel=""" + latin:keySpec=""" latin:moreKeys="!fixedColumnOrder!3,!text/double_quotes,!text/single_quotes" /> </default> </switch> diff --git a/java/res/xml/keys_pcqwerty4_right3.xml b/java/res/xml/keys_pcqwerty4_right3.xml index a5d5a429c..f32d80908 100644 --- a/java/res/xml/keys_pcqwerty4_right3.xml +++ b/java/res/xml/keys_pcqwerty4_right3.xml @@ -26,13 +26,13 @@ latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted" > <Key - latin:keyLabel="," + latin:keySpec="," latin:additionalMoreKeys="<" /> <Key - latin:keyLabel="." + latin:keySpec="." latin:additionalMoreKeys=">" /> <Key - latin:keyLabel="/" + latin:keySpec="/" latin:additionalMoreKeys="\?" latin:moreKeys="!text/more_keys_for_question" /> </case> @@ -45,13 +45,13 @@ U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK --> <Key - latin:keyLabel="<" + latin:keySpec="<" latin:moreKeys="!fixedColumnOrder!3,‹,≤,«" /> <Key - latin:keyLabel=">" + latin:keySpec=">" latin:moreKeys="!fixedColumnOrder!3,›,≥,»" /> <Key - latin:keyLabel="\?" + latin:keySpec="\?" latin:moreKeys="!text/more_keys_for_question" /> </default> </switch> diff --git a/java/res/xml/keys_square_brackets.xml b/java/res/xml/keys_square_brackets.xml index 5c128fd0c..8f0dec54a 100644 --- a/java/res/xml/keys_square_brackets.xml +++ b/java/res/xml/keys_square_brackets.xml @@ -22,9 +22,7 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Key - latin:keyLabel="[" - latin:code="!code/key_left_square_bracket" /> + latin:keySpec="[|!code/key_left_square_bracket" /> <Key - latin:keyLabel="]" - latin:code="!code/key_right_square_bracket" /> + latin:keySpec="]|!code/key_right_square_bracket" /> </merge> diff --git a/java/res/xml/keystyle_devanagari_sign_virama.xml b/java/res/xml/keystyle_devanagari_sign_virama.xml index b22fbe842..5e0e10823 100644 --- a/java/res/xml/keystyle_devanagari_sign_virama.xml +++ b/java/res/xml/keystyle_devanagari_sign_virama.xml @@ -29,7 +29,6 @@ U+094D: "्" DEVANAGARI SIGN VIRAMA --> <key-style latin:styleName="baseKeyDevanagariSignVirama" - latin:keyLabel="◌्" - latin:code="0x094D" + latin:keySpec="◌्|्" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> </merge> diff --git a/java/res/xml/keystyle_devanagari_sign_visarga.xml b/java/res/xml/keystyle_devanagari_sign_visarga.xml index cb294951f..45f519a43 100644 --- a/java/res/xml/keystyle_devanagari_sign_visarga.xml +++ b/java/res/xml/keystyle_devanagari_sign_visarga.xml @@ -29,7 +29,6 @@ U+0903: "ः" DEVANAGARI SIGN VISARGA --> <key-style latin:styleName="baseKeyDevanagariSignVisarga" - latin:keyLabel="◌ः" - latin:code="0x0903" + latin:keySpec="◌ः|ः" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> </merge> diff --git a/java/res/xml/keystyle_devanagari_vowel_sign_aa.xml b/java/res/xml/keystyle_devanagari_vowel_sign_aa.xml index 2e78c53ec..97f98e328 100644 --- a/java/res/xml/keystyle_devanagari_vowel_sign_aa.xml +++ b/java/res/xml/keystyle_devanagari_vowel_sign_aa.xml @@ -46,7 +46,6 @@ <key-style latin:styleName="baseKeyDevanagariVowelSignAa" latin:parentStyle="moreKeysDevanagariVowelSignAa" - latin:keyLabel="◌ा" - latin:code="0x093E" + latin:keySpec="◌ा|ा" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> </merge> diff --git a/java/res/xml/keystyle_devanagari_vowel_sign_ai.xml b/java/res/xml/keystyle_devanagari_vowel_sign_ai.xml index 0554c0e15..4d1b2c514 100644 --- a/java/res/xml/keystyle_devanagari_vowel_sign_ai.xml +++ b/java/res/xml/keystyle_devanagari_vowel_sign_ai.xml @@ -53,7 +53,6 @@ <key-style latin:styleName="baseKeyDevanagariVowelSignAi" latin:parentStyle="moreKeysDevanagariVowelSignAi" - latin:keyLabel="◌ै" - latin:code="0x0948" + latin:keySpec="◌ै|ै" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> </merge> diff --git a/java/res/xml/keystyle_devanagari_vowel_sign_au.xml b/java/res/xml/keystyle_devanagari_vowel_sign_au.xml index 29a11a82e..66628b5ed 100644 --- a/java/res/xml/keystyle_devanagari_vowel_sign_au.xml +++ b/java/res/xml/keystyle_devanagari_vowel_sign_au.xml @@ -44,7 +44,6 @@ <key-style latin:styleName="baseKeyDevanagariVowelSignAu" latin:parentStyle="moreKeysDevanagariVowelSignAu" - latin:keyLabel="◌ौ" - latin:code="0x094C" + latin:keySpec="◌ौ|ौ" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> </merge> diff --git a/java/res/xml/keystyle_devanagari_vowel_sign_e.xml b/java/res/xml/keystyle_devanagari_vowel_sign_e.xml index edd29c791..de1d94974 100644 --- a/java/res/xml/keystyle_devanagari_vowel_sign_e.xml +++ b/java/res/xml/keystyle_devanagari_vowel_sign_e.xml @@ -53,7 +53,6 @@ <key-style latin:styleName="baseKeyDevanagariVowelSignE" latin:parentStyle="moreKeysDevanagariVowelSignE" - latin:keyLabel="◌े" - latin:code="0x0947" + latin:keySpec="◌े|े" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> </merge> diff --git a/java/res/xml/keystyle_devanagari_vowel_sign_i.xml b/java/res/xml/keystyle_devanagari_vowel_sign_i.xml index 200fed29f..d1d56c185 100644 --- a/java/res/xml/keystyle_devanagari_vowel_sign_i.xml +++ b/java/res/xml/keystyle_devanagari_vowel_sign_i.xml @@ -45,7 +45,6 @@ <key-style latin:styleName="baseKeyDevanagariVowelSignI" latin:parentStyle="moreKeysDevanagariVowelSignI" - latin:keyLabel="◌ि" - latin:code="0x093F" + latin:keySpec="◌ि|ि" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> </merge> diff --git a/java/res/xml/keystyle_devanagari_vowel_sign_ii.xml b/java/res/xml/keystyle_devanagari_vowel_sign_ii.xml index 6dc9951df..fd0ce77f8 100644 --- a/java/res/xml/keystyle_devanagari_vowel_sign_ii.xml +++ b/java/res/xml/keystyle_devanagari_vowel_sign_ii.xml @@ -45,7 +45,6 @@ <key-style latin:styleName="baseKeyDevanagariVowelSignIi" latin:parentStyle="moreKeysDevanagariVowelSignIi" - latin:keyLabel="◌ी" - latin:code="0x0940" + latin:keySpec="◌ी|ी" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> </merge> diff --git a/java/res/xml/keystyle_devanagari_vowel_sign_o.xml b/java/res/xml/keystyle_devanagari_vowel_sign_o.xml index 233ac8609..edc3bef0f 100644 --- a/java/res/xml/keystyle_devanagari_vowel_sign_o.xml +++ b/java/res/xml/keystyle_devanagari_vowel_sign_o.xml @@ -47,7 +47,6 @@ <key-style latin:styleName="baseKeyDevanagariVowelSignO" latin:parentStyle="moreKeysDevanagariVowelSignO" - latin:keyLabel="◌ो" - latin:code="0x094B" + latin:keySpec="◌ो|ो" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> </merge> diff --git a/java/res/xml/keystyle_devanagari_vowel_sign_u.xml b/java/res/xml/keystyle_devanagari_vowel_sign_u.xml index 7291b7099..c7de4fdd8 100644 --- a/java/res/xml/keystyle_devanagari_vowel_sign_u.xml +++ b/java/res/xml/keystyle_devanagari_vowel_sign_u.xml @@ -46,7 +46,6 @@ <key-style latin:styleName="baseKeyDevanagariVowelSignU" latin:parentStyle="moreKeysDevanagariVowelSignU" - latin:keyLabel="◌ु" - latin:code="0x0941" + latin:keySpec="◌ु|ु" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> </merge> diff --git a/java/res/xml/keystyle_devanagari_vowel_sign_uu.xml b/java/res/xml/keystyle_devanagari_vowel_sign_uu.xml index a95ab822d..6029d6d2b 100644 --- a/java/res/xml/keystyle_devanagari_vowel_sign_uu.xml +++ b/java/res/xml/keystyle_devanagari_vowel_sign_uu.xml @@ -46,7 +46,6 @@ <key-style latin:styleName="baseKeyDevanagariVowelSignUu" latin:parentStyle="moreKeysDevanagariVowelSignUu" - latin:keyLabel="◌ू" - latin:code="0x0942" + latin:keySpec="◌ू|ू" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> </merge> diff --git a/java/res/xml/prefs_for_debug.xml b/java/res/xml/prefs_for_debug.xml index 899e2b88e..81a5d98b9 100644 --- a/java/res/xml/prefs_for_debug.xml +++ b/java/res/xml/prefs_for_debug.xml @@ -14,68 +14,75 @@ limitations under the License. --> -<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" - android:title="@string/prefs_debug_mode" - android:key="english_ime_debug_settings"> - +<PreferenceScreen + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + android:title="@string/prefs_debug_mode" + android:key="english_ime_debug_settings" +> <CheckBoxPreference - android:key="enable_logging" - android:title="@string/prefs_enable_log" - android:summary="@string/prefs_description_log" - android:persistent="true" - android:defaultValue="false" /> - + android:key="enable_logging" + android:title="@string/prefs_enable_log" + android:summary="@string/prefs_description_log" + android:persistent="true" + android:defaultValue="false" /> <ListPreference - android:key="pref_keyboard_layout_20110916" - android:title="@string/keyboard_layout" - android:summary="%s" - android:persistent="true" - android:entryValues="@array/keyboard_layout_modes_values" - android:entries="@array/keyboard_layout_modes" - android:defaultValue="@string/config_default_keyboard_theme_index" /> - + android:key="pref_keyboard_layout_20110916" + android:title="@string/keyboard_layout" + android:summary="%s" + android:persistent="true" + android:entryValues="@array/keyboard_layout_modes_values" + android:entries="@array/keyboard_layout_modes" + android:defaultValue="@string/config_default_keyboard_theme_index" /> <CheckBoxPreference - android:key="debug_mode" - android:title="@string/prefs_debug_mode" - android:persistent="true" - android:defaultValue="false" /> - + android:key="debug_mode" + android:title="@string/prefs_debug_mode" + android:persistent="true" + android:defaultValue="false" /> <CheckBoxPreference - android:key="force_non_distinct_multitouch" - android:title="@string/prefs_force_non_distinct_multitouch" - android:persistent="true" - android:defaultValue="false" /> - + android:key="force_non_distinct_multitouch" + android:title="@string/prefs_force_non_distinct_multitouch" + android:persistent="true" + android:defaultValue="false" /> <CheckBoxPreference - android:key="usability_study_mode" - android:title="@string/prefs_usability_study_mode" - android:persistent="true" - android:defaultValue="false" /> - + android:key="usability_study_mode" + android:title="@string/prefs_usability_study_mode" + android:persistent="true" + android:defaultValue="false" /> + <com.android.inputmethod.latin.settings.SeekBarDialogPreference + android:key="pref_key_preview_show_up_start_scale" + android:title="@string/prefs_key_popup_show_up_start_scale_settings" + latin:maxValue="100" /> <!-- percent --> + <com.android.inputmethod.latin.settings.SeekBarDialogPreference + android:key="pref_key_preview_dismiss_end_scale" + android:title="@string/prefs_key_popup_dismiss_end_scale_settings" + latin:maxValue="100" /> <!-- percent --> + <com.android.inputmethod.latin.settings.SeekBarDialogPreference + android:key="pref_key_preview_show_up_duration" + android:title="@string/prefs_key_popup_show_up_duration_settings" + latin:maxValue="100" /> <!-- milliseconds --> + <com.android.inputmethod.latin.settings.SeekBarDialogPreference + android:key="pref_key_preview_dismiss_duration" + android:title="@string/prefs_key_popup_dismiss_duration_settings" + latin:maxValue="100" /> <!-- milliseconds --> <CheckBoxPreference android:defaultValue="false" android:key="use_only_personalization_dictionary_for_debug" android:persistent="true" android:title="@string/prefs_use_only_personalization_dictionary" /> - <PreferenceScreen android:key="read_external_dictionary" android:title="@string/prefs_read_external_dictionary" /> - <PreferenceScreen android:key="dump_contacts_dict" android:title="@string/prefs_dump_contacts_dict" /> - <PreferenceScreen android:key="dump_user_dict" android:title="@string/prefs_dump_user_dict" /> - <PreferenceScreen android:key="dump_user_history_dict" android:title="@string/prefs_dump_user_history_dict" /> - <PreferenceScreen android:key="dump_personalization_dict" android:title="@string/prefs_dump_personalization_dict" /> - </PreferenceScreen> diff --git a/java/res/xml/row_dvorak4.xml b/java/res/xml/row_dvorak4.xml index b78872fe4..0658079b2 100644 --- a/java/res/xml/row_dvorak4.xml +++ b/java/res/xml/row_dvorak4.xml @@ -28,7 +28,7 @@ latin:keyStyle="toSymbolKeyStyle" latin:keyWidth="15%p" /> <Key - latin:keyLabel="q" + latin:keySpec="q" latin:backgroundType="normal" latin:additionalMoreKeys="!text/shortcut_as_more_key" latin:keyStyle="f1MoreKeysStyle" /> @@ -36,7 +36,7 @@ latin:keyXPos="25%p" latin:keyboardLayout="@xml/key_space_5kw" /> <Key - latin:keyLabel="z" + latin:keySpec="z" latin:keyLabelFlags="hasPopupHint" latin:moreKeys="!text/more_keys_for_punctuation,!text/more_keys_for_z" /> <Key diff --git a/java/res/xml/row_symbols4.xml b/java/res/xml/row_symbols4.xml index 09d2a1971..09f6b628c 100644 --- a/java/res/xml/row_symbols4.xml +++ b/java/res/xml/row_symbols4.xml @@ -20,9 +20,9 @@ <merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Key - latin:keyLabel="_" /> + latin:keySpec="_" /> <Key - latin:keyLabel="/" /> + latin:keySpec="/" /> <include latin:keyboardLayout="@xml/key_space_symbols" /> <include diff --git a/java/res/xml/rowkeys_arabic1.xml b/java/res/xml/rowkeys_arabic1.xml index 3c0acf112..d5f142178 100644 --- a/java/res/xml/rowkeys_arabic1.xml +++ b/java/res/xml/rowkeys_arabic1.xml @@ -24,21 +24,21 @@ <!-- U+0636: "ض" ARABIC LETTER DAD U+0661: "١" ARABIC-INDIC DIGIT ONE --> <Key - latin:keyLabel="ض" + latin:keySpec="ض" latin:keyHintLabel="1" latin:additionalMoreKeys="1,١" latin:keyLabelFlags="fontNormal" /> <!-- U+0635: "ص" ARABIC LETTER SAD U+0662: "٢" ARABIC-INDIC DIGIT TWO --> <Key - latin:keyLabel="ص" + latin:keySpec="ص" latin:keyHintLabel="2" latin:additionalMoreKeys="2,٢" latin:keyLabelFlags="fontNormal" /> <!-- U+062B: "ث" ARABIC LETTER THEH U+0663: "٣" ARABIC-INDIC DIGIT THREE --> <Key - latin:keyLabel="ث" + latin:keySpec="ث" latin:keyHintLabel="3" latin:additionalMoreKeys="3,٣" latin:keyLabelFlags="fontNormal" /> @@ -47,7 +47,7 @@ U+0664: "٤" ARABIC-INDIC DIGIT FOUR --> <!-- TODO: DroidSansArabic lacks the glyph of U+06A8 ARABIC LETTER QAF WITH THREE DOTS ABOVE --> <Key - latin:keyLabel="ق" + latin:keySpec="ق" latin:keyHintLabel="4" latin:additionalMoreKeys="4,٤" latin:moreKeys="ڨ" @@ -60,7 +60,7 @@ <!-- TODO: DroidSansArabic lacks the glyph of U+06A2 ARABIC LETTER FEH WITH DOT MOVED BELOW --> <!-- TODO: DroidSansArabic lacks the glyph of U+06A5 ARABIC LETTER FEH WITH THREE DOTS BELOW --> <Key - latin:keyLabel="ف" + latin:keySpec="ف" latin:keyHintLabel="5" latin:additionalMoreKeys="5,٥" latin:moreKeys="ڤ,ڢ,ڥ" @@ -68,14 +68,14 @@ <!-- U+063A: "غ" ARABIC LETTER GHAIN U+0666: "٦" ARABIC-INDIC DIGIT SIX --> <Key - latin:keyLabel="غ" + latin:keySpec="غ" latin:keyHintLabel="6" latin:additionalMoreKeys="6,٦" latin:keyLabelFlags="fontNormal" /> <!-- U+0639: "ع" ARABIC LETTER AIN U+0667: "٧" ARABIC-INDIC DIGIT SEVEN --> <Key - latin:keyLabel="ع" + latin:keySpec="ع" latin:keyHintLabel="7" latin:additionalMoreKeys="7,٧" latin:keyLabelFlags="fontNormal" /> @@ -84,7 +84,7 @@ U+0647 U+200D: ARABIC LETTER HEH + ZERO WIDTH JOINER U+0668: "٨" ARABIC-INDIC DIGIT EIGHT --> <Key - latin:keyLabel="ه" + latin:keySpec="ه" latin:keyHintLabel="8" latin:additionalMoreKeys="8,٨" latin:moreKeys="ﻫ|ه‍" @@ -92,21 +92,21 @@ <!-- U+062E: "خ" ARABIC LETTER KHAH U+0669: "٩" ARABIC-INDIC DIGIT NINE --> <Key - latin:keyLabel="خ" + latin:keySpec="خ" latin:keyHintLabel="9" latin:additionalMoreKeys="9,٩" latin:keyLabelFlags="fontNormal" /> <!-- U+062D: "ح" ARABIC LETTER HAH U+0660: "٠" ARABIC-INDIC DIGIT ZERO --> <Key - latin:keyLabel="ح" + latin:keySpec="ح" latin:keyHintLabel="0" latin:additionalMoreKeys="0,٠" latin:keyLabelFlags="fontNormal" /> <!-- U+062C: "ج" ARABIC LETTER JEEM U+0686: "چ" ARABIC LETTER TCHEH --> <Key - latin:keyLabel="ج" + latin:keySpec="ج" latin:moreKeys="چ" latin:keyLabelFlags="fontNormal" /> </merge> diff --git a/java/res/xml/rowkeys_arabic2.xml b/java/res/xml/rowkeys_arabic2.xml index 4f8090d01..9bc91e8c7 100644 --- a/java/res/xml/rowkeys_arabic2.xml +++ b/java/res/xml/rowkeys_arabic2.xml @@ -25,24 +25,24 @@ U+069C: "ڜ" ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE --> <!-- TODO: DroidSansArabic lacks the glyph of U+069C ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE --> <Key - latin:keyLabel="ش" + latin:keySpec="ش" latin:moreKeys="ڜ" latin:keyLabelFlags="fontNormal" /> <!-- U+0633: "س" ARABIC LETTER SEEN --> <Key - latin:keyLabel="س" + latin:keySpec="س" latin:keyLabelFlags="fontNormal" /> <!-- U+064A: "ي" ARABIC LETTER YEH U+0626: "ئ" ARABIC LETTER YEH WITH HAMZA ABOVE U+0649: "ى" ARABIC LETTER ALEF MAKSURA --> <Key - latin:keyLabel="ي" + latin:keySpec="ي" latin:moreKeys="ئ,ى" latin:keyLabelFlags="fontNormal" /> <!-- U+0628: "ب" ARABIC LETTER BEH U+067E: "پ" ARABIC LETTER PEH --> <Key - latin:keyLabel="ب" + latin:keySpec="ب" latin:moreKeys="پ" latin:keyLabelFlags="fontNormal" /> <!-- U+0644: "ل" ARABIC LETTER LAM @@ -55,7 +55,7 @@ U+FEF5: "ﻵ" ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM U+0622: "آ" ARABIC LETTER ALEF WITH MADDA ABOVE --> <Key - latin:keyLabel="ل" + latin:keySpec="ل" latin:moreKeys="ﻻ|لا,ﻷ|لأ,ﻹ|لإ,ﻵ|لآ" latin:keyLabelFlags="fontNormal" /> <!-- U+0627: "ا" ARABIC LETTER ALEF @@ -65,30 +65,30 @@ U+0625: "إ" ARABIC LETTER ALEF WITH HAMZA BELOW U+0671: "ٱ" ARABIC LETTER ALEF WASLA --> <Key - latin:keyLabel="ا" + latin:keySpec="ا" latin:moreKeys="!fixedColumnOrder!5,آ,ء,أ,إ,ٱ" latin:keyLabelFlags="fontNormal" /> <!-- U+062A: "ت" ARABIC LETTER TEH --> <Key - latin:keyLabel="ت" + latin:keySpec="ت" latin:keyLabelFlags="fontNormal" /> <!-- U+0646: "ن" ARABIC LETTER NOON --> <Key - latin:keyLabel="ن" + latin:keySpec="ن" latin:keyLabelFlags="fontNormal" /> <!-- U+0645: "م" ARABIC LETTER MEEM --> <Key - latin:keyLabel="م" + latin:keySpec="م" latin:keyLabelFlags="fontNormal" /> <!-- U+0643: "ك" ARABIC LETTER KAF U+06AF: "گ" ARABIC LETTER GAF U+06A9: "ک" ARABIC LETTER KEHEH --> <Key - latin:keyLabel="ك" + latin:keySpec="ك" latin:moreKeys="گ,ک" latin:keyLabelFlags="fontNormal" /> <!-- U+0637: "ط" ARABIC LETTER TAH --> <Key - latin:keyLabel="ط" + latin:keySpec="ط" latin:keyLabelFlags="fontNormal" /> </merge> diff --git a/java/res/xml/rowkeys_arabic3.xml b/java/res/xml/rowkeys_arabic3.xml index 8a17b4b98..0bfc66a7d 100644 --- a/java/res/xml/rowkeys_arabic3.xml +++ b/java/res/xml/rowkeys_arabic3.xml @@ -25,42 +25,42 @@ latin:keyboardLayout="@xml/keys_arabic3_left" /> <!-- U+0621: "ء" ARABIC LETTER HAMZA --> <Key - latin:keyLabel="ء" + latin:keySpec="ء" latin:keyLabelFlags="fontNormal" /> <!-- U+0624: "ؤ" ARABIC LETTER WAW WITH HAMZA ABOVE --> <Key - latin:keyLabel="ؤ" + latin:keySpec="ؤ" latin:keyLabelFlags="fontNormal" /> <!-- U+0631: "ر" ARABIC LETTER REH --> <Key - latin:keyLabel="ر" + latin:keySpec="ر" latin:keyLabelFlags="fontNormal" /> <!-- U+0649: "ى" ARABIC LETTER ALEF MAKSURA U+0626: "ئ" ARABIC LETTER YEH WITH HAMZA ABOVE --> <Key - latin:keyLabel="ى" + latin:keySpec="ى" latin:moreKeys="ئ" latin:keyLabelFlags="fontNormal" /> <!-- U+0629: "ة" ARABIC LETTER TEH MARBUTA --> <Key - latin:keyLabel="ة" + latin:keySpec="ة" latin:keyLabelFlags="fontNormal" /> <!-- U+0648: "و" ARABIC LETTER WAW --> <Key - latin:keyLabel="و" + latin:keySpec="و" latin:keyLabelFlags="fontNormal" /> <!-- U+0632: "ز" ARABIC LETTER ZAIN U+0698: "ژ" ARABIC LETTER JEH --> <Key - latin:keyLabel="ز" + latin:keySpec="ز" latin:moreKeys="ژ" latin:keyLabelFlags="fontNormal" /> <!-- U+0638: "ظ" ARABIC LETTER ZAH --> <Key - latin:keyLabel="ظ" + latin:keySpec="ظ" latin:keyLabelFlags="fontNormal" /> <!-- U+062F: "د" ARABIC LETTER DAL --> <Key - latin:keyLabel="د" + latin:keySpec="د" latin:keyLabelFlags="fontNormal" /> </merge> diff --git a/java/res/xml/rowkeys_armenian_phonetic1.xml b/java/res/xml/rowkeys_armenian_phonetic1.xml index 1984fae8a..8ca78dab4 100644 --- a/java/res/xml/rowkeys_armenian_phonetic1.xml +++ b/java/res/xml/rowkeys_armenian_phonetic1.xml @@ -23,61 +23,61 @@ > <!-- U+0567: "է" ARMENIAN SMALL LETTER EH --> <Key - latin:keyLabel="է" + latin:keySpec="է" latin:keyHintLabel="1" latin:additionalMoreKeys="1" latin:keyLabelFlags="fontNormal" /> <!-- U+0569: "թ" ARMENIAN SMALL LETTER TO --> <Key - latin:keyLabel="թ" + latin:keySpec="թ" latin:keyHintLabel="2" latin:additionalMoreKeys="2" latin:keyLabelFlags="fontNormal" /> <!-- U+0583: "փ" ARMENIAN SMALL LETTER PIWR --> <Key - latin:keyLabel="փ" + latin:keySpec="փ" latin:keyHintLabel="3" latin:additionalMoreKeys="3" latin:keyLabelFlags="fontNormal" /> <!-- U+0571: "ձ" ARMENIAN SMALL LETTER JA --> <Key - latin:keyLabel="ձ" + latin:keySpec="ձ" latin:keyHintLabel="4" latin:additionalMoreKeys="4" latin:keyLabelFlags="fontNormal" /> <!-- U+057B: "ջ" ARMENIAN SMALL LETTER JHEH --> <Key - latin:keyLabel="ջ" + latin:keySpec="ջ" latin:keyHintLabel="5" latin:additionalMoreKeys="5" latin:keyLabelFlags="fontNormal" /> <!-- U+0580: "ր" ARMENIAN SMALL LETTER REH --> <Key - latin:keyLabel="ր" + latin:keySpec="ր" latin:keyHintLabel="6" latin:additionalMoreKeys="6" latin:keyLabelFlags="fontNormal" /> <!-- U+0579: "չ" ARMENIAN SMALL LETTER CHA --> <Key - latin:keyLabel="չ" + latin:keySpec="չ" latin:keyHintLabel="7" latin:additionalMoreKeys="7" latin:keyLabelFlags="fontNormal" /> <!-- U+0573: "ճ" ARMENIAN SMALL LETTER CHEH --> <Key - latin:keyLabel="ճ" + latin:keySpec="ճ" latin:keyHintLabel="8" latin:additionalMoreKeys="8" latin:keyLabelFlags="fontNormal" /> <!-- U+056A: "ժ" ARMENIAN SMALL LETTER ZHE --> <Key - latin:keyLabel="ժ" + latin:keySpec="ժ" latin:keyHintLabel="9" latin:additionalMoreKeys="9" latin:keyLabelFlags="fontNormal" /> <!-- U+056E: "ծ" ARMENIAN SMALL LETTER CA --> <Key - latin:keyLabel="ծ" + latin:keySpec="ծ" latin:keyHintLabel="0" latin:additionalMoreKeys="0" latin:keyLabelFlags="fontNormal" /> diff --git a/java/res/xml/rowkeys_armenian_phonetic2.xml b/java/res/xml/rowkeys_armenian_phonetic2.xml index 3764d0dbb..9991f739d 100644 --- a/java/res/xml/rowkeys_armenian_phonetic2.xml +++ b/java/res/xml/rowkeys_armenian_phonetic2.xml @@ -23,45 +23,45 @@ > <!-- U+0584: "ք" ARMENIAN SMALL LETTER KEH --> <Key - latin:keyLabel="ք" + latin:keySpec="ք" latin:keyLabelFlags="fontNormal" /> <!-- U+0578: "ո" ARMENIAN SMALL LETTER VO --> <Key - latin:keyLabel="ո" + latin:keySpec="ո" latin:keyLabelFlags="fontNormal" /> <!-- U+0565: "ե" ARMENIAN SMALL LETTER ECH U+0587: "և" ARMENIAN SMALL LIGATURE ECH YIWN --> <Key - latin:keyLabel="ե" + latin:keySpec="ե" latin:moreKeys="և" latin:keyHintLabel="և" latin:keyLabelFlags="fontNormal" /> <!-- U+057C: "ռ" ARMENIAN SMALL LETTER RA --> <Key - latin:keyLabel="ռ" + latin:keySpec="ռ" latin:keyLabelFlags="fontNormal" /> <!-- U+057F: "տ" ARMENIAN SMALL LETTER TIWN --> <Key - latin:keyLabel="տ" + latin:keySpec="տ" latin:keyLabelFlags="fontNormal" /> <!-- U+0568: "ը" ARMENIAN SMALL LETTER ET --> <Key - latin:keyLabel="ը" + latin:keySpec="ը" latin:keyLabelFlags="fontNormal" /> <!-- U+0582: "ւ" ARMENIAN SMALL LETTER YIWN --> <Key - latin:keyLabel="ւ" + latin:keySpec="ւ" latin:keyLabelFlags="fontNormal" /> <!-- U+056B: "ի" ARMENIAN SMALL LETTER INI --> <Key - latin:keyLabel="ի" + latin:keySpec="ի" latin:keyLabelFlags="fontNormal" /> <!-- U+0585: "օ" ARMENIAN SMALL LETTER OH --> <Key - latin:keyLabel="օ" + latin:keySpec="օ" latin:keyLabelFlags="fontNormal" /> <!-- U+057A: "պ" ARMENIAN SMALL LETTER PEH --> <Key - latin:keyLabel="պ" + latin:keySpec="պ" latin:keyLabelFlags="fontNormal" /> </merge> diff --git a/java/res/xml/rowkeys_armenian_phonetic3.xml b/java/res/xml/rowkeys_armenian_phonetic3.xml index 3116811b3..2b79386ac 100644 --- a/java/res/xml/rowkeys_armenian_phonetic3.xml +++ b/java/res/xml/rowkeys_armenian_phonetic3.xml @@ -23,38 +23,38 @@ > <!-- U+0561: "ա" ARMENIAN SMALL LETTER AYB --> <Key - latin:keyLabel="ա" + latin:keySpec="ա" latin:keyLabelFlags="fontNormal" /> <!-- U+057D: "ս" ARMENIAN SMALL LETTER SEH --> <Key - latin:keyLabel="ս" + latin:keySpec="ս" latin:keyLabelFlags="fontNormal" /> <!-- U+0564: "դ" ARMENIAN SMALL LETTER DA --> <Key - latin:keyLabel="դ" + latin:keySpec="դ" latin:keyLabelFlags="fontNormal" /> <!-- U+0586: "ֆ" ARMENIAN SMALL LETTER FEH --> <Key - latin:keyLabel="ֆ" + latin:keySpec="ֆ" latin:keyLabelFlags="fontNormal" /> <!-- U+0563: "գ" ARMENIAN SMALL LETTER GIM --> <Key - latin:keyLabel="գ" + latin:keySpec="գ" latin:keyLabelFlags="fontNormal" /> <!-- U+0570: "հ" ARMENIAN SMALL LETTER HO --> <Key - latin:keyLabel="հ" + latin:keySpec="հ" latin:keyLabelFlags="fontNormal" /> <!-- U+0575: "յ" ARMENIAN SMALL LETTER YI --> <Key - latin:keyLabel="յ" + latin:keySpec="յ" latin:keyLabelFlags="fontNormal" /> <!-- U+056F: "կ" ARMENIAN SMALL LETTER KEN --> <Key - latin:keyLabel="կ" + latin:keySpec="կ" latin:keyLabelFlags="fontNormal" /> <!-- U+056C: "լ" ARMENIAN SMALL LETTER LIWN --> <Key - latin:keyLabel="լ" + latin:keySpec="լ" latin:keyLabelFlags="fontNormal" /> </merge> diff --git a/java/res/xml/rowkeys_armenian_phonetic4.xml b/java/res/xml/rowkeys_armenian_phonetic4.xml index 922481add..f8cdd1221 100644 --- a/java/res/xml/rowkeys_armenian_phonetic4.xml +++ b/java/res/xml/rowkeys_armenian_phonetic4.xml @@ -23,30 +23,30 @@ > <!-- U+0566: "զ" ARMENIAN SMALL LETTER ZA --> <Key - latin:keyLabel="զ" + latin:keySpec="զ" latin:keyLabelFlags="fontNormal" /> <!-- U+0572: "ղ" ARMENIAN SMALL LETTER GHAD --> <Key - latin:keyLabel="ղ" + latin:keySpec="ղ" latin:keyLabelFlags="fontNormal" /> <!-- U+0581: "ց" ARMENIAN SMALL LETTER CO --> <Key - latin:keyLabel="ց" + latin:keySpec="ց" latin:keyLabelFlags="fontNormal" /> <!-- U+057E: "վ" ARMENIAN SMALL LETTER VEW --> <Key - latin:keyLabel="վ" + latin:keySpec="վ" latin:keyLabelFlags="fontNormal" /> <!-- U+0562: "բ" ARMENIAN SMALL LETTER BEN --> <Key - latin:keyLabel="բ" + latin:keySpec="բ" latin:keyLabelFlags="fontNormal" /> <!-- U+0576: "ն" ARMENIAN SMALL LETTER NOW --> <Key - latin:keyLabel="ն" + latin:keySpec="ն" latin:keyLabelFlags="fontNormal" /> <!-- U+0574: "մ" ARMENIAN SMALL LETTER MEN --> <Key - latin:keyLabel="մ" + latin:keySpec="մ" latin:keyLabelFlags="fontNormal" /> </merge> diff --git a/java/res/xml/rowkeys_azerty1.xml b/java/res/xml/rowkeys_azerty1.xml index 42b27463f..adb66b70f 100644 --- a/java/res/xml/rowkeys_azerty1.xml +++ b/java/res/xml/rowkeys_azerty1.xml @@ -22,52 +22,52 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Key - latin:keyLabel="a" + latin:keySpec="a" latin:keyHintLabel="1" latin:additionalMoreKeys="1" latin:moreKeys="!text/more_keys_for_a" /> <Key - latin:keyLabel="z" + latin:keySpec="z" latin:keyHintLabel="2" latin:additionalMoreKeys="2" latin:moreKeys="!text/more_keys_for_z" /> <Key - latin:keyLabel="e" + latin:keySpec="e" latin:keyHintLabel="3" latin:additionalMoreKeys="3" latin:moreKeys="!text/more_keys_for_e" /> <Key - latin:keyLabel="r" + latin:keySpec="r" latin:keyHintLabel="4" latin:additionalMoreKeys="4" latin:moreKeys="!text/more_keys_for_r" /> <Key - latin:keyLabel="t" + latin:keySpec="t" latin:keyHintLabel="5" latin:additionalMoreKeys="5" latin:moreKeys="!text/more_keys_for_t" /> <Key - latin:keyLabel="y" + latin:keySpec="y" latin:keyHintLabel="6" latin:additionalMoreKeys="6" latin:moreKeys="!text/more_keys_for_y" /> <Key - latin:keyLabel="u" + latin:keySpec="u" latin:keyHintLabel="7" latin:additionalMoreKeys="7" latin:moreKeys="!text/more_keys_for_u" /> <Key - latin:keyLabel="i" + latin:keySpec="i" latin:keyHintLabel="8" latin:additionalMoreKeys="8" latin:moreKeys="!text/more_keys_for_i" /> <Key - latin:keyLabel="o" + latin:keySpec="o" latin:keyHintLabel="9" latin:additionalMoreKeys="9" latin:moreKeys="!text/more_keys_for_o" /> <Key - latin:keyLabel="p" + latin:keySpec="p" latin:keyHintLabel="0" latin:additionalMoreKeys="0" /> </merge> diff --git a/java/res/xml/rowkeys_azerty2.xml b/java/res/xml/rowkeys_azerty2.xml index 2eee214e5..db0686721 100644 --- a/java/res/xml/rowkeys_azerty2.xml +++ b/java/res/xml/rowkeys_azerty2.xml @@ -22,30 +22,30 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Key - latin:keyLabel="q" /> + latin:keySpec="q" /> <Key - latin:keyLabel="s" + latin:keySpec="s" latin:moreKeys="!text/more_keys_for_s" /> <Key - latin:keyLabel="d" + latin:keySpec="d" latin:moreKeys="!text/more_keys_for_d" /> <Key - latin:keyLabel="f" /> + latin:keySpec="f" /> <Key - latin:keyLabel="g" + latin:keySpec="g" latin:moreKeys="!text/more_keys_for_g" /> <Key - latin:keyLabel="h" + latin:keySpec="h" latin:moreKeys="!text/more_keys_for_h" /> <Key - latin:keyLabel="j" + latin:keySpec="j" latin:moreKeys="!text/more_keys_for_j" /> <Key - latin:keyLabel="k" + latin:keySpec="k" latin:moreKeys="!text/more_keys_for_k" /> <Key - latin:keyLabel="l" + latin:keySpec="l" latin:moreKeys="!text/more_keys_for_l" /> <Key - latin:keyLabel="m" /> + latin:keySpec="m" /> </merge> diff --git a/java/res/xml/rowkeys_azerty3.xml b/java/res/xml/rowkeys_azerty3.xml index 2643f3283..0aa215305 100644 --- a/java/res/xml/rowkeys_azerty3.xml +++ b/java/res/xml/rowkeys_azerty3.xml @@ -22,20 +22,20 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Key - latin:keyLabel="w" + latin:keySpec="w" latin:moreKeys="!text/more_keys_for_w" /> <Key - latin:keyLabel="x" /> + latin:keySpec="x" /> <Key - latin:keyLabel="c" + latin:keySpec="c" latin:moreKeys="!text/more_keys_for_c" /> <Key - latin:keyLabel="v" + latin:keySpec="v" latin:moreKeys="!text/more_keys_for_v" /> <Key - latin:keyLabel="b" /> + latin:keySpec="b" /> <Key - latin:keyLabel="n" + latin:keySpec="n" latin:moreKeys="!text/more_keys_for_n" /> <include latin:keyboardLayout="@xml/key_azerty3_right" /> diff --git a/java/res/xml/rowkeys_bulgarian1.xml b/java/res/xml/rowkeys_bulgarian1.xml index 441b079f1..e84719302 100644 --- a/java/res/xml/rowkeys_bulgarian1.xml +++ b/java/res/xml/rowkeys_bulgarian1.xml @@ -23,57 +23,57 @@ > <!-- U+044F: "я" CYRILLIC SMALL LETTER YA --> <Key - latin:keyLabel="я" + latin:keySpec="я" latin:keyHintLabel="1" latin:additionalMoreKeys="1" /> <!-- U+0432: "в" CYRILLIC SMALL LETTER VE --> <Key - latin:keyLabel="в" + latin:keySpec="в" latin:keyHintLabel="2" latin:additionalMoreKeys="2" /> <!-- U+0435: "е" CYRILLIC SMALL LETTER IE --> <Key - latin:keyLabel="е" + latin:keySpec="е" latin:keyHintLabel="3" latin:additionalMoreKeys="3" /> <!-- U+0440: "р" CYRILLIC SMALL LETTER ER --> <Key - latin:keyLabel="р" + latin:keySpec="р" latin:keyHintLabel="4" latin:additionalMoreKeys="4" /> <!-- U+0442: "т" CYRILLIC SMALL LETTER TE --> <Key - latin:keyLabel="т" + latin:keySpec="т" latin:keyHintLabel="5" latin:additionalMoreKeys="5" /> <!-- U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN --> <Key - latin:keyLabel="ъ" + latin:keySpec="ъ" latin:keyHintLabel="6" latin:additionalMoreKeys="6" /> <!-- U+0443: "у" CYRILLIC SMALL LETTER U --> <Key - latin:keyLabel="у" + latin:keySpec="у" latin:keyHintLabel="7" latin:additionalMoreKeys="7" /> <!-- U+0438: "и" CYRILLIC SMALL LETTER I U+045D: "ѝ" CYRILLIC SMALL LETTER I WITH GRAVE --> <Key - latin:keyLabel="и" + latin:keySpec="и" latin:keyHintLabel="8" latin:additionalMoreKeys="8" latin:moreKeys="ѝ" /> <!-- U+043E: "о" CYRILLIC SMALL LETTER O --> <Key - latin:keyLabel="о" + latin:keySpec="о" latin:keyHintLabel="9" latin:additionalMoreKeys="9" /> <!-- U+043F: "п" CYRILLIC SMALL LETTER PE --> <Key - latin:keyLabel="п" + latin:keySpec="п" latin:keyHintLabel="0" latin:additionalMoreKeys="0" /> <!-- U+0447: "ч" CYRILLIC SMALL LETTER CHE --> <Key - latin:keyLabel="ч" /> + latin:keySpec="ч" /> </merge> diff --git a/java/res/xml/rowkeys_bulgarian2.xml b/java/res/xml/rowkeys_bulgarian2.xml index a4e93d862..e572a221d 100644 --- a/java/res/xml/rowkeys_bulgarian2.xml +++ b/java/res/xml/rowkeys_bulgarian2.xml @@ -23,35 +23,35 @@ > <!-- U+0430: "а" CYRILLIC SMALL LETTER A --> <Key - latin:keyLabel="а" /> + latin:keySpec="а" /> <!-- U+0441: "с" CYRILLIC SMALL LETTER ES --> <Key - latin:keyLabel="с" /> + latin:keySpec="с" /> <!-- U+0434: "д" CYRILLIC SMALL LETTER DE --> <Key - latin:keyLabel="д" /> + latin:keySpec="д" /> <!-- U+0444: "ф" CYRILLIC SMALL LETTER EF --> <Key - latin:keyLabel="ф" /> + latin:keySpec="ф" /> <!-- U+0433: "г" CYRILLIC SMALL LETTER GHE --> <Key - latin:keyLabel="г" /> + latin:keySpec="г" /> <!-- U+0445: "х" CYRILLIC SMALL LETTER HA --> <Key - latin:keyLabel="х" /> + latin:keySpec="х" /> <!-- U+0439: "й" CYRILLIC SMALL LETTER SHORT I --> <Key - latin:keyLabel="й" /> + latin:keySpec="й" /> <!-- U+043A: "к" CYRILLIC SMALL LETTER KA --> <Key - latin:keyLabel="к" /> + latin:keySpec="к" /> <!-- U+043B: "л" CYRILLIC SMALL LETTER EL --> <Key - latin:keyLabel="л" /> + latin:keySpec="л" /> <!-- U+0448: "ш" CYRILLIC SMALL LETTER SHA --> <Key - latin:keyLabel="ш" /> + latin:keySpec="ш" /> <!-- U+0449: "щ" CYRILLIC SMALL LETTER SHCHA --> <Key - latin:keyLabel="щ" /> + latin:keySpec="щ" /> </merge> diff --git a/java/res/xml/rowkeys_bulgarian3.xml b/java/res/xml/rowkeys_bulgarian3.xml index 258219c27..2509793b2 100644 --- a/java/res/xml/rowkeys_bulgarian3.xml +++ b/java/res/xml/rowkeys_bulgarian3.xml @@ -23,26 +23,26 @@ > <!-- U+0437: "з" CYRILLIC SMALL LETTER ZE --> <Key - latin:keyLabel="з" /> + latin:keySpec="з" /> <!-- U+044C: "ь" CYRILLIC SMALL LETTER SOFT SIGN --> <Key - latin:keyLabel="ь" /> + latin:keySpec="ь" /> <!-- U+0446: "ц" CYRILLIC SMALL LETTER TSE --> <Key - latin:keyLabel="ц" /> + latin:keySpec="ц" /> <!-- U+0436: "ж" CYRILLIC SMALL LETTER ZHE --> <Key - latin:keyLabel="ж" /> + latin:keySpec="ж" /> <!-- U+0431: "б" CYRILLIC SMALL LETTER BE --> <Key - latin:keyLabel="б" /> + latin:keySpec="б" /> <!-- U+043D: "н" CYRILLIC SMALL LETTER EN --> <Key - latin:keyLabel="н" /> + latin:keySpec="н" /> <!-- U+043C: "м" CYRILLIC SMALL LETTER EM --> <Key - latin:keyLabel="м" /> + latin:keySpec="м" /> <!-- U+044E: "ю" CYRILLIC SMALL LETTER YU --> <Key - latin:keyLabel="ю" /> + latin:keySpec="ю" /> </merge> diff --git a/java/res/xml/rowkeys_bulgarian_bds1.xml b/java/res/xml/rowkeys_bulgarian_bds1.xml index eed1fcb8f..9d6428268 100644 --- a/java/res/xml/rowkeys_bulgarian_bds1.xml +++ b/java/res/xml/rowkeys_bulgarian_bds1.xml @@ -23,57 +23,57 @@ > <!-- U+0443: "у" CYRILLIC SMALL LETTER U --> <Key - latin:keyLabel="у" + latin:keySpec="у" latin:keyHintLabel="1" latin:additionalMoreKeys="1" /> <!-- U+0435: "е" CYRILLIC SMALL LETTER IE --> <Key - latin:keyLabel="е" + latin:keySpec="е" latin:keyHintLabel="2" latin:additionalMoreKeys="2" /> <!-- U+0438: "и" CYRILLIC SMALL LETTER I U+045D: "ѝ" CYRILLIC SMALL LETTER I WITH GRAVE --> <Key - latin:keyLabel="и" + latin:keySpec="и" latin:keyHintLabel="3" latin:additionalMoreKeys="3" latin:moreKeys="ѝ" /> <!-- U+0448: "ш" CYRILLIC SMALL LETTER SHA --> <Key - latin:keyLabel="ш" + latin:keySpec="ш" latin:keyHintLabel="4" latin:additionalMoreKeys="4" /> <!-- U+0449: "щ" CYRILLIC SMALL LETTER SHCHA --> <Key - latin:keyLabel="щ" + latin:keySpec="щ" latin:keyHintLabel="5" latin:additionalMoreKeys="5" /> <!-- U+043A: "к" CYRILLIC SMALL LETTER KA --> <Key - latin:keyLabel="к" + latin:keySpec="к" latin:keyHintLabel="6" latin:additionalMoreKeys="6" /> <!-- U+0441: "с" CYRILLIC SMALL LETTER ES --> <Key - latin:keyLabel="с" + latin:keySpec="с" latin:keyHintLabel="7" latin:additionalMoreKeys="7" /> <!-- U+0434: "д" CYRILLIC SMALL LETTER DE --> <Key - latin:keyLabel="д" + latin:keySpec="д" latin:keyHintLabel="8" latin:additionalMoreKeys="8" /> <!-- U+0437: "з" CYRILLIC SMALL LETTER ZE --> <Key - latin:keyLabel="з" + latin:keySpec="з" latin:keyHintLabel="9" latin:additionalMoreKeys="9" /> <!-- U+0446: "ц" CYRILLIC SMALL LETTER TSE --> <Key - latin:keyLabel="ц" + latin:keySpec="ц" latin:keyHintLabel="0" latin:additionalMoreKeys="0" /> <!-- U+0431: "б" CYRILLIC SMALL LETTER BE --> <Key - latin:keyLabel="б" /> + latin:keySpec="б" /> </merge> diff --git a/java/res/xml/rowkeys_bulgarian_bds2.xml b/java/res/xml/rowkeys_bulgarian_bds2.xml index ff1bff895..e078ae7d3 100644 --- a/java/res/xml/rowkeys_bulgarian_bds2.xml +++ b/java/res/xml/rowkeys_bulgarian_bds2.xml @@ -23,35 +23,35 @@ > <!-- U+044C: "ь" CYRILLIC SMALL LETTER SOFT SIGN --> <Key - latin:keyLabel="ь" /> + latin:keySpec="ь" /> <!-- U+044F: "я" CYRILLIC SMALL LETTER YA --> <Key - latin:keyLabel="я" /> + latin:keySpec="я" /> <!-- U+0430: "а" CYRILLIC SMALL LETTER A --> <Key - latin:keyLabel="а" /> + latin:keySpec="а" /> <!-- U+043E: "о" CYRILLIC SMALL LETTER O --> <Key - latin:keyLabel="о" /> + latin:keySpec="о" /> <!-- U+0436: "ж" CYRILLIC SMALL LETTER ZHE --> <Key - latin:keyLabel="ж" /> + latin:keySpec="ж" /> <!-- U+0433: "г" CYRILLIC SMALL LETTER GHE --> <Key - latin:keyLabel="г" /> + latin:keySpec="г" /> <!-- U+0442: "т" CYRILLIC SMALL LETTER TE --> <Key - latin:keyLabel="т" /> + latin:keySpec="т" /> <!-- U+043D: "н" CYRILLIC SMALL LETTER EN --> <Key - latin:keyLabel="н" /> + latin:keySpec="н" /> <!-- U+0432: "в" CYRILLIC SMALL LETTER VE --> <Key - latin:keyLabel="в" /> + latin:keySpec="в" /> <!-- U+043C: "м" CYRILLIC SMALL LETTER EM --> <Key - latin:keyLabel="м" /> + latin:keySpec="м" /> <!-- U+0447: "ч" CYRILLIC SMALL LETTER CHE --> <Key - latin:keyLabel="ч" /> + latin:keySpec="ч" /> </merge> diff --git a/java/res/xml/rowkeys_bulgarian_bds3.xml b/java/res/xml/rowkeys_bulgarian_bds3.xml index 7bb780ac7..8302d6922 100644 --- a/java/res/xml/rowkeys_bulgarian_bds3.xml +++ b/java/res/xml/rowkeys_bulgarian_bds3.xml @@ -23,29 +23,29 @@ > <!-- U+044E: "ю" CYRILLIC SMALL LETTER YU --> <Key - latin:keyLabel="ю" /> + latin:keySpec="ю" /> <!-- U+0439: "й" CYRILLIC SMALL LETTER SHORT I --> <Key - latin:keyLabel="й" /> + latin:keySpec="й" /> <!-- U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN --> <Key - latin:keyLabel="ъ" /> + latin:keySpec="ъ" /> <!-- U+044D: "э" CYRILLIC SMALL LETTER E --> <Key - latin:keyLabel="э" /> + latin:keySpec="э" /> <!-- U+0444: "ф" CYRILLIC SMALL LETTER EF --> <Key - latin:keyLabel="ф" /> + latin:keySpec="ф" /> <!-- U+0445: "х" CYRILLIC SMALL LETTER HA --> <Key - latin:keyLabel="х" /> + latin:keySpec="х" /> <!-- U+043F: "п" CYRILLIC SMALL LETTER PE --> <Key - latin:keyLabel="п" /> + latin:keySpec="п" /> <!-- U+0440: "р" CYRILLIC SMALL LETTER ER --> <Key - latin:keyLabel="р" /> + latin:keySpec="р" /> <!-- U+043B: "л" CYRILLIC SMALL LETTER EL --> <Key - latin:keyLabel="л" /> + latin:keySpec="л" /> </merge> diff --git a/java/res/xml/rowkeys_colemak1.xml b/java/res/xml/rowkeys_colemak1.xml index f1c30756b..819a69d2b 100644 --- a/java/res/xml/rowkeys_colemak1.xml +++ b/java/res/xml/rowkeys_colemak1.xml @@ -22,44 +22,44 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Key - latin:keyLabel="q" + latin:keySpec="q" latin:keyHintLabel="1" latin:additionalMoreKeys="1" /> <Key - latin:keyLabel="w" + latin:keySpec="w" latin:keyHintLabel="2" latin:additionalMoreKeys="2" latin:moreKeys="!text/more_keys_for_w" /> <Key - latin:keyLabel="f" + latin:keySpec="f" latin:keyHintLabel="3" latin:additionalMoreKeys="3" /> <Key - latin:keyLabel="p" + latin:keySpec="p" latin:keyHintLabel="4" latin:additionalMoreKeys="4" /> <Key - latin:keyLabel="g" + latin:keySpec="g" latin:keyHintLabel="5" latin:additionalMoreKeys="5" latin:moreKeys="!text/more_keys_for_g" /> <Key - latin:keyLabel="j" + latin:keySpec="j" latin:keyHintLabel="6" latin:additionalMoreKeys="6" latin:moreKeys="!text/more_keys_for_j" /> <Key - latin:keyLabel="l" + latin:keySpec="l" latin:keyHintLabel="7" latin:additionalMoreKeys="7" latin:moreKeys="!text/more_keys_for_l" /> <Key - latin:keyLabel="u" + latin:keySpec="u" latin:keyHintLabel="8" latin:additionalMoreKeys="8" latin:moreKeys="!text/more_keys_for_u" /> <Key - latin:keyLabel="y" + latin:keySpec="y" latin:keyHintLabel="9" latin:additionalMoreKeys="9" latin:moreKeys="!text/more_keys_for_y" /> diff --git a/java/res/xml/rowkeys_colemak2.xml b/java/res/xml/rowkeys_colemak2.xml index f73d7e95f..644d845bf 100644 --- a/java/res/xml/rowkeys_colemak2.xml +++ b/java/res/xml/rowkeys_colemak2.xml @@ -22,33 +22,33 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Key - latin:keyLabel="a" + latin:keySpec="a" latin:moreKeys="!text/more_keys_for_a" /> <Key - latin:keyLabel="r" + latin:keySpec="r" latin:moreKeys="!text/more_keys_for_r" /> <Key - latin:keyLabel="s" + latin:keySpec="s" latin:moreKeys="!text/more_keys_for_s" /> <Key - latin:keyLabel="t" + latin:keySpec="t" latin:moreKeys="!text/more_keys_for_t" /> <Key - latin:keyLabel="d" + latin:keySpec="d" latin:moreKeys="!text/more_keys_for_d" /> <Key - latin:keyLabel="h" + latin:keySpec="h" latin:moreKeys="!text/more_keys_for_h" /> <Key - latin:keyLabel="n" + latin:keySpec="n" latin:moreKeys="!text/more_keys_for_n" /> <Key - latin:keyLabel="e" + latin:keySpec="e" latin:moreKeys="!text/more_keys_for_e" /> <Key - latin:keyLabel="i" + latin:keySpec="i" latin:moreKeys="!text/more_keys_for_i" /> <Key - latin:keyLabel="o" + latin:keySpec="o" latin:moreKeys="!text/more_keys_for_o" /> </merge> diff --git a/java/res/xml/rowkeys_colemak3.xml b/java/res/xml/rowkeys_colemak3.xml index f0f915142..946910cb5 100644 --- a/java/res/xml/rowkeys_colemak3.xml +++ b/java/res/xml/rowkeys_colemak3.xml @@ -22,21 +22,21 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Key - latin:keyLabel="z" + latin:keySpec="z" latin:moreKeys="!text/more_keys_for_z" /> <Key - latin:keyLabel="x" /> + latin:keySpec="x" /> <Key - latin:keyLabel="c" + latin:keySpec="c" latin:moreKeys="!text/more_keys_for_c" /> <Key - latin:keyLabel="v" + latin:keySpec="v" latin:moreKeys="!text/more_keys_for_v" /> <Key - latin:keyLabel="b" /> + latin:keySpec="b" /> <Key - latin:keyLabel="k" + latin:keySpec="k" latin:moreKeys="!text/more_keys_for_k" /> <Key - latin:keyLabel="m" /> + latin:keySpec="m" /> </merge> diff --git a/java/res/xml/rowkeys_dvorak1.xml b/java/res/xml/rowkeys_dvorak1.xml index 033308acb..831bfafff 100644 --- a/java/res/xml/rowkeys_dvorak1.xml +++ b/java/res/xml/rowkeys_dvorak1.xml @@ -24,35 +24,35 @@ <include latin:keyboardLayout="@xml/keys_dvorak_123" /> <Key - latin:keyLabel="p" + latin:keySpec="p" latin:keyHintLabel="4" latin:additionalMoreKeys="4" /> <Key - latin:keyLabel="y" + latin:keySpec="y" latin:keyHintLabel="5" latin:additionalMoreKeys="5" latin:moreKeys="!text/more_keys_for_y" /> <Key - latin:keyLabel="f" + latin:keySpec="f" latin:keyHintLabel="6" latin:additionalMoreKeys="6" /> <Key - latin:keyLabel="g" + latin:keySpec="g" latin:keyHintLabel="7" latin:additionalMoreKeys="7" latin:moreKeys="!text/more_keys_for_g" /> <Key - latin:keyLabel="c" + latin:keySpec="c" latin:keyHintLabel="8" latin:additionalMoreKeys="8" latin:moreKeys="!text/more_keys_for_c" /> <Key - latin:keyLabel="r" + latin:keySpec="r" latin:keyHintLabel="9" latin:additionalMoreKeys="9" latin:moreKeys="!text/more_keys_for_r" /> <Key - latin:keyLabel="l" + latin:keySpec="l" latin:keyHintLabel="0" latin:additionalMoreKeys="0" latin:moreKeys="!text/more_keys_for_l" /> diff --git a/java/res/xml/rowkeys_dvorak2.xml b/java/res/xml/rowkeys_dvorak2.xml index 943e3f549..7c734730a 100644 --- a/java/res/xml/rowkeys_dvorak2.xml +++ b/java/res/xml/rowkeys_dvorak2.xml @@ -22,33 +22,33 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Key - latin:keyLabel="a" + latin:keySpec="a" latin:moreKeys="!text/more_keys_for_a" /> <Key - latin:keyLabel="o" + latin:keySpec="o" latin:moreKeys="!text/more_keys_for_o" /> <Key - latin:keyLabel="e" + latin:keySpec="e" latin:moreKeys="!text/more_keys_for_e" /> <Key - latin:keyLabel="u" + latin:keySpec="u" latin:moreKeys="!text/more_keys_for_u" /> <Key - latin:keyLabel="i" + latin:keySpec="i" latin:moreKeys="!text/more_keys_for_i" /> <Key - latin:keyLabel="d" + latin:keySpec="d" latin:moreKeys="!text/more_keys_for_d" /> <Key - latin:keyLabel="h" + latin:keySpec="h" latin:moreKeys="!text/more_keys_for_h" /> <Key - latin:keyLabel="t" + latin:keySpec="t" latin:moreKeys="!text/more_keys_for_t" /> <Key - latin:keyLabel="n" + latin:keySpec="n" latin:moreKeys="!text/more_keys_for_n" /> <Key - latin:keyLabel="s" + latin:keySpec="s" latin:moreKeys="!text/more_keys_for_s" /> </merge> diff --git a/java/res/xml/rowkeys_dvorak3.xml b/java/res/xml/rowkeys_dvorak3.xml index b035f41cd..a9da6b950 100644 --- a/java/res/xml/rowkeys_dvorak3.xml +++ b/java/res/xml/rowkeys_dvorak3.xml @@ -22,21 +22,21 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Key - latin:keyLabel="j" + latin:keySpec="j" latin:moreKeys="!text/more_keys_for_j" /> <Key - latin:keyLabel="k" + latin:keySpec="k" latin:moreKeys="!text/more_keys_for_k" /> <Key - latin:keyLabel="x" /> + latin:keySpec="x" /> <Key - latin:keyLabel="b" /> + latin:keySpec="b" /> <Key - latin:keyLabel="m" /> + latin:keySpec="m" /> <Key - latin:keyLabel="w" + latin:keySpec="w" latin:moreKeys="!text/more_keys_for_w" /> <Key - latin:keyLabel="v" + latin:keySpec="v" latin:moreKeys="!text/more_keys_for_v" /> </merge> diff --git a/java/res/xml/rowkeys_east_slavic1.xml b/java/res/xml/rowkeys_east_slavic1.xml index 5b3b4b48d..7e95a8b35 100644 --- a/java/res/xml/rowkeys_east_slavic1.xml +++ b/java/res/xml/rowkeys_east_slavic1.xml @@ -23,59 +23,59 @@ > <!-- U+0439: "й" CYRILLIC SMALL LETTER SHORT I --> <Key - latin:keyLabel="й" + latin:keySpec="й" latin:keyHintLabel="1" latin:additionalMoreKeys="1" /> <!-- U+0446: "ц" CYRILLIC SMALL LETTER TSE --> <Key - latin:keyLabel="ц" + latin:keySpec="ц" latin:keyHintLabel="2" latin:additionalMoreKeys="2" /> <!-- U+0443: "у" CYRILLIC SMALL LETTER U --> <Key - latin:keyLabel="у" + latin:keySpec="у" latin:keyHintLabel="3" latin:additionalMoreKeys="3" latin:moreKeys="!text/more_keys_for_cyrillic_u" /> <!-- U+043A: "к" CYRILLIC SMALL LETTER KA --> <Key - latin:keyLabel="к" + latin:keySpec="к" latin:keyHintLabel="4" latin:additionalMoreKeys="4" latin:moreKeys="!text/more_keys_for_cyrillic_ka" /> <!-- U+0435: "е" CYRILLIC SMALL LETTER IE --> <Key - latin:keyLabel="е" + latin:keySpec="е" latin:keyHintLabel="5" latin:additionalMoreKeys="5" latin:moreKeys="!text/more_keys_for_cyrillic_ie" /> <!-- U+043D: "н" CYRILLIC SMALL LETTER EN --> <Key - latin:keyLabel="н" + latin:keySpec="н" latin:keyHintLabel="6" latin:additionalMoreKeys="6" latin:moreKeys="!text/more_keys_for_cyrillic_en" /> <!-- U+0433: "г" CYRILLIC SMALL LETTER GHE --> <Key - latin:keyLabel="г" + latin:keySpec="г" latin:keyHintLabel="7" latin:additionalMoreKeys="7" latin:moreKeys="!text/more_keys_for_cyrillic_ghe" /> <!-- U+0448: "ш" CYRILLIC SMALL LETTER SHA --> <Key - latin:keyLabel="ш" + latin:keySpec="ш" latin:keyHintLabel="8" latin:additionalMoreKeys="8" /> <Key - latin:keyLabel="!text/keylabel_for_east_slavic_row1_9" + latin:keySpec="!text/keylabel_for_east_slavic_row1_9" latin:keyHintLabel="9" latin:additionalMoreKeys="9" /> <!-- U+0437: "з" CYRILLIC SMALL LETTER ZE --> <Key - latin:keyLabel="з" + latin:keySpec="з" latin:keyHintLabel="0" latin:additionalMoreKeys="0" /> <!-- U+0445: "х" CYRILLIC SMALL LETTER HA --> <Key - latin:keyLabel="х" /> + latin:keySpec="х" /> </merge> diff --git a/java/res/xml/rowkeys_east_slavic2.xml b/java/res/xml/rowkeys_east_slavic2.xml index 2e412f08c..20d963cb3 100644 --- a/java/res/xml/rowkeys_east_slavic2.xml +++ b/java/res/xml/rowkeys_east_slavic2.xml @@ -23,37 +23,37 @@ > <!-- U+0444: "ф" CYRILLIC SMALL LETTER EF --> <Key - latin:keyLabel="ф" /> + latin:keySpec="ф" /> <Key - latin:keyLabel="!text/keylabel_for_east_slavic_row2_1" + latin:keySpec="!text/keylabel_for_east_slavic_row2_1" latin:moreKeys="!text/more_keys_for_east_slavic_row2_1" /> <!-- U+0432: "в" CYRILLIC SMALL LETTER VE --> <Key - latin:keyLabel="в" /> + latin:keySpec="в" /> <!-- U+0430: "а" CYRILLIC SMALL LETTER A --> <Key - latin:keyLabel="а" + latin:keySpec="а" latin:moreKeys="!text/more_keys_for_cyrillic_a" /> <!-- U+043F: "п" CYRILLIC SMALL LETTER PE --> <Key - latin:keyLabel="п" /> + latin:keySpec="п" /> <!-- U+0440: "р" CYRILLIC SMALL LETTER ER --> <Key - latin:keyLabel="р" /> + latin:keySpec="р" /> <!-- U+043E: "о" CYRILLIC SMALL LETTER O --> <Key - latin:keyLabel="о" + latin:keySpec="о" latin:moreKeys="!text/more_keys_for_cyrillic_o" /> <!-- U+043B: "л" CYRILLIC SMALL LETTER EL --> <Key - latin:keyLabel="л" /> + latin:keySpec="л" /> <!-- U+0434: "д" CYRILLIC SMALL LETTER DE --> <Key - latin:keyLabel="д" /> + latin:keySpec="д" /> <!-- U+0436: "ж" CYRILLIC SMALL LETTER ZHE --> <Key - latin:keyLabel="ж" /> + latin:keySpec="ж" /> <Key - latin:keyLabel="!text/keylabel_for_east_slavic_row2_11" + latin:keySpec="!text/keylabel_for_east_slavic_row2_11" latin:moreKeys="!text/more_keys_for_east_slavic_row2_11" /> </merge> diff --git a/java/res/xml/rowkeys_east_slavic3.xml b/java/res/xml/rowkeys_east_slavic3.xml index c3a171b49..b7d19b223 100644 --- a/java/res/xml/rowkeys_east_slavic3.xml +++ b/java/res/xml/rowkeys_east_slavic3.xml @@ -23,29 +23,29 @@ > <!-- U+044F: "я" CYRILLIC SMALL LETTER YA --> <Key - latin:keyLabel="я" /> + latin:keySpec="я" /> <!-- U+0447: "ч" CYRILLIC SMALL LETTER CHE --> <Key - latin:keyLabel="ч" /> + latin:keySpec="ч" /> <!-- U+0441: "с" CYRILLIC SMALL LETTER ES --> <Key - latin:keyLabel="с" /> + latin:keySpec="с" /> <!-- U+043C: "м" CYRILLIC SMALL LETTER EM --> <Key - latin:keyLabel="м" /> + latin:keySpec="м" /> <Key - latin:keyLabel="!text/keylabel_for_east_slavic_row3_5" /> + latin:keySpec="!text/keylabel_for_east_slavic_row3_5" /> <!-- U+0442: "т" CYRILLIC SMALL LETTER TE --> <Key - latin:keyLabel="т" /> + latin:keySpec="т" /> <!-- U+044C: "ь" CYRILLIC SMALL LETTER SOFT SIGN --> <Key - latin:keyLabel="ь" + latin:keySpec="ь" latin:moreKeys="!text/more_keys_for_cyrillic_soft_sign" /> <!-- U+0431: "б" CYRILLIC SMALL LETTER BE --> <Key - latin:keyLabel="б" /> + latin:keySpec="б" /> <!-- U+044E: "ю" CYRILLIC SMALL LETTER YU --> <Key - latin:keyLabel="ю" /> + latin:keySpec="ю" /> </merge> diff --git a/java/res/xml/rowkeys_farsi1.xml b/java/res/xml/rowkeys_farsi1.xml index 5a22a2462..46fef4236 100644 --- a/java/res/xml/rowkeys_farsi1.xml +++ b/java/res/xml/rowkeys_farsi1.xml @@ -24,49 +24,49 @@ <!-- U+0636: "ض" ARABIC LETTER DAD U+06F1: "۱" EXTENDED ARABIC-INDIC DIGIT ONE --> <Key - latin:keyLabel="ض" + latin:keySpec="ض" latin:keyHintLabel="۱" latin:additionalMoreKeys="۱,1" latin:keyLabelFlags="fontNormal" /> <!-- U+0635: "ص" ARABIC LETTER SAD U+06F2: "۲" EXTENDED ARABIC-INDIC DIGIT TWO --> <Key - latin:keyLabel="ص" + latin:keySpec="ص" latin:keyHintLabel="۲" latin:additionalMoreKeys="۲,2" latin:keyLabelFlags="fontNormal" /> <!-- U+062B: "ث" ARABIC LETTER THEH U+06F3: "۳" EXTENDED ARABIC-INDIC DIGIT THREE --> <Key - latin:keyLabel="ث" + latin:keySpec="ث" latin:keyHintLabel="۳" latin:additionalMoreKeys="۳,3" latin:keyLabelFlags="fontNormal" /> <!-- U+0642: "ق" ARABIC LETTER QAF U+06F4: "۴" EXTENDED ARABIC-INDIC DIGIT FOUR --> <Key - latin:keyLabel="ق" + latin:keySpec="ق" latin:keyHintLabel="۴" latin:additionalMoreKeys="۴,4" latin:keyLabelFlags="fontNormal" /> <!-- U+0641: "ف" ARABIC LETTER FEH U+06F5: "۵" EXTENDED ARABIC-INDIC DIGIT FIVE --> <Key - latin:keyLabel="ف" + latin:keySpec="ف" latin:keyHintLabel="۵" latin:additionalMoreKeys="۵,5" latin:keyLabelFlags="fontNormal" /> <!-- U+063A: "غ" ARABIC LETTER GHAIN U+06F6: "۶" EXTENDED ARABIC-INDIC DIGIT SIX --> <Key - latin:keyLabel="غ" + latin:keySpec="غ" latin:keyHintLabel="۶" latin:additionalMoreKeys="۶,6" latin:keyLabelFlags="fontNormal" /> <!-- U+0639: "ع" ARABIC LETTER AIN U+06F7: "۷" EXTENDED ARABIC-INDIC DIGIT SEVEN --> <Key - latin:keyLabel="ع" + latin:keySpec="ع" latin:keyHintLabel="۷" latin:additionalMoreKeys="۷,7" latin:keyLabelFlags="fontNormal" /> @@ -77,7 +77,7 @@ U+0629: "ة" ARABIC LETTER TEH MARBUTA U+06F8: "۸" EXTENDED ARABIC-INDIC DIGIT EIGHT --> <Key - latin:keyLabel="ه" + latin:keySpec="ه" latin:moreKeys="ﻫ|ه‍,هٔ,ة,%" latin:keyHintLabel="۸" latin:additionalMoreKeys="۸,8" @@ -85,19 +85,19 @@ <!-- U+062E: "خ" ARABIC LETTER KHAH U+06F9: "۹" EXTENDED ARABIC-INDIC DIGIT NINE --> <Key - latin:keyLabel="خ" + latin:keySpec="خ" latin:keyHintLabel="۹" latin:additionalMoreKeys="۹,9" latin:keyLabelFlags="fontNormal" /> <!-- U+062D: "ح" ARABIC LETTER HAH U+06F0: "۰" EXTENDED ARABIC-INDIC DIGIT ZERO --> <Key - latin:keyLabel="ح" + latin:keySpec="ح" latin:keyHintLabel="۰" latin:additionalMoreKeys="۰,0" latin:keyLabelFlags="fontNormal" /> <!-- U+062C: "ج" ARABIC LETTER JEEM --> <Key - latin:keyLabel="ج" + latin:keySpec="ج" latin:keyLabelFlags="fontNormal" /> </merge> diff --git a/java/res/xml/rowkeys_farsi2.xml b/java/res/xml/rowkeys_farsi2.xml index 590161f62..f94ee8e49 100644 --- a/java/res/xml/rowkeys_farsi2.xml +++ b/java/res/xml/rowkeys_farsi2.xml @@ -23,11 +23,11 @@ > <!-- U+0634: "ش" ARABIC LETTER SHEEN --> <Key - latin:keyLabel="ش" + latin:keySpec="ش" latin:keyLabelFlags="fontNormal" /> <!-- U+0633: "س" ARABIC LETTER SEEN --> <Key - latin:keyLabel="س" + latin:keySpec="س" latin:keyLabelFlags="fontNormal" /> <!-- U+06CC: "ی" ARABIC LETTER FARSI YEH U+0626: "ئ" ARABIC LETTER YEH WITH HAMZA ABOVE @@ -35,16 +35,16 @@ U+FBE8: "ﯨ" ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM U+0649: "ى" ARABIC LETTER ALEF MAKSURA --> <Key - latin:keyLabel="ی" + latin:keySpec="ی" latin:moreKeys="ئ,ي,ﯨ|ى" latin:keyLabelFlags="fontNormal" /> <!-- U+0628: "ب" ARABIC LETTER BEH --> <Key - latin:keyLabel="ب" + latin:keySpec="ب" latin:keyLabelFlags="fontNormal" /> <!-- U+0644: "ل" ARABIC LETTER LAM --> <Key - latin:keyLabel="ل" + latin:keySpec="ل" latin:keyLabelFlags="fontNormal" /> <!-- U+0627: "ا" ARABIC LETTER ALEF U+0671: "ٱ" ARABIC LETTER ALEF WASLA @@ -53,31 +53,31 @@ U+0623: "أ" ARABIC LETTER ALEF WITH HAMZA ABOVE U+0625: "إ" ARABIC LETTER ALEF WITH HAMZA BELOW --> <Key - latin:keyLabel="ا" + latin:keySpec="ا" latin:moreKeys="!fixedColumnOrder!5,ٱ,ء,آ,أ,إ" latin:keyLabelFlags="fontNormal" /> <!-- U+062A: "ت" ARABIC LETTER TEH U+0629: "ة": ARABIC LETTER TEH MARBUTA --> <Key - latin:keyLabel="ت" + latin:keySpec="ت" latin:moreKeys="ة" latin:keyLabelFlags="fontNormal" /> <!-- U+0646: "ن" ARABIC LETTER NOON --> <Key - latin:keyLabel="ن" + latin:keySpec="ن" latin:keyLabelFlags="fontNormal" /> <!-- U+0645: "م" ARABIC LETTER MEEM --> <Key - latin:keyLabel="م" + latin:keySpec="م" latin:keyLabelFlags="fontNormal" /> <!-- U+06A9: "ک" ARABIC LETTER KEHEH U+0643: "ك" ARABIC LETTER KAF --> <Key - latin:keyLabel="ک" + latin:keySpec="ک" latin:moreKeys="ك" latin:keyLabelFlags="fontNormal" /> <!-- U+06AF: "گ" ARABIC LETTER GAF --> <Key - latin:keyLabel="گ" + latin:keySpec="گ" latin:keyLabelFlags="fontNormal" /> </merge> diff --git a/java/res/xml/rowkeys_farsi3.xml b/java/res/xml/rowkeys_farsi3.xml index 98949f4c0..edc22f95a 100644 --- a/java/res/xml/rowkeys_farsi3.xml +++ b/java/res/xml/rowkeys_farsi3.xml @@ -23,40 +23,40 @@ > <!-- U+0638: "ظ" ARABIC LETTER ZAH --> <Key - latin:keyLabel="ظ" + latin:keySpec="ظ" latin:keyLabelFlags="fontNormal" /> <!-- U+0637: "ط" ARABIC LETTER TAH --> <Key - latin:keyLabel="ط" + latin:keySpec="ط" latin:keyLabelFlags="fontNormal" /> <!-- U+0698: "ژ" ARABIC LETTER JEH --> <Key - latin:keyLabel="ژ" + latin:keySpec="ژ" latin:keyLabelFlags="fontNormal" /> <!-- U+0632: "ز" ARABIC LETTER ZAIN --> <Key - latin:keyLabel="ز" + latin:keySpec="ز" latin:keyLabelFlags="fontNormal" /> <!-- U+0631: "ر" ARABIC LETTER REH --> <Key - latin:keyLabel="ر" + latin:keySpec="ر" latin:keyLabelFlags="fontNormal" /> <!-- U+0630: "ذ" ARABIC LETTER THAL --> <Key - latin:keyLabel="ذ" + latin:keySpec="ذ" latin:keyLabelFlags="fontNormal" /> <!-- U+062F: "د" ARABIC LETTER DAL --> <Key - latin:keyLabel="د" + latin:keySpec="د" latin:keyLabelFlags="fontNormal" /> <!-- U+067E: "پ" ARABIC LETTER PEH --> <Key - latin:keyLabel="پ" + latin:keySpec="پ" latin:keyLabelFlags="fontNormal" /> <!-- U+0648: "و" ARABIC LETTER WAW U+0624: "ؤ" ARABIC LETTER WAW WITH HAMZA ABOVE --> <Key - latin:keyLabel="و" + latin:keySpec="و" latin:moreKeys="ؤ" latin:keyLabelFlags="fontNormal" /> <include diff --git a/java/res/xml/rowkeys_georgian1.xml b/java/res/xml/rowkeys_georgian1.xml index d31a4c79c..c412aa3fa 100644 --- a/java/res/xml/rowkeys_georgian1.xml +++ b/java/res/xml/rowkeys_georgian1.xml @@ -26,104 +26,104 @@ latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted" > <Key - latin:keyLabel="Q" + latin:keySpec="Q" latin:keyHintLabel="1" latin:additionalMoreKeys="1" /> <!-- U+10ED: "ჭ" GEORGIAN LETTER CHAR --> <Key - latin:keyLabel="ჭ" + latin:keySpec="ჭ" latin:keyHintLabel="2" latin:additionalMoreKeys="2" /> <Key - latin:keyLabel="E" + latin:keySpec="E" latin:keyHintLabel="3" latin:additionalMoreKeys="3" /> <!-- U+10E6: "ღ" GEORGIAN LETTER GHAN --> <Key - latin:keyLabel="ღ" + latin:keySpec="ღ" latin:keyHintLabel="4" latin:additionalMoreKeys="4" /> <!-- U+10D7: "თ" GEORGIAN LETTER TAN --> <Key - latin:keyLabel="თ" + latin:keySpec="თ" latin:keyHintLabel="5" latin:additionalMoreKeys="5" /> <Key - latin:keyLabel="Y" + latin:keySpec="Y" latin:keyHintLabel="6" latin:additionalMoreKeys="6" /> <Key - latin:keyLabel="U" + latin:keySpec="U" latin:keyHintLabel="7" latin:additionalMoreKeys="7" /> <Key - latin:keyLabel="I" + latin:keySpec="I" latin:keyHintLabel="8" latin:additionalMoreKeys="8" /> <Key - latin:keyLabel="O" + latin:keySpec="O" latin:keyHintLabel="9" latin:additionalMoreKeys="9" /> <Key - latin:keyLabel="P" + latin:keySpec="P" latin:keyHintLabel="0" latin:additionalMoreKeys="0" /> </case> <default> <!-- U+10E5: "ქ" GEORGIAN LETTER GHAN --> <Key - latin:keyLabel="ქ" + latin:keySpec="ქ" latin:keyHintLabel="1" latin:additionalMoreKeys="1" /> <!-- U+10EC: "წ" GEORGIAN LETTER CIL --> <Key - latin:keyLabel="წ" + latin:keySpec="წ" latin:keyHintLabel="2" latin:additionalMoreKeys="2" /> <!-- U+10D4: "ე" GEORGIAN LETTER EN U+10F1: "ჱ" GEORGIAN LETTER HE --> <Key - latin:keyLabel="ე" + latin:keySpec="ე" latin:moreKeys="ჱ" latin:keyHintLabel="3" latin:additionalMoreKeys="3" /> <!-- U+10E0: "რ" GEORGIAN LETTER RAE --> <Key - latin:keyLabel="რ" + latin:keySpec="რ" latin:keyHintLabel="4" latin:additionalMoreKeys="4" /> <!-- U+10E2: "ტ" GEORGIAN LETTER TAR --> <Key - latin:keyLabel="ტ" + latin:keySpec="ტ" latin:keyHintLabel="5" latin:additionalMoreKeys="5" /> <!-- U+10E7: "ყ" GEORGIAN LETTER QAR U+10F8: "ჸ" GEORGIAN LETTER ELIFI --> <Key - latin:keyLabel="ყ" + latin:keySpec="ყ" latin:moreKeys="ჸ" latin:keyHintLabel="6" latin:additionalMoreKeys="6" /> <!-- U+10E3: "უ" GEORGIAN LETTER UN --> <Key - latin:keyLabel="უ" + latin:keySpec="უ" latin:keyHintLabel="7" latin:additionalMoreKeys="7" /> <!-- U+10D8: "ი" GEORGIAN LETTER IN U+10F2: "ჲ" GEORGIAN LETTER HIE --> <Key - latin:keyLabel="ი" + latin:keySpec="ი" latin:moreKeys="ჲ" latin:keyHintLabel="8" latin:additionalMoreKeys="8" /> <!-- U+10DD: "ო" GEORGIAN LETTER ON --> <Key - latin:keyLabel="ო" + latin:keySpec="ო" latin:keyHintLabel="9" latin:additionalMoreKeys="9" /> <!-- U+10DE: "პ" GEORGIAN LETTER PAR --> <Key - latin:keyLabel="პ" + latin:keySpec="პ" latin:keyHintLabel="0" latin:additionalMoreKeys="0" /> </default> diff --git a/java/res/xml/rowkeys_georgian2.xml b/java/res/xml/rowkeys_georgian2.xml index cdccda31f..162960d75 100644 --- a/java/res/xml/rowkeys_georgian2.xml +++ b/java/res/xml/rowkeys_georgian2.xml @@ -26,64 +26,64 @@ latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted" > <Key - latin:keyLabel="A" /> + latin:keySpec="A" /> <!-- U+10E8: "შ" GEORGIAN LETTER SHIN --> <Key - latin:keyLabel="შ" /> + latin:keySpec="შ" /> <Key - latin:keyLabel="D" /> + latin:keySpec="D" /> <Key - latin:keyLabel="F" /> + latin:keySpec="F" /> <Key - latin:keyLabel="G" /> + latin:keySpec="G" /> <Key - latin:keyLabel="H" /> + latin:keySpec="H" /> <!-- U+10DF: "ჟ" GEORGIAN LETTER ZHAR --> <Key - latin:keyLabel="ჟ" /> + latin:keySpec="ჟ" /> <Key - latin:keyLabel="K" /> + latin:keySpec="K" /> <Key - latin:keyLabel="L" /> + latin:keySpec="L" /> </case> <default> <!-- U+10D0: "ა" GEORGIAN LETTER AN U+10FA: "ჺ" GEORGIAN LETTER AIN --> <Key - latin:keyLabel="ა" + latin:keySpec="ა" latin:moreKeys="ჺ" /> <!-- U+10E1: "ს" GEORGIAN LETTER SAN --> <Key - latin:keyLabel="ს" /> + latin:keySpec="ს" /> <!-- U+10D3: "დ" GEORGIAN LETTER DON --> <Key - latin:keyLabel="დ" /> + latin:keySpec="დ" /> <!-- U+10E4: "ფ" GEORGIAN LETTER PHAR U+10F6: "ჶ" GEORGIAN LETTER FI --> <Key - latin:keyLabel="ფ" + latin:keySpec="ფ" latin:moreKeys="ჶ" /> <!-- U+10D2: "გ" GEORGIAN LETTER GAN U+10F9: "ჹ" GEORGIAN LETTER TURNED GAN --> <Key - latin:keyLabel="გ" + latin:keySpec="გ" latin:moreKeys="ჹ" /> <!-- U+10F0: "ჰ" GEORGIAN LETTER HAE U+10F5: "ჵ" GEORGIAN LETTER HOE --> <Key - latin:keyLabel="ჰ" + latin:keySpec="ჰ" latin:moreKeys="ჵ" /> <!-- U+10EF: "ჯ" GEORGIAN LETTER JHAN U+10F7: "ჷ" GEORGIAN LETTER YN --> <Key - latin:keyLabel="ჯ" + latin:keySpec="ჯ" latin:moreKeys="ჷ" /> <!-- U+10D9: "კ" GEORGIAN LETTER KAN --> <Key - latin:keyLabel="კ" /> + latin:keySpec="კ" /> <!-- U+10DA: "ლ" GEORGIAN LETTER LAS --> <Key - latin:keyLabel="ლ" /> + latin:keySpec="ლ" /> </default> </switch> </merge> diff --git a/java/res/xml/rowkeys_georgian3.xml b/java/res/xml/rowkeys_georgian3.xml index a3714586f..a16acf8d3 100644 --- a/java/res/xml/rowkeys_georgian3.xml +++ b/java/res/xml/rowkeys_georgian3.xml @@ -27,49 +27,49 @@ > <!-- U+10EB: "ძ" GEORGIAN LETTER JIL --> <Key - latin:keyLabel="ძ" /> + latin:keySpec="ძ" /> <Key - latin:keyLabel="X" /> + latin:keySpec="X" /> <!-- U+10E9: "ჩ" GEORGIAN LETTER CHIN --> <Key - latin:keyLabel="ჩ" /> + latin:keySpec="ჩ" /> <Key - latin:keyLabel="V" /> + latin:keySpec="V" /> <Key - latin:keyLabel="B" /> + latin:keySpec="B" /> <Key - latin:keyLabel="N" /> + latin:keySpec="N" /> <Key - latin:keyLabel="M" /> + latin:keySpec="M" /> </case> <default> <!-- U+10D6: "ზ" GEORGIAN LETTER ZEN --> <Key - latin:keyLabel="ზ" /> + latin:keySpec="ზ" /> <!-- U+10EE: "ხ" GEORGIAN LETTER XAN U+10F4: "ჴ" GEORGIAN LETTER HAR --> <Key - latin:keyLabel="ხ" + latin:keySpec="ხ" latin:moreKeys="ჴ" /> <!-- U+10EA: "ც" GEORGIAN LETTER CAN --> <Key - latin:keyLabel="ც" /> + latin:keySpec="ც" /> <!-- U+10D5: "ვ" GEORGIAN LETTER VIN U+10F3: "ჳ" GEORGIAN LETTER WE --> <Key - latin:keyLabel="ვ" + latin:keySpec="ვ" latin:moreKeys="ჳ" /> <!-- U+10D1: "ბ" GEORGIAN LETTER BAN --> <Key - latin:keyLabel="ბ" /> + latin:keySpec="ბ" /> <!-- U+10DC: "ნ" GEORGIAN LETTER NAR U+10FC: "ჼ" MODIFIER LETTER GEORGIAN NAR --> <Key - latin:keyLabel="ნ" + latin:keySpec="ნ" latin:moreKeys="ჼ" /> <!-- U+10DB: "მ" GEORGIAN LETTER MAN --> <Key - latin:keyLabel="მ" /> + latin:keySpec="მ" /> </default> </switch> </merge> diff --git a/java/res/xml/rowkeys_greek1.xml b/java/res/xml/rowkeys_greek1.xml index 5777d3b85..5080dc843 100644 --- a/java/res/xml/rowkeys_greek1.xml +++ b/java/res/xml/rowkeys_greek1.xml @@ -29,7 +29,7 @@ > U+0385: "΅" GREEK DIALYTIKA TONOS <Key - latin:keyLabel="΅" + latin:keySpec="΅" latin:keyHintLabel="2" latin:additionalMoreKeys="2" /> </case> @@ -37,7 +37,7 @@ --> <!-- U+03C2: "ς" GREEK SMALL LETTER FINAL SIGMA --> <Key - latin:keyLabel="ς" + latin:keySpec="ς" latin:keyLabelFlags="preserveCase" latin:keyHintLabel="2" latin:additionalMoreKeys="2" /> @@ -48,18 +48,18 @@ <!-- U+03B5: "ε" GREEK SMALL LETTER EPSILON U+03AD: "έ" GREEK SMALL LETTER EPSILON WITH TONOS --> <Key - latin:keyLabel="ε" + latin:keySpec="ε" latin:keyHintLabel="3" latin:additionalMoreKeys="3" latin:moreKeys="έ" /> <!-- U+03C1: "ρ" GREEK SMALL LETTER RHO --> <Key - latin:keyLabel="ρ" + latin:keySpec="ρ" latin:keyHintLabel="4" latin:additionalMoreKeys="4" /> <!-- U+03C4: "τ" GREEK SMALL LETTER TAU --> <Key - latin:keyLabel="τ" + latin:keySpec="τ" latin:keyHintLabel="5" latin:additionalMoreKeys="5" /> <!-- U+03C5: "υ" GREEK SMALL LETTER UPSILON @@ -67,13 +67,13 @@ U+03CB: "ϋ" GREEK SMALL LETTER UPSILON WITH DIALYTIKA U+03B0: "ΰ" GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS --> <Key - latin:keyLabel="υ" + latin:keySpec="υ" latin:keyHintLabel="6" latin:additionalMoreKeys="6" latin:moreKeys="ύ,ϋ,ΰ" /> <!-- U+03B8: "θ" GREEK SMALL LETTER THETA --> <Key - latin:keyLabel="θ" + latin:keySpec="θ" latin:keyHintLabel="7" latin:additionalMoreKeys="7" /> <!-- U+03B9: "ι" GREEK SMALL LETTER IOTA @@ -81,20 +81,20 @@ U+03CA: "ϊ" GREEK SMALL LETTER IOTA WITH DIALYTIKA U+0390: "ΐ" GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS --> <Key - latin:keyLabel="ι" + latin:keySpec="ι" latin:keyHintLabel="8" latin:additionalMoreKeys="8" latin:moreKeys="ί,ϊ,ΐ" /> <!-- U+03BF: "ο" GREEK SMALL LETTER OMICRON U+03CC: "ό" GREEK SMALL LETTER OMICRON WITH TONOS --> <Key - latin:keyLabel="ο" + latin:keySpec="ο" latin:keyHintLabel="9" latin:additionalMoreKeys="9" latin:moreKeys="ό" /> <!-- U+03C0: "π" GREEK SMALL LETTER PI --> <Key - latin:keyLabel="π" + latin:keySpec="π" latin:keyHintLabel="0" latin:additionalMoreKeys="0" /> </merge> diff --git a/java/res/xml/rowkeys_greek2.xml b/java/res/xml/rowkeys_greek2.xml index 91bdc1165..d8769caa9 100644 --- a/java/res/xml/rowkeys_greek2.xml +++ b/java/res/xml/rowkeys_greek2.xml @@ -24,32 +24,32 @@ <!-- U+03B1: "α" GREEK SMALL LETTER ALPHA U+03AC: "ά" GREEK SMALL LETTER ALPHA WITH TONOS --> <Key - latin:keyLabel="α" + latin:keySpec="α" latin:moreKeys="ά" /> <!-- U+03C3: "σ" GREEK SMALL LETTER SIGMA --> <Key - latin:keyLabel="σ" /> + latin:keySpec="σ" /> <!-- U+03B4: "δ" GREEK SMALL LETTER DELTA --> <Key - latin:keyLabel="δ" /> + latin:keySpec="δ" /> <!-- U+03C6: "φ" GREEK SMALL LETTER PHI --> <Key - latin:keyLabel="φ" /> + latin:keySpec="φ" /> <!-- U+03B3: "γ" GREEK SMALL LETTER GAMMA --> <Key - latin:keyLabel="γ" /> + latin:keySpec="γ" /> <!-- U+03B7: "η" GREEK SMALL LETTER ETA U+03AE: "ή" GREEK SMALL LETTER ETA WITH TONOS --> <Key - latin:keyLabel="η" + latin:keySpec="η" latin:moreKeys="ή" /> <!-- U+03BE: "ξ" GREEK SMALL LETTER XI --> <Key - latin:keyLabel="ξ" /> + latin:keySpec="ξ" /> <!-- U+03BA: "κ" GREEK SMALL LETTER KAPPA --> <Key - latin:keyLabel="κ" /> + latin:keySpec="κ" /> <!-- U+03BB: "λ" GREEK SMALL LETTER LAMDA --> <Key - latin:keyLabel="λ" /> + latin:keySpec="λ" /> </merge> diff --git a/java/res/xml/rowkeys_greek3.xml b/java/res/xml/rowkeys_greek3.xml index 8a99db925..3f989bc9c 100644 --- a/java/res/xml/rowkeys_greek3.xml +++ b/java/res/xml/rowkeys_greek3.xml @@ -23,25 +23,25 @@ > <!-- U+03B6: "ζ" GREEK SMALL LETTER ZETA --> <Key - latin:keyLabel="ζ" /> + latin:keySpec="ζ" /> <!-- U+03C7: "χ" GREEK SMALL LETTER CHI --> <Key - latin:keyLabel="χ" /> + latin:keySpec="χ" /> <!-- U+03C8: "ψ" GREEK SMALL LETTER PSI --> <Key - latin:keyLabel="ψ" /> + latin:keySpec="ψ" /> <!-- U+03C9: "ω" GREEK SMALL LETTER OMEGA U+03CE: "ώ" GREEK SMALL LETTER OMEGA WITH TONOS --> <Key - latin:keyLabel="ω" + latin:keySpec="ω" latin:moreKeys="ώ" /> <!-- U+03B2: "β" GREEK SMALL LETTER BETA --> <Key - latin:keyLabel="β" /> + latin:keySpec="β" /> <!-- U+03BD: "ν" GREEK SMALL LETTER NU --> <Key - latin:keyLabel="ν" /> + latin:keySpec="ν" /> <!-- U+03BC: "μ" GREEK SMALL LETTER MU --> <Key - latin:keyLabel="μ" /> + latin:keySpec="μ" /> </merge> diff --git a/java/res/xml/rowkeys_hebrew1.xml b/java/res/xml/rowkeys_hebrew1.xml index 81a00e367..e888977ae 100644 --- a/java/res/xml/rowkeys_hebrew1.xml +++ b/java/res/xml/rowkeys_hebrew1.xml @@ -26,22 +26,22 @@ latin:mode="email|url" > <Key - latin:keyLabel="-" + latin:keySpec="-" latin:keyHintLabel="1" latin:additionalMoreKeys="1" /> <Key - latin:keyLabel="_" + latin:keySpec="_" latin:keyHintLabel="2" latin:additionalMoreKeys="2" /> </case> <default> <Key - latin:keyLabel="\'" + latin:keySpec="\'" latin:keyHintLabel="1" latin:additionalMoreKeys="1" latin:moreKeys=""" /> <Key - latin:keyLabel="-" + latin:keySpec="-" latin:keyHintLabel="2" latin:additionalMoreKeys="2" latin:moreKeys="_" /> @@ -49,42 +49,42 @@ </switch> <!-- U+05E7: "ק" HEBREW LETTER QOF --> <Key - latin:keyLabel="ק" + latin:keySpec="ק" latin:keyHintLabel="3" latin:additionalMoreKeys="3" /> <!-- U+05E8: "ר" HEBREW LETTER RESH --> <Key - latin:keyLabel="ר" + latin:keySpec="ר" latin:keyHintLabel="4" latin:additionalMoreKeys="4" /> <!-- U+05D0: "א" HEBREW LETTER ALEF --> <Key - latin:keyLabel="א" + latin:keySpec="א" latin:keyHintLabel="5" latin:additionalMoreKeys="5" /> <!-- U+05D8: "ט" HEBREW LETTER TET --> <Key - latin:keyLabel="ט" + latin:keySpec="ט" latin:keyHintLabel="6" latin:additionalMoreKeys="6" /> <!-- U+05D5: "ו" HEBREW LETTER VAV --> <Key - latin:keyLabel="ו" + latin:keySpec="ו" latin:keyHintLabel="7" latin:additionalMoreKeys="7" /> <!-- U+05DF: "ן" HEBREW LETTER FINAL NUN --> <Key - latin:keyLabel="ן" + latin:keySpec="ן" latin:keyHintLabel="8" latin:additionalMoreKeys="8" /> <!-- U+05DD: "ם" HEBREW LETTER FINAL MEM --> <Key - latin:keyLabel="ם" + latin:keySpec="ם" latin:keyHintLabel="9" latin:additionalMoreKeys="9" /> <!-- U+05E4: "פ" HEBREW LETTER PE --> <Key - latin:keyLabel="פ" + latin:keySpec="פ" latin:keyHintLabel="0" latin:additionalMoreKeys="0" /> </merge> diff --git a/java/res/xml/rowkeys_hebrew2.xml b/java/res/xml/rowkeys_hebrew2.xml index e4ecac335..d43f5a8f2 100644 --- a/java/res/xml/rowkeys_hebrew2.xml +++ b/java/res/xml/rowkeys_hebrew2.xml @@ -23,38 +23,38 @@ > <!-- U+05E9: "ש" HEBREW LETTER SHIN --> <Key - latin:keyLabel="ש" /> + latin:keySpec="ש" /> <!-- U+05D3: "ד" HEBREW LETTER DALET --> <Key - latin:keyLabel="ד" /> + latin:keySpec="ד" /> <!-- U+05D2: "ג" HEBREW LETTER GIMEL U+05D2 U+05F3: "ג׳" HEBREW LETTER GIMEL + HEBREW PUNCTUATION GERESH --> <Key - latin:keyLabel="ג" + latin:keySpec="ג" latin:moreKeys="ג׳" /> <!-- U+05DB: "כ" HEBREW LETTER KAF --> <Key - latin:keyLabel="כ" /> + latin:keySpec="כ" /> <!-- U+05E2: "ע" HEBREW LETTER AYIN --> <Key - latin:keyLabel="ע" /> + latin:keySpec="ע" /> <!-- U+05D9: "י" HEBREW LETTER YOD U+05F2 U+05B7: "ײַ" HEBREW LIGATURE YIDDISH DOUBLE YOD + HEBREW POINT PATAH --> <Key - latin:keyLabel="י" + latin:keySpec="י" latin:moreKeys="ײַ" /> <!-- U+05D7: "ח" HEBREW LETTER HET U+05D7 U+05F3: "ח׳" HEBREW LETTER HET + HEBREW PUNCTUATION GERESH --> <Key - latin:keyLabel="ח" + latin:keySpec="ח" latin:moreKeys="ח׳" /> <!-- U+05DC: "ל" HEBREW LETTER LAMED --> <Key - latin:keyLabel="ל" /> + latin:keySpec="ל" /> <!-- U+05DA: "ך" HEBREW LETTER FINAL KAF --> <Key - latin:keyLabel="ך" /> + latin:keySpec="ך" /> <!-- U+05E3: "ף" HEBREW LETTER FINAL PE --> <Key - latin:keyLabel="ף" /> + latin:keySpec="ף" /> </merge> diff --git a/java/res/xml/rowkeys_hebrew3.xml b/java/res/xml/rowkeys_hebrew3.xml index 805a7a596..928e6b255 100644 --- a/java/res/xml/rowkeys_hebrew3.xml +++ b/java/res/xml/rowkeys_hebrew3.xml @@ -24,36 +24,36 @@ <!-- U+05D6: "ז" HEBREW LETTER ZAYIN U+05D6 U+05F3: "ז׳" HEBREW LETTER ZAYIN + HEBREW PUNCTUATION GERESH --> <Key - latin:keyLabel="ז" + latin:keySpec="ז" latin:moreKeys="ז׳" /> <!-- U+05E1: "ס" HEBREW LETTER SAMEKH --> <Key - latin:keyLabel="ס" /> + latin:keySpec="ס" /> <!-- U+05D1: "ב" HEBREW LETTER BET --> <Key - latin:keyLabel="ב" /> + latin:keySpec="ב" /> <!-- U+05D4: "ה" HEBREW LETTER HE --> <Key - latin:keyLabel="ה" /> + latin:keySpec="ה" /> <!-- U+05E0: "נ" HEBREW LETTER NUN --> <Key - latin:keyLabel="נ" /> + latin:keySpec="נ" /> <!-- U+05DE: "מ" HEBREW LETTER MEM --> <Key - latin:keyLabel="מ" /> + latin:keySpec="מ" /> <!-- U+05E6: "צ" HEBREW LETTER TSADI U+05E6 U+05F3: "צ׳" HEBREW LETTER TSADI + HEBREW PUNCTUATION GERESH --> <Key - latin:keyLabel="צ" + latin:keySpec="צ" latin:moreKeys="צ׳" /> <!-- U+05EA: "ת" HEBREW LETTER TAV U+05EA U+05F3: "ת׳" HEBREW LETTER TAV + HEBREW PUNCTUATION GERESH --> <Key - latin:keyLabel="ת" + latin:keySpec="ת" latin:moreKeys="ת׳" /> <!-- U+05E5: "ץ" HEBREW LETTER FINAL TSADI U+05E5 U+05F3: "ץ׳" HEBREW LETTER FINAL TSADI + HEBREW PUNCTUATION GERESH --> <Key - latin:keyLabel="ץ" + latin:keySpec="ץ" latin:moreKeys="ץ׳" /> </merge> diff --git a/java/res/xml/rowkeys_hindi1.xml b/java/res/xml/rowkeys_hindi1.xml index c0b3cb913..914618a76 100644 --- a/java/res/xml/rowkeys_hindi1.xml +++ b/java/res/xml/rowkeys_hindi1.xml @@ -28,38 +28,38 @@ <!-- U+0914: "औ" DEVANAGARI LETTER AU U+0912/U+0902: "ऒं" DEVANAGARI LETTER SHORT O//DEVANAGARI SIGN ANUSVARA --> <Key - latin:keyLabel="औ" + latin:keySpec="औ" latin:moreKeys="ऒं" latin:keyLabelFlags="fontNormal" /> <!-- U+0910: "ऐ" DEVANAGARI LETTER AI U+0910/U+0902: "ऐं" DEVANAGARI LETTER AI/DEVANAGARI SIGN ANUSVARA --> <Key - latin:keyLabel="ऐ" + latin:keySpec="ऐ" latin:moreKeys="ऐं" latin:keyLabelFlags="fontNormal" /> <!-- U+0906: "आ" DEVANAGARI LETTER AA U+0906/U+0902: "आं" DEVANAGARI LETTER AA/DEVANAGARI SIGN ANUSVARA U+0906/U+0901: "आँ" DEVANAGARI LETTER AA/DEVANAGARI SIGN CANDRABINDU --> <Key - latin:keyLabel="आ" + latin:keySpec="आ" latin:moreKeys="आं,आँ" latin:keyLabelFlags="fontNormal" /> <!-- U+0908: "ई" DEVANAGARI LETTER II U+0908/U+0902: "ईं" DEVANAGARI LETTER II/DEVANAGARI SIGN ANUSVARA --> <Key - latin:keyLabel="ई" + latin:keySpec="ई" latin:moreKeys="ईं" latin:keyLabelFlags="fontNormal" /> <!-- U+090A: "ऊ" DEVANAGARI LETTER UU U+090A/U+0902: "ऊं" DEVANAGARI LETTER UU/DEVANAGARI SIGN ANUSVARA U+090A/U+0901: "ऊँ" DEVANAGARI LETTER UU/DEVANAGARI SIGN CANDRABINDU --> <Key - latin:keyLabel="ऊ" + latin:keySpec="ऊ" latin:moreKeys="ऊं,ऊँ" latin:keyLabelFlags="fontNormal" /> <!-- U+092D: "भ" DEVANAGARI LETTER BHA --> <Key - latin:keyLabel="भ" + latin:keySpec="भ" latin:keyLabelFlags="fontNormal" /> <!-- Because the font rendering system prior to API version 16 can't automatically render dotted circle for incomplete combining letter of some scripts, different @@ -70,22 +70,22 @@ latin:keyStyle="baseKeyDevanagariSignVisarga" /> <!-- U+0918: "घ" DEVANAGARI LETTER GHA --> <Key - latin:keyLabel="घ" + latin:keySpec="घ" latin:keyLabelFlags="fontNormal" /> <!-- U+0927: "ध" DEVANAGARI LETTER DHA U+0915/U+094D/U+0937: "क्ष" DEVANAGARI LETTER KA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER SSA U+0936/U+094D/U+0930: "श्र" DEVANAGARI LETTER SHA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER RA --> <Key - latin:keyLabel="ध" + latin:keySpec="ध" latin:moreKeys="क्ष,श्र" latin:keyLabelFlags="fontNormal" /> <!-- U+091D: "झ" DEVANAGARI LETTER JHA --> <Key - latin:keyLabel="झ" + latin:keySpec="झ" latin:keyLabelFlags="fontNormal" /> <!-- U+0922: "ढ" DEVANAGARI LETTER DDHA --> <Key - latin:keyLabel="ढ" + latin:keySpec="ढ" latin:keyLabelFlags="fontNormal" /> </case> <default> @@ -143,7 +143,7 @@ U+096C: "६" DEVANAGARI DIGIT SIX U+092C/U+0952: "ब॒" DEVANAGARI LETTER BA/DEVANAGARI STRESS SIGN ANUDATTA --> <Key - latin:keyLabel="ब" + latin:keySpec="ब" latin:moreKeys="ब॒,%" latin:keyHintLabel="6" latin:additionalMoreKeys="६,6" @@ -151,7 +151,7 @@ <!-- U+0939: "ह" DEVANAGARI LETTER HA U+096D: "७" DEVANAGARI DIGIT SEVEN --> <Key - latin:keyLabel="ह" + latin:keySpec="ह" latin:keyHintLabel="7" latin:additionalMoreKeys="७,7" latin:keyLabelFlags="fontNormal" /> @@ -161,7 +161,7 @@ U+0917/U+0952: "ग॒" DEVANAGARI LETTER GA/DEVANAGARI STRESS SIGN ANUDATTA U+096E: "८" DEVANAGARI DIGIT EIGHT --> <Key - latin:keyLabel="ग" + latin:keySpec="ग" latin:moreKeys="ज्ञ,ग़,ग॒,%" latin:keyHintLabel="8" latin:additionalMoreKeys="८,8" @@ -169,7 +169,7 @@ <!-- U+0926: "द" DEVANAGARI LETTER DA U+096F: "९" DEVANAGARI DIGIT NINE --> <Key - latin:keyLabel="द" + latin:keySpec="द" latin:keyHintLabel="9" latin:additionalMoreKeys="९,9" latin:keyLabelFlags="fontNormal" /> @@ -179,7 +179,7 @@ U+091C/U+093C: "ज़" DEVANAGARI LETTER JA/DEVANAGARI SIGN NUKTA U+0966: "०" DEVANAGARI DIGIT ZERO --> <Key - latin:keyLabel="ज" + latin:keySpec="ज" latin:moreKeys="ज॒,ज्ञ,ज़,%" latin:keyHintLabel="0" latin:additionalMoreKeys="०,0" @@ -188,7 +188,7 @@ U+0921/U+0952: "ड॒" DEVANAGARI LETTER DDA/DEVANAGARI STRESS SIGN ANUDATTA U+0921/U+093C: "ड़" DEVANAGARI LETTER DDA/DEVANAGARI SIGN NUKTA --> <Key - latin:keyLabel="ड" + latin:keySpec="ड" latin:moreKeys="ड॒,ड़" latin:keyLabelFlags="fontNormal" /> </default> diff --git a/java/res/xml/rowkeys_hindi2.xml b/java/res/xml/rowkeys_hindi2.xml index 70ac66ee4..7ba4ee1ec 100644 --- a/java/res/xml/rowkeys_hindi2.xml +++ b/java/res/xml/rowkeys_hindi2.xml @@ -30,7 +30,7 @@ U+0911: "ऑ" DEVANAGARI LETTER CANDRA O U+0912: "ऒ" DEVANAGARI LETTER SHORT O --> <Key - latin:keyLabel="ओ" + latin:keySpec="ओ" latin:moreKeys="ओं,ऑ,ऒ" latin:keyLabelFlags="fontNormal" /> <!-- U+090F: "ए" DEVANAGARI LETTER E @@ -39,60 +39,60 @@ U+090D: "ऍ" DEVANAGARI LETTER CANDRA E U+090E: "ऎ" DEVANAGARI LETTER SHORT E --> <Key - latin:keyLabel="ए" + latin:keySpec="ए" latin:moreKeys="एं,एँ,ऍ,ऎ" latin:keyLabelFlags="fontNormal" /> <!-- U+0905: "अ" DEVANAGARI LETTER A U+0905/U+0902: "अं" DEVANAGARI LETTER A/DEVANAGARI SIGN ANUSVARA U+0905/U+0901: "अँ" DEVANAGARI LETTER A/DEVANAGARI SIGN CANDRABINDU --> <Key - latin:keyLabel="अ" + latin:keySpec="अ" latin:moreKeys="अं,अँ" latin:keyLabelFlags="fontNormal" /> <!-- U+0907: "इ" DEVANAGARI LETTER I U+0907/U+0902: "इं" DEVANAGARI LETTER I/DEVANAGARI SIGN ANUSVARA U+0907/U+0901: "इं" DEVANAGARI LETTER I/DEVANAGARI SIGN CANDRABINDU --> <Key - latin:keyLabel="इ" + latin:keySpec="इ" latin:moreKeys="इं,इँ" latin:keyLabelFlags="fontNormal" /> <!-- U+0909: "उ" DEVANAGARI LETTER U U+0909/U+0902: "उं" DEVANAGARI LETTER U/DEVANAGARI SIGN ANUSVARA U+0909/U+0901: "उँ" DEVANAGARI LETTER U/DEVANAGARI SIGN CANDRABINDU --> <Key - latin:keyLabel="उ" + latin:keySpec="उ" latin:moreKeys="उं,उँ" latin:keyLabelFlags="fontNormal" /> <!-- U+092B: "फ" DEVANAGARI LETTER PHA U+092B/U+093C: "फ़" DEVANAGARI LETTER PHA/DEVANAGARI SIGN NUKTA --> <Key - latin:keyLabel="फ" + latin:keySpec="फ" latin:moreKeys="फ़" latin:keyLabelFlags="fontNormal" /> <!-- U+0931: "ऱ" DEVANAGARI LETTER RRA U+094D/U+0930: "्र" DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER RA U+0930/U+094D: "र्" DEVANAGARI LETTER RA/DEVANAGARI SIGN VIRAMA --> <Key - latin:keyLabel="ऱ" + latin:keySpec="ऱ" latin:moreKeys="्र,र्" latin:keyLabelFlags="fontNormal" /> <!-- U+0916: "ख" DEVANAGARI LETTER KHA U+0916/U+093C: "ख़" DEVANAGARI LETTER KHA/DEVANAGARI SIGN NUKTA --> <Key - latin:keyLabel="ख" + latin:keySpec="ख" latin:moreKeys="ख़" latin:keyLabelFlags="fontNormal" /> <!-- U+0925: "थ" DEVANAGARI LETTER THA --> <Key - latin:keyLabel="थ" + latin:keySpec="थ" latin:keyLabelFlags="fontNormal" /> <!-- U+091B: "छ" DEVANAGARI LETTER CHA --> <Key - latin:keyLabel="छ" + latin:keySpec="छ" latin:keyLabelFlags="fontNormal" /> <!-- U+0920: "ठ" DEVANAGARI LETTER TTHA --> <Key - latin:keyLabel="ठ" + latin:keySpec="ठ" latin:keyLabelFlags="fontNormal" /> </case> <default> @@ -133,35 +133,35 @@ latin:keyStyle="baseKeyDevanagariVowelSignU" /> <!-- U+092A: "प" DEVANAGARI LETTER PA --> <Key - latin:keyLabel="प" + latin:keySpec="प" latin:keyLabelFlags="fontNormal" /> <!-- U+0930: "र" DEVANAGARI LETTER RA U+090B: "ऋ" DEVANAGARI LETTER VOCALIC R U+0930/U+093C: "ऱ" DEVANAGARI LETTER RA/DEVANAGARI SIGN NUKTA U+0960: "ॠ" DEVANAGARI LETTER VOCALIC RR --> <Key - latin:keyLabel="र" + latin:keySpec="र" latin:moreKeys="ऋ,ऱ,ॠ" latin:keyLabelFlags="fontNormal" /> <!-- U+0915: "क" DEVANAGARI LETTER KA U+0915/U+093C: "क़" DEVANAGARI LETTER KA/DEVANAGARI SIGN NUKTA --> <Key - latin:keyLabel="क" + latin:keySpec="क" latin:moreKeys="क़" latin:keyLabelFlags="fontNormal" /> <!-- U+0924: "त" DEVANAGARI LETTER TA U+0924/U+094D/U+0930: "त्र" DEVANAGARI LETTER TA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER RA --> <Key - latin:keyLabel="त" + latin:keySpec="त" latin:moreKeys="त्र" latin:keyLabelFlags="fontNormal" /> <!-- U+091A: "च" DEVANAGARI LETTER CA --> <Key - latin:keyLabel="च" + latin:keySpec="च" latin:keyLabelFlags="fontNormal" /> <!-- U+091F: "ट" DEVANAGARI LETTER TTA --> <Key - latin:keyLabel="ट" + latin:keySpec="ट" latin:keyLabelFlags="fontNormal" /> </default> </switch> diff --git a/java/res/xml/rowkeys_hindi3.xml b/java/res/xml/rowkeys_hindi3.xml index 136bc5f22..a9be47266 100644 --- a/java/res/xml/rowkeys_hindi3.xml +++ b/java/res/xml/rowkeys_hindi3.xml @@ -27,7 +27,7 @@ > <!-- U+0911: "ऑ" DEVANAGARI LETTER CANDRA O --> <Key - latin:keyLabel="ऑ" + latin:keySpec="ऑ" latin:keyLabelFlags="fontNormal" /> <!-- Because the font rendering system prior to API version 16 can't automatically render dotted circle for incomplete combining letter of some scripts, different @@ -36,24 +36,24 @@ latin:keyboardLayout="@xml/key_devanagari_sign_candrabindu" /> <!-- U+0923: "ण" DEVANAGARI LETTER NNA --> <Key - latin:keyLabel="ण" + latin:keySpec="ण" latin:keyLabelFlags="fontNormal" /> <!-- U+0929: "ऩ" DEVANAGARI LETTER NNNA --> <Key - latin:keyLabel="ऩ" /> + latin:keySpec="ऩ" /> <!-- U+0933: "ळ" DEVANAGARI LETTER LLA U+0934: "ऴ" DEVANAGARI LETTER LLLA --> <Key - latin:keyLabel="ळ" + latin:keySpec="ळ" latin:moreKeys="ऴ" latin:keyLabelFlags="fontNormal" /> <!-- U+0936: "श" DEVANAGARI LETTER SHA --> <Key - latin:keyLabel="श" + latin:keySpec="श" latin:keyLabelFlags="fontNormal" /> <!-- U+0937: "ष" DEVANAGARI LETTER SSA --> <Key - latin:keyLabel="ष" + latin:keySpec="ष" latin:keyLabelFlags="fontNormal" /> <!-- Because the font rendering system prior to API version 16 can't automatically render dotted circle for incomplete combining letter of some scripts, different @@ -62,7 +62,7 @@ latin:keyboardLayout="@xml/key_devanagari_vowel_sign_vocalic_r" /> <!-- U+091E: "ञ" DEVANAGARI LETTER NYA --> <Key - latin:keyLabel="ञ" + latin:keySpec="ञ" latin:keyLabelFlags="fontNormal" /> </case> <default> @@ -76,7 +76,7 @@ <!-- U+092E: "म" DEVANAGARI LETTER MA U+0950: "ॐ" DEVANAGARI OM --> <Key - latin:keyLabel="म" + latin:keySpec="म" latin:moreKeys="ॐ" latin:keyLabelFlags="fontNormal" /> <!-- U+0928: "न" DEVANAGARI LETTER NA @@ -84,28 +84,28 @@ U+0919: "ङ" DEVANAGARI LETTER NGA U+0928/U+093C: "ऩ" DEVANAGARI LETTER NA/DEVANAGARI SIGN NUKTA --> <Key - latin:keyLabel="न" + latin:keySpec="न" latin:moreKeys="ञ,ङ,ऩ" latin:keyLabelFlags="fontNormal" /> <!-- U+0935: "व" DEVANAGARI LETTER VA --> <Key - latin:keyLabel="व" + latin:keySpec="व" latin:keyLabelFlags="fontNormal" /> <!-- U+0932: "ल" DEVANAGARI LETTER LA U+090C: "ऌ" DEVANAGARI LETTER VOCALIC L U+0961: "ॡ" DEVANAGARI LETTER VOCALIC LL --> <Key - latin:keyLabel="ल" + latin:keySpec="ल" latin:moreKeys="ऌ,ॡ" latin:keyLabelFlags="fontNormal" /> <!-- U+0938: "स" DEVANAGARI LETTER SA --> <Key - latin:keyLabel="स" + latin:keySpec="स" latin:keyLabelFlags="fontNormal" /> <!-- U+092F: "य" DEVANAGARI LETTER YA U+095F: "य़" DEVANAGARI LETTER YYA --> <Key - latin:keyLabel="य" + latin:keySpec="य" latin:moreKeys="य़" latin:keyLabelFlags="fontNormal" /> <!-- Because the font rendering system prior to API version 16 can't automatically diff --git a/java/res/xml/rowkeys_khmer1.xml b/java/res/xml/rowkeys_khmer1.xml index 05d1a864a..567c6aff0 100644 --- a/java/res/xml/rowkeys_khmer1.xml +++ b/java/res/xml/rowkeys_khmer1.xml @@ -27,79 +27,79 @@ > <!-- U+200D: ZERO WIDTH JOINER --> <Key - latin:keyLabel="!" + latin:keySpec="!" latin:moreKeys="!icon/zwj_key|‍" /> <!-- U+17D7: "ៗ" KHMER SIGN LEK TOO U+200C: ZERO WIDTH NON-JOINER --> <Key - latin:keyLabel="ៗ" + latin:keySpec="ៗ" latin:moreKeys="!icon/zwnj_key|‌" latin:keyLabelFlags="fontNormal" /> <!-- U+17D1: "៑" KHMER SIGN VIRIAM --> <Key - latin:keyLabel=""" + latin:keySpec=""" latin:keyHintLabel="៑" latin:moreKeys="៑" /> <!-- U+17DB: "៛" KHMER CURRENCY SYMBOL RIEL U+20AC: "€" EURO SIGN --> <Key - latin:keyLabel="៛" + latin:keySpec="៛" latin:keyHintLabel="$" latin:moreKeys="$,€" latin:keyLabelFlags="fontNormal" /> <!-- U+17D6: "៖" KHMER SIGN CAMNUC PII KUUH --> <Key - latin:keyLabel="%" + latin:keySpec="%" latin:keyHintLabel="៖" latin:moreKeys="៖" /> <!-- U+17CD: "៍" KHMER SIGN TOANDAKHIAT U+17D9: "៙" KHMER SIGN PHNAEK MUAN --> <Key - latin:keyLabel="៍" + latin:keySpec="៍" latin:keyHintLabel="៙" latin:moreKeys="៙" latin:keyLabelFlags="fontNormal" /> <!-- U+17D0: "័" KHMER SIGN SAMYOK SANNYA U+17DA: "៚" KHMER SIGN KOOMUUT --> <Key - latin:keyLabel="័" + latin:keySpec="័" latin:keyHintLabel="៚" latin:keyHintLabelVerticalAdjustment="-30%" latin:moreKeys="៚" latin:keyLabelFlags="fontNormal" /> <!-- U+17CF: "៏" KHMER SIGN AHSDA --> <Key - latin:keyLabel="៏" + latin:keySpec="៏" latin:keyHintLabel="*" latin:moreKeys="*" latin:keyLabelFlags="fontNormal" /> <!-- U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK --> <Key - latin:keyLabel="(" + latin:keySpec="(" latin:keyHintLabel="{" latin:moreKeys="{,«" /> <!-- U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK --> <Key - latin:keyLabel=")" + latin:keySpec=")" latin:keyHintLabel="}" latin:moreKeys="},»" /> <!-- U+17CC: "៌" KHMER SIGN ROBAT U+00D7: "×" MULTIPLICATION SIGN --> <Key - latin:keyLabel="៌" + latin:keySpec="៌" latin:keyHintLabel="×" latin:moreKeys="×" latin:keyLabelFlags="fontNormal" /> <!-- U+17CE: "៎" KHMER SIGN KAKABAT --> <Key - latin:keyLabel="៎" + latin:keySpec="៎" latin:keyLabelFlags="fontNormal" /> </case> <default> <!-- U+17E1: "១" KHMER DIGIT ONE U+17F1: "៱" KHMER SYMBOL LEK ATTAK MUOY --> <Key - latin:keyLabel="១" + latin:keySpec="១" latin:keyHintLabel="1" latin:additionalMoreKeys="1" latin:moreKeys="៱" @@ -107,7 +107,7 @@ <!-- U+17E2: "២" KHMER DIGIT TWO U+17F2: "៲" KHMER SYMBOL LEK ATTAK PII --> <Key - latin:keyLabel="២" + latin:keySpec="២" latin:keyHintLabel="2" latin:additionalMoreKeys="2" latin:moreKeys="៲" @@ -115,7 +115,7 @@ <!-- U+17E3: "៣" KHMER DIGIT THREE U+17F3: "៳" KHMER SYMBOL LEK ATTAK BEI --> <Key - latin:keyLabel="៣" + latin:keySpec="៣" latin:keyHintLabel="3" latin:additionalMoreKeys="3" latin:moreKeys="៳" @@ -123,7 +123,7 @@ <!-- U+17E4: "៤" KHMER DIGIT FOUR U+17F4: "៴" KHMER SYMBOL LEK ATTAK BUON --> <Key - latin:keyLabel="៤" + latin:keySpec="៤" latin:keyHintLabel="4" latin:additionalMoreKeys="4" latin:moreKeys="៴" @@ -131,7 +131,7 @@ <!-- U+17E5: "៥" KHMER DIGIT FIVE U+17F5: "៵" KHMER SYMBOL LEK ATTAK PRAM --> <Key - latin:keyLabel="៥" + latin:keySpec="៥" latin:keyHintLabel="5" latin:additionalMoreKeys="5" latin:moreKeys="៵" @@ -139,7 +139,7 @@ <!-- U+17E6: "៦" KHMER DIGIT SIX U+17F6: "៶" KHMER SYMBOL LEK ATTAK PRAM-MUOY --> <Key - latin:keyLabel="៦" + latin:keySpec="៦" latin:keyHintLabel="6" latin:additionalMoreKeys="6" latin:moreKeys="៶" @@ -147,7 +147,7 @@ <!-- U+17E7: "៧" KHMER DIGIT SEVEN U+17F7: "៷" KHMER SYMBOL LEK ATTAK PRAM-PII --> <Key - latin:keyLabel="៧" + latin:keySpec="៧" latin:keyHintLabel="7" latin:additionalMoreKeys="7" latin:moreKeys="៷" @@ -155,7 +155,7 @@ <!-- U+17E8: "៨" KHMER DIGIT EIGHT U+17F8: "៸" KHMER SYMBOL LEK ATTAK PRAM-BEI --> <Key - latin:keyLabel="៨" + latin:keySpec="៨" latin:keyHintLabel="8" latin:additionalMoreKeys="8" latin:moreKeys="៸" @@ -163,7 +163,7 @@ <!-- U+17E9: "៩" KHMER DIGIT NINE U+17F9: "៹" KHMER SYMBOL LEK ATTAK PRAM-BUON --> <Key - latin:keyLabel="៩" + latin:keySpec="៩" latin:keyHintLabel="9" latin:additionalMoreKeys="9" latin:moreKeys="៹" @@ -171,7 +171,7 @@ <!-- U+17E0: "០" KHMER DIGIT ZERO U+17F0: "៰" KHMER SYMBOL LEK ATTAK SON --> <Key - latin:keyLabel="០" + latin:keySpec="០" latin:keyHintLabel="0" latin:additionalMoreKeys="0" latin:moreKeys="៰" @@ -179,14 +179,14 @@ <!-- U+17A5: "ឥ" KHMER INDEPENDENT VOWEL QI U+17A6: "ឦ" KHMER INDEPENDENT VOWEL QII --> <Key - latin:keyLabel="ឥ" + latin:keySpec="ឥ" latin:keyHintLabel="ឦ" latin:moreKeys=",ឦ" latin:keyLabelFlags="fontNormal" /> <!-- U+17B2: "ឲ" KHMER INDEPENDENT VOWEL QOO TYPE TWO U+17B1: "ឱ" KHMER INDEPENDENT VOWEL QOO TYPE ONE --> <Key - latin:keyLabel="ឲ" + latin:keySpec="ឲ" latin:keyHintLabel="ឱ" latin:moreKeys="ឱ" latin:keyLabelFlags="fontNormal" /> diff --git a/java/res/xml/rowkeys_khmer2.xml b/java/res/xml/rowkeys_khmer2.xml index 801f23ff6..4146895f7 100644 --- a/java/res/xml/rowkeys_khmer2.xml +++ b/java/res/xml/rowkeys_khmer2.xml @@ -28,106 +28,106 @@ <!-- U+1788: "ឈ" KHMER LETTER CHO U+17DC: "ៜ" KHMER SIGN AVAKRAHASANYA --> <Key - latin:keyLabel="ឈ" + latin:keySpec="ឈ" latin:keyHintLabel="ៜ" latin:moreKeys="ៜ" latin:keyLabelFlags="fontNormal|autoScale" /> <!-- U+17BA: "ឺ" KHMER VOWEL SIGN YY U+17DD: "៝" KHMER SIGN ATTHACAN --> <Key - latin:keyLabel="ឺ" + latin:keySpec="ឺ" latin:keyHintLabel="៝" latin:keyHintLabelVerticalAdjustment="40%" latin:moreKeys="៝" latin:keyLabelFlags="fontNormal" /> <!-- U+17C2: "ែ" KHMER VOWEL SIGN AE --> <Key - latin:keyLabel="ែ" + latin:keySpec="ែ" latin:keyLabelFlags="fontNormal" /> <!-- U+17AC: "ឬ" KHMER INDEPENDENT VOWEL RYY U+17AB: "ឫ" KHMER INDEPENDENT VOWEL RY --> <Key - latin:keyLabel="ឬ" + latin:keySpec="ឬ" latin:keyHintLabel="ឫ" latin:moreKeys="ឫ" latin:keyLabelFlags="fontNormal" /> <!-- U+1791: "ទ" KHMER LETTER TO --> <Key - latin:keyLabel="ទ" + latin:keySpec="ទ" latin:keyLabelFlags="fontNormal" /> <!-- U+17BD: "ួ" KHMER VOWEL SIGN UA --> <Key - latin:keyLabel="ួ" + latin:keySpec="ួ" latin:keyLabelFlags="fontNormal" /> <!-- U+17BC: "ូ" KHMER VOWEL SIGN UU --> <Key - latin:keyLabel="ូ" + latin:keySpec="ូ" latin:keyLabelFlags="fontNormal" /> <!-- U+17B8: "ី" KHMER VOWEL SIGN II --> <Key - latin:keyLabel="ី" + latin:keySpec="ី" latin:keyLabelFlags="fontNormal" /> <!-- U+17C5: "ៅ" KHMER VOWEL SIGN AU --> <Key - latin:keyLabel="ៅ" + latin:keySpec="ៅ" latin:keyLabelFlags="fontNormal|autoScale" /> <!-- U+1797: "ភ" KHMER LETTER PHO --> <Key - latin:keyLabel="ភ" + latin:keySpec="ភ" latin:keyLabelFlags="fontNormal" /> <!-- U+17BF: "ឿ" KHMER VOWEL SIGN YA --> <Key - latin:keyLabel="ឿ" + latin:keySpec="ឿ" latin:keyLabelFlags="fontNormal|autoScale" /> <!-- U+17B0: "ឰ" KHMER INDEPENDENT VOWEL QAI --> <Key - latin:keyLabel="ឰ" + latin:keySpec="ឰ" latin:keyLabelFlags="fontNormal" /> </case> <default> <!-- U+1786: "ឆ" KHMER LETTER CHA --> <Key - latin:keyLabel="ឆ" + latin:keySpec="ឆ" latin:keyLabelFlags="fontNormal" /> <!-- U+17B9: "ឹ" KHMER VOWEL SIGN Y --> <Key - latin:keyLabel="ឹ" + latin:keySpec="ឹ" latin:keyLabelFlags="fontNormal" /> <!-- U+17C1: "េ" KHMER VOWEL SIGN E --> <Key - latin:keyLabel="េ" + latin:keySpec="េ" latin:keyLabelFlags="fontNormal" /> <!-- U+179A: "រ" KHMER LETTER RO --> <Key - latin:keyLabel="រ" + latin:keySpec="រ" latin:keyLabelFlags="fontNormal" /> <!-- U+178F: "ត" KHMER LETTER TA --> <Key - latin:keyLabel="ត" + latin:keySpec="ត" latin:keyLabelFlags="fontNormal" /> <!-- U+1799: "យ" KHMER LETTER YO --> <Key - latin:keyLabel="យ" + latin:keySpec="យ" latin:keyLabelFlags="fontNormal" /> <!-- U+17BB: "ុ" KHMER VOWEL SIGN U --> <Key - latin:keyLabel="ុ" + latin:keySpec="ុ" latin:keyLabelFlags="fontNormal" /> <!-- U+17B7: "ិ" KHMER VOWEL SIGN I --> <Key - latin:keyLabel="ិ" + latin:keySpec="ិ" latin:keyLabelFlags="fontNormal" /> <!-- U+17C4: "ោ" KHMER VOWEL SIGN OO --> <Key - latin:keyLabel="ោ" + latin:keySpec="ោ" latin:keyLabelFlags="fontNormal|autoScale" /> <!-- U+1795: "ផ" KHMER LETTER PHA --> <Key - latin:keyLabel="ផ" + latin:keySpec="ផ" latin:keyLabelFlags="fontNormal" /> <!-- U+17C0: "ៀ" KHMER VOWEL SIGN IE --> <Key - latin:keyLabel="ៀ" + latin:keySpec="ៀ" latin:keyLabelFlags="fontNormal|autoScale" /> <!-- U+17AA: "ឪ" KHMER INDEPENDENT VOWEL QUUV U+17A7: "ឧ" KHMER INDEPENDENT VOWEL QU @@ -136,7 +136,7 @@ U+17A9: "ឩ" KHMER INDEPENDENT VOWEL QUU U+17A8: "ឨ" KHMER INDEPENDENT VOWEL QUK --> <Key - latin:keyLabel="ឪ" + latin:keySpec="ឪ" latin:keyHintLabel="ឧ" latin:moreKeys="ឧ,ឱ,ឳ,ឩ,ឨ" latin:keyLabelFlags="fontNormal" /> diff --git a/java/res/xml/rowkeys_khmer3.xml b/java/res/xml/rowkeys_khmer3.xml index f35ba5c56..7a2efa7da 100644 --- a/java/res/xml/rowkeys_khmer3.xml +++ b/java/res/xml/rowkeys_khmer3.xml @@ -27,109 +27,109 @@ > <!-- U+17B6/U+17C6: "ាំ" KHMER VOWEL SIGN AA/KHMER SIGN NIKAHIT --> <Key - latin:keyLabel="ាំ" + latin:keySpec="ាំ" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> <!-- U+17C3: "ៃ" KHMER VOWEL SIGN AI --> <Key - latin:keyLabel="ៃ" + latin:keySpec="ៃ" latin:keyLabelFlags="fontNormal" /> <!-- U+178C: "ឌ" KHMER LETTER DO --> <Key - latin:keyLabel="ឌ" + latin:keySpec="ឌ" latin:keyLabelFlags="fontNormal" /> <!-- U+1792: "ធ" KHMER LETTER THO --> <Key - latin:keyLabel="ធ" + latin:keySpec="ធ" latin:keyLabelFlags="fontNormal" /> <!-- U+17A2: "អ" KHMER LETTER QA --> <Key - latin:keyLabel="អ" + latin:keySpec="អ" latin:keyLabelFlags="fontNormal" /> <!-- U+17C7: "ះ" KHMER SIGN REAHMUK U+17C8: "ៈ" KHMER SIGN YUUKALEAPINTU;--> <Key - latin:keyLabel="ះ" + latin:keySpec="ះ" latin:keyHintLabel="ៈ" latin:moreKeys="ៈ" latin:keyLabelFlags="fontNormal" /> <!-- U+1789: "ញ" KHMER LETTER NYO --> <Key - latin:keyLabel="ញ" + latin:keySpec="ញ" latin:keyLabelFlags="fontNormal" /> <!-- U+1782: "គ" KHMER LETTER KO U+179D: "ឝ" KHMER LETTER SHA --> <Key - latin:keyLabel="គ" + latin:keySpec="គ" latin:keyHintLabel="ឝ" latin:moreKeys="ឝ" latin:keyLabelFlags="fontNormal" /> <!-- U+17A1: "ឡ" KHMER LETTER LA --> <Key - latin:keyLabel="ឡ" + latin:keySpec="ឡ" latin:keyLabelFlags="fontNormal" /> <!-- U+17C4/U+17C7: "ោះ" KHMER VOWEL SIGN OO/KHMER SIGN REAHMUK --> <Key - latin:keyLabel="ោះ" + latin:keySpec="ោះ" latin:keyLabelFlags="fontNormal|followKeyLetterRatio|autoScale" /> <!-- U+17C9: "៉" KHMER SIGN MUUSIKATOAN --> <Key - latin:keyLabel="៉" + latin:keySpec="៉" latin:keyLabelFlags="fontNormal" /> <!-- U+17AF: "ឯ" KHMER INDEPENDENT VOWEL QE --> <Key - latin:keyLabel="ឯ" + latin:keySpec="ឯ" latin:keyLabelFlags="fontNormal" /> </case> <default> <!-- U+17B6: "ា" KHMER VOWEL SIGN AA --> <Key - latin:keyLabel="ា" + latin:keySpec="ា" latin:keyLabelFlags="fontNormal" /> <!-- U+179F: "ស" KHMER LETTER SA --> <Key - latin:keyLabel="ស" + latin:keySpec="ស" latin:keyLabelFlags="fontNormal" /> <!-- U+178A: "ដ" KHMER LETTER DA --> <Key - latin:keyLabel="ដ" + latin:keySpec="ដ" latin:keyLabelFlags="fontNormal" /> <!-- U+1790: "ថ" KHMER LETTER THA --> <Key - latin:keyLabel="ថ" + latin:keySpec="ថ" latin:keyLabelFlags="fontNormal" /> <!-- U+1784: "ង" KHMER LETTER NGO --> <Key - latin:keyLabel="ង" + latin:keySpec="ង" latin:keyLabelFlags="fontNormal" /> <!-- U+17A0: "ហ" KHMER LETTER HA --> <Key - latin:keyLabel="ហ" + latin:keySpec="ហ" latin:keyLabelFlags="fontNormal" /> <!-- U+17D2: "្" KHMER SIGN COENG --> <Key - latin:keyLabel="្" + latin:keySpec="្" latin:keyLabelFlags="fontNormal" /> <!-- U+1780: "ក" KHMER LETTER KA --> <Key - latin:keyLabel="ក" + latin:keySpec="ក" latin:keyLabelFlags="fontNormal" /> <!-- U+179B: "ល" KHMER LETTER LO --> <Key - latin:keyLabel="ល" + latin:keySpec="ល" latin:keyLabelFlags="fontNormal" /> <!-- U+17BE: "ើ" KHMER VOWEL SIGN OE --> <Key - latin:keyLabel="ើ" + latin:keySpec="ើ" latin:keyLabelFlags="fontNormal" /> <!-- U+17CB: "់" KHMER SIGN BANTOC --> <Key - latin:keyLabel="់" + latin:keySpec="់" latin:keyLabelFlags="fontNormal" /> <!-- U+17AE: "ឮ" KHMER INDEPENDENT VOWEL LYY U+17AD: "ឭ" KHMER INDEPENDENT VOWEL LY U+17B0: "ឰ" KHMER INDEPENDENT VOWEL QAI --> <Key - latin:keyLabel="ឮ" + latin:keySpec="ឮ" latin:keyHintLabel="ឭ" latin:moreKeys="ឭ,ឰ" latin:keyLabelFlags="fontNormal" /> diff --git a/java/res/xml/rowkeys_khmer4.xml b/java/res/xml/rowkeys_khmer4.xml index 598aed8d5..5523d86b7 100644 --- a/java/res/xml/rowkeys_khmer4.xml +++ b/java/res/xml/rowkeys_khmer4.xml @@ -27,86 +27,86 @@ > <!-- U+178D: "ឍ" KHMER LETTER TTHO --> <Key - latin:keyLabel="ឍ" + latin:keySpec="ឍ" latin:keyLabelFlags="fontNormal" /> <!-- U+1783: "ឃ" KHMER LETTER KHO --> <Key - latin:keyLabel="ឃ" + latin:keySpec="ឃ" latin:keyLabelFlags="fontNormal" /> <!-- U+1787: "ជ" KHMER LETTER CO --> <Key - latin:keyLabel="ជ" + latin:keySpec="ជ" latin:keyLabelFlags="fontNormal" /> <!-- U+17C1/U+17C7: "េះ" KHMER VOWEL SIGN E/KHMER SIGN REAHMUK --> <Key - latin:keyLabel="េះ" + latin:keySpec="េះ" latin:keyLabelFlags="fontNormal|followKeyLetterRatio|autoScale" /> <!-- U+1796: "ព" KHMER LETTER PO U+179E: "ឞ" KHMER LETTER SSO --> <Key - latin:keyLabel="ព" + latin:keySpec="ព" latin:keyHintLabel="ឞ" latin:moreKeys="ឞ" latin:keyLabelFlags="fontNormal" /> <!-- U+178E: "ណ" KHMER LETTER NNO --> <Key - latin:keyLabel="ណ" + latin:keySpec="ណ" latin:keyLabelFlags="fontNormal|autoScale" /> <!-- U+17C6: "ំ" KHMER SIGN NIKAHIT --> <Key - latin:keyLabel="ំ" + latin:keySpec="ំ" latin:keyLabelFlags="fontNormal" /> <!-- U+17BB/U+17C7: "ុះ" KHMER VOWEL SIGN U/KHMER SIGN REAHMUK --> <Key - latin:keyLabel="ុះ" + latin:keySpec="ុះ" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> <!-- U+17D5: "៕" KHMER SIGN BARIYOOSAN --> <Key - latin:keyLabel="៕" + latin:keySpec="៕" latin:keyLabelFlags="fontNormal" /> <Key - latin:keyLabel="\?" /> + latin:keySpec="\?" /> </case> <default> <!-- U+178B: "ឋ" KHMER LETTER TTHA --> <Key - latin:keyLabel="ឋ" + latin:keySpec="ឋ" latin:keyLabelFlags="fontNormal" /> <!-- U+1781: "ខ" KHMER LETTER KHA --> <Key - latin:keyLabel="ខ" + latin:keySpec="ខ" latin:keyLabelFlags="fontNormal" /> <!-- U+1785: "ច" KHMER LETTER CA --> <Key - latin:keyLabel="ច" + latin:keySpec="ច" latin:keyLabelFlags="fontNormal" /> <!-- U+179C: "វ" KHMER LETTER VO --> <Key - latin:keyLabel="វ" + latin:keySpec="វ" latin:keyLabelFlags="fontNormal" /> <!-- U+1794: "ប" KHMER LETTER BA --> <Key - latin:keyLabel="ប" + latin:keySpec="ប" latin:keyLabelFlags="fontNormal" /> <!-- U+1793: "ន" KHMER LETTER NO --> <Key - latin:keyLabel="ន" + latin:keySpec="ន" latin:keyLabelFlags="fontNormal" /> <!-- U+1798: "ម" KHMER LETTER MO --> <Key - latin:keyLabel="ម" + latin:keySpec="ម" latin:keyLabelFlags="fontNormal" /> <!-- U+17BB/U+17C6: "ុំ" KHMER VOWEL SIGN U/KHMER SIGN NIKAHIT --> <Key - latin:keyLabel="ុំ" + latin:keySpec="ុំ" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> <!-- U+17D4: "។" KHMER SIGN KHAN --> <Key - latin:keyLabel="។" + latin:keySpec="។" latin:keyLabelFlags="fontNormal" /> <!-- U+17CA: "៊" KHMER SIGN TRIISAP --> <Key - latin:keyLabel="៊" + latin:keySpec="៊" latin:keyLabelFlags="fontNormal" /> </default> </switch> diff --git a/java/res/xml/rowkeys_lao1.xml b/java/res/xml/rowkeys_lao1.xml index fa1ad97d8..a5085a540 100644 --- a/java/res/xml/rowkeys_lao1.xml +++ b/java/res/xml/rowkeys_lao1.xml @@ -27,58 +27,58 @@ > <!-- U+0ED1: "໑" LAO DIGIT ONE --> <Key - latin:keyLabel="໑" + latin:keySpec="໑" latin:keyLabelFlags="fontNormal" /> <!-- U+0ED2: "໒" LAO DIGIT TWO --> <Key - latin:keyLabel="໒" + latin:keySpec="໒" latin:keyLabelFlags="fontNormal" /> <!-- U+0ED3: "໓" LAO DIGIT THREE --> <Key - latin:keyLabel="໓" + latin:keySpec="໓" latin:keyLabelFlags="fontNormal" /> <!-- U+0ED4: "໔" LAO DIGIT FOUR --> <Key - latin:keyLabel="໔" + latin:keySpec="໔" latin:keyLabelFlags="fontNormal" /> <!-- U+0ECC: "໌" LAO CANCELLATION MARK --> <Key - latin:keyLabel="໌" + latin:keySpec="໌" latin:keyLabelFlags="fontNormal" /> <!-- U+0EBC: "ຼ" LAO SEMIVOWEL SIGN LO --> <Key - latin:keyLabel="ຼ" + latin:keySpec="ຼ" latin:keyLabelFlags="fontNormal" /> <!-- U+0ED5: "໕" LAO DIGIT FIVE --> <Key - latin:keyLabel="໕" + latin:keySpec="໕" latin:keyLabelFlags="fontNormal" /> <!-- U+0ED6: "໖" LAO DIGIT SIX --> <Key - latin:keyLabel="໖" + latin:keySpec="໖" latin:keyLabelFlags="fontNormal" /> <!-- U+0ED7: "໗" LAO DIGIT SEVEN --> <Key - latin:keyLabel="໗" + latin:keySpec="໗" latin:keyLabelFlags="fontNormal" /> <!-- U+0ED8: "໘" LAO DIGIT EIGHT --> <Key - latin:keyLabel="໘" + latin:keySpec="໘" latin:keyLabelFlags="fontNormal" /> <!-- U+0ED9: "໙" LAO DIGIT NINE --> <Key - latin:keyLabel="໙" + latin:keySpec="໙" latin:keyLabelFlags="fontNormal" /> <!-- U+0ECD/U+0EC8: "ໍ່" LAO NIGGAHITA/LAO TONE MAI EK --> <Key - latin:keyLabel="ໍ່" + latin:keySpec="ໍ່" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> </case> <default> <!-- U+0EA2: "ຢ" LAO LETTER YO U+0ED1: "໑" LAO DIGIT ONE --> <Key - latin:keyLabel="ຢ" + latin:keySpec="ຢ" latin:keyHintLabel="1" latin:additionalMoreKeys="1" latin:moreKeys="໑" @@ -86,7 +86,7 @@ <!-- U+0E9F: "ຟ" LAO LETTER FO SUNG U+0ED2: "໒" LAO DIGIT TWO --> <Key - latin:keyLabel="ຟ" + latin:keySpec="ຟ" latin:keyHintLabel="2" latin:additionalMoreKeys="2" latin:moreKeys="໒" @@ -94,7 +94,7 @@ <!-- U+0EC2: "ໂ" LAO VOWEL SIGN O U+0ED3: "໓" LAO DIGIT THREE --> <Key - latin:keyLabel="ໂ" + latin:keySpec="ໂ" latin:keyHintLabel="3" latin:additionalMoreKeys="3" latin:moreKeys="໓" @@ -102,23 +102,23 @@ <!-- U+0E96: "ຖ" LAO LETTER THO SUNG U+0ED4: "໔" LAO DIGIT FOUR --> <Key - latin:keyLabel="ຖ" + latin:keySpec="ຖ" latin:keyHintLabel="4" latin:additionalMoreKeys="4" latin:moreKeys="໔" latin:keyLabelFlags="fontNormal" /> <!-- U+0EB8: "ຸ" LAO VOWEL SIGN U --> <Key - latin:keyLabel="ຸ" + latin:keySpec="ຸ" latin:keyLabelFlags="fontNormal" /> <!-- U+0EB9: "ູ" LAO VOWEL SIGN UU --> <Key - latin:keyLabel="ູ" + latin:keySpec="ູ" latin:keyLabelFlags="fontNormal" /> <!-- U+0E84: "ຄ" LAO LETTER KHO TAM U+0ED5: "໕" LAO DIGIT FIVE --> <Key - latin:keyLabel="ຄ" + latin:keySpec="ຄ" latin:keyHintLabel="5" latin:additionalMoreKeys="5" latin:moreKeys="໕" @@ -126,7 +126,7 @@ <!-- U+0E95: "ຕ" LAO LETTER TO U+0ED6: "໖" LAO DIGIT SIX --> <Key - latin:keyLabel="ຕ" + latin:keySpec="ຕ" latin:keyHintLabel="6" latin:additionalMoreKeys="6" latin:moreKeys="໖" @@ -134,7 +134,7 @@ <!-- U+0E88: "ຈ" LAO LETTER CO U+0ED7: "໗" LAO DIGIT SEVEN --> <Key - latin:keyLabel="ຈ" + latin:keySpec="ຈ" latin:keyHintLabel="7" latin:additionalMoreKeys="7" latin:moreKeys="໗" @@ -142,7 +142,7 @@ <!-- U+0E82: "ຂ" LAO LETTER KHO SUNG U+0ED8: "໘" LAO DIGIT EIGHT --> <Key - latin:keyLabel="ຂ" + latin:keySpec="ຂ" latin:keyHintLabel="8" latin:additionalMoreKeys="8" latin:moreKeys="໘" @@ -150,14 +150,14 @@ <!-- U+0E8A: "ຊ" LAO LETTER SO TAM U+0ED9: "໙" LAO DIGIT NINE --> <Key - latin:keyLabel="ຊ" + latin:keySpec="ຊ" latin:keyHintLabel="9" latin:additionalMoreKeys="9" latin:moreKeys="໙" latin:keyLabelFlags="fontNormal" /> <!-- U+0ECD: "ໍ" LAO NIGGAHITA --> <Key - latin:keyLabel="ໍ" + latin:keySpec="ໍ" latin:keyLabelFlags="fontNormal" /> </default> </switch> diff --git a/java/res/xml/rowkeys_lao2.xml b/java/res/xml/rowkeys_lao2.xml index fca58ac0e..67c474f98 100644 --- a/java/res/xml/rowkeys_lao2.xml +++ b/java/res/xml/rowkeys_lao2.xml @@ -27,100 +27,100 @@ > <!-- U+0EBB/U+0EC9: "" LAO VOWEL SIGN MAI KON/LAO TONE MAI THO --> <Key - latin:keyLabel="ົ້" + latin:keySpec="ົ້" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> <!-- U+0ED0: "໐" LAO DIGIT ZERO --> <Key - latin:keyLabel="໐" + latin:keySpec="໐" latin:keyLabelFlags="fontNormal" /> <!-- U+0EB3/U+0EC9: "ຳ້" LAO VOWEL SIGN AM/LAO TONE MAI THO --> <Key - latin:keyLabel="ຳ້" + latin:keySpec="ຳ້" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> <Key - latin:keyLabel="_" /> + latin:keySpec="_" /> <Key - latin:keyLabel="+" /> + latin:keySpec="+" /> <!-- U+0EB4/U+0EC9: "ິ້" LAO VOWEL SIGN I/LAO TONE MAI THO --> <Key - latin:keyLabel="ິ້" + latin:keySpec="ິ້" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> <!-- U+0EB5/U+0EC9: "ີ້" LAO VOWEL SIGN II/LAO TONE MAI THO --> <Key - latin:keyLabel="ີ້" + latin:keySpec="ີ້" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> <!-- U+0EA3: "ຣ" LAO LETTER LO LING --> <Key - latin:keyLabel="ຣ" + latin:keySpec="ຣ" latin:keyLabelFlags="fontNormal" /> <!-- U+0EDC: "ໜ" LAO HO NO --> <Key - latin:keyLabel="ໜ" + latin:keySpec="ໜ" latin:keyLabelFlags="fontNormal" /> <!-- U+0EBD: "ຽ" LAO SEMIVOWEL SIGN NYO --> <Key - latin:keyLabel="ຽ" + latin:keySpec="ຽ" latin:keyLabelFlags="fontNormal" /> <!-- U+0EAB/U+0EBC: "" LAO LETTER HO SUNG/LAO SEMIVOWEL SIGN LO --> <Key - latin:keyLabel="ຫຼ" + latin:keySpec="ຫຼ" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> <!-- U+201D: "”" RIGHT DOUBLE QUOTATION MARK --> <Key - latin:keyLabel="”" /> + latin:keySpec="”" /> </case> <default> <!-- U+0EBB: "ົ" LAO VOWEL SIGN MAI KON --> <Key - latin:keyLabel="ົ" + latin:keySpec="ົ" latin:keyLabelFlags="fontNormal" /> <!-- U+0EC4: "ໄ" LAO VOWEL SIGN AI U+0ED0: "໐" LAO DIGIT ZERO --> <Key - latin:keyLabel="ໄ" + latin:keySpec="ໄ" latin:keyHintLabel="0" latin:additionalMoreKeys="0" latin:moreKeys="໐" latin:keyLabelFlags="fontNormal" /> <!-- U+0EB3: "ຳ" LAO VOWEL SIGN AM --> <Key - latin:keyLabel="ຳ" + latin:keySpec="ຳ" latin:keyLabelFlags="fontNormal" /> <!-- U+0E9E: "ພ" LAO LETTER PHO TAM --> <Key - latin:keyLabel="ພ" + latin:keySpec="ພ" latin:keyLabelFlags="fontNormal" /> <!-- U+0EB0: "ະ" LAO VOWEL SIGN A --> <Key - latin:keyLabel="ະ" + latin:keySpec="ະ" latin:keyLabelFlags="fontNormal" /> <!-- U+0EB4: "ິ" LAO VOWEL SIGN I --> <Key - latin:keyLabel="ິ" + latin:keySpec="ິ" latin:keyLabelFlags="fontNormal" /> <!-- U+0EB5: "ີ" LAO VOWEL SIGN II --> <Key - latin:keyLabel="ີ" + latin:keySpec="ີ" latin:keyLabelFlags="fontNormal" /> <!-- U+0EAE: "ຮ" LAO LETTER HO TAM --> <Key - latin:keyLabel="ຮ" + latin:keySpec="ຮ" latin:keyLabelFlags="fontNormal" /> <!-- U+0E99: "ນ" LAO LETTER NO --> <Key - latin:keyLabel="ນ" + latin:keySpec="ນ" latin:keyLabelFlags="fontNormal" /> <!-- U+0E8D: "ຍ" LAO LETTER NYO --> <Key - latin:keyLabel="ຍ" + latin:keySpec="ຍ" latin:keyLabelFlags="fontNormal" /> <!-- U+0E9A: "ບ" LAO LETTER BO --> <Key - latin:keyLabel="ບ" + latin:keySpec="ບ" latin:keyLabelFlags="fontNormal" /> <!-- U+0EA5: "ລ" LAO LETTER LO LOOT --> <Key - latin:keyLabel="ລ" + latin:keySpec="ລ" latin:keyLabelFlags="fontNormal" /> </default> </switch> diff --git a/java/res/xml/rowkeys_lao3.xml b/java/res/xml/rowkeys_lao3.xml index 2a6c2d1dd..172716dde 100644 --- a/java/res/xml/rowkeys_lao3.xml +++ b/java/res/xml/rowkeys_lao3.xml @@ -27,84 +27,84 @@ > <!-- U+0EB1/U+0EC9: "ັ້" LAO VOWEL SIGN MAI KAN/LAO TONE MAI THO --> <Key - latin:keyLabel="ັ້" + latin:keySpec="ັ້" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> <Key - latin:keyLabel=";" /> + latin:keySpec=";" /> <Key - latin:keyLabel="." /> + latin:keySpec="." /> <Key - latin:keyLabel="," /> + latin:keySpec="," /> <Key - latin:keyLabel=":" /> + latin:keySpec=":" /> <!-- U+0ECA: "໊" LAO TONE MAI TI --> <Key - latin:keyLabel="໊" + latin:keySpec="໊" latin:keyLabelFlags="fontNormal" /> <!-- U+0ECB: "໋" LAO TONE MAI CATAWA --> <Key - latin:keyLabel="໋" + latin:keySpec="໋" latin:keyLabelFlags="fontNormal" /> <Key - latin:keyLabel="!" /> + latin:keySpec="!" /> <Key - latin:keyLabel="\?" /> + latin:keySpec="\?" /> <Key - latin:keyLabel="%" /> + latin:keySpec="%" /> <Key - latin:keyLabel="=" /> + latin:keySpec="=" /> <!-- U+201C: "“" LEFT DOUBLE QUOTATION MARK --> <Key - latin:keyLabel="“" /> + latin:keySpec="“" /> </case> <default> <!-- U+0EB1: "ັ" LAO VOWEL SIGN MAI KAN --> <Key - latin:keyLabel="ັ" + latin:keySpec="ັ" latin:keyLabelFlags="fontNormal" /> <!-- U+0EAB: "ຫ" LAO LETTER HO SUNG --> <Key - latin:keyLabel="ຫ" + latin:keySpec="ຫ" latin:keyLabelFlags="fontNormal" /> <!-- U+0E81: "ກ" LAO LETTER KO --> <Key - latin:keyLabel="ກ" + latin:keySpec="ກ" latin:keyLabelFlags="fontNormal" /> <!-- U+0E94: "ດ" LAO LETTER DO --> <Key - latin:keyLabel="ດ" + latin:keySpec="ດ" latin:keyLabelFlags="fontNormal" /> <!-- U+0EC0: "ເ" LAO VOWEL SIGN E --> <Key - latin:keyLabel="ເ" + latin:keySpec="ເ" latin:keyLabelFlags="fontNormal" /> <!-- U+0EC9: "້" LAO TONE MAI THO --> <Key - latin:keyLabel="້" + latin:keySpec="້" latin:keyLabelFlags="fontNormal" /> <!-- U+0EC8: "່" LAO TONE MAI EK --> <Key - latin:keyLabel="່" + latin:keySpec="່" latin:keyLabelFlags="fontNormal" /> <!-- U+0EB2: "າ" LAO VOWEL SIGN AA --> <Key - latin:keyLabel="າ" + latin:keySpec="າ" latin:keyLabelFlags="fontNormal" /> <!-- U+0EAA: "ສ" LAO LETTER SO SUNG --> <Key - latin:keyLabel="ສ" + latin:keySpec="ສ" latin:keyLabelFlags="fontNormal" /> <!-- U+0EA7: "ວ" LAO LETTER WO --> <Key - latin:keyLabel="ວ" + latin:keySpec="ວ" latin:keyLabelFlags="fontNormal" /> <!-- U+0E87: "ງ" LAO LETTER NGO --> <Key - latin:keyLabel="ງ" + latin:keySpec="ງ" latin:keyLabelFlags="fontNormal" /> <!-- U+201C: "“" LEFT DOUBLE QUOTATION MARK --> <Key - latin:keyLabel="“" /> + latin:keySpec="“" /> </default> </switch> </merge> diff --git a/java/res/xml/rowkeys_lao4.xml b/java/res/xml/rowkeys_lao4.xml index fae9cc923..ed4b9b1f1 100644 --- a/java/res/xml/rowkeys_lao4.xml +++ b/java/res/xml/rowkeys_lao4.xml @@ -27,76 +27,76 @@ > <!-- U+20AD: "₭" KIP SIGN --> <Key - latin:keyLabel="₭" /> + latin:keySpec="₭" /> <Key - latin:keyLabel="(" /> + latin:keySpec="(" /> <!-- U+0EAF: "ຯ" LAO ELLIPSIS --> <Key - latin:keyLabel="ຯ" + latin:keySpec="ຯ" latin:keyLabelFlags="fontNormal" /> <Key - latin:keyLabel="\@" /> + latin:keySpec="\@" /> <!-- U+0EB6/U+0EC9: "ຶ້" LAO VOWEL SIGN Y/LAO TONE MAI THO --> <Key - latin:keyLabel="ຶ້" + latin:keySpec="ຶ້" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> <!-- U+0EB7/U+0EC9: "ື້" LAO VOWEL SIGN YY/LAO TONE MAI THO --> <Key - latin:keyLabel="ື້" + latin:keySpec="ື້" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> <!-- U+0EC6: "ໆ" LAO KO LA --> <Key - latin:keyLabel="ໆ" + latin:keySpec="ໆ" latin:keyLabelFlags="fontNormal" /> <!-- U+0EDD: "ໝ" LAO HO MO --> <Key - latin:keyLabel="ໝ" + latin:keySpec="ໝ" latin:keyLabelFlags="fontNormal" /> <Key - latin:keyLabel="$" /> + latin:keySpec="$" /> <Key - latin:keyLabel=")" /> + latin:keySpec=")" /> </case> <default> <!-- U+0E9C: "ຜ" LAO LETTER PHO SUNG --> <Key - latin:keyLabel="ຜ" + latin:keySpec="ຜ" latin:keyLabelFlags="fontNormal" /> <!-- U+0E9B: "ປ" LAO LETTER PO --> <Key - latin:keyLabel="ປ" + latin:keySpec="ປ" latin:keyLabelFlags="fontNormal" /> <!-- U+0EC1: "ແ" LAO VOWEL SIGN EI --> <Key - latin:keyLabel="ແ" + latin:keySpec="ແ" latin:keyLabelFlags="fontNormal" /> <!-- U+0EAD: "ອ" LAO LETTER O --> <Key - latin:keyLabel="ອ" + latin:keySpec="ອ" latin:keyLabelFlags="fontNormal" /> <!-- U+0EB6: "ຶ" LAO VOWEL SIGN Y --> <Key - latin:keyLabel="ຶ" + latin:keySpec="ຶ" latin:keyLabelFlags="fontNormal" /> <!-- U+0EB7: "ື" LAO VOWEL SIGN YY --> <Key - latin:keyLabel="ື" + latin:keySpec="ື" latin:keyLabelFlags="fontNormal" /> <!-- U+0E97: "ທ" LAO LETTER THO TAM --> <Key - latin:keyLabel="ທ" + latin:keySpec="ທ" latin:keyLabelFlags="fontNormal" /> <!-- U+0EA1: "ມ" LAO LETTER MO --> <Key - latin:keyLabel="ມ" + latin:keySpec="ມ" latin:keyLabelFlags="fontNormal" /> <!-- U+0EC3: "ໃ" LAO VOWEL SIGN AY --> <Key - latin:keyLabel="ໃ" + latin:keySpec="ໃ" latin:keyLabelFlags="fontNormal" /> <!-- U+0E9D: "ຝ" LAO LETTER FO TAM --> <Key - latin:keyLabel="ຝ" + latin:keySpec="ຝ" latin:keyLabelFlags="fontNormal" /> </default> </switch> diff --git a/java/res/xml/rowkeys_mongolian1.xml b/java/res/xml/rowkeys_mongolian1.xml index 6c8c8e2fd..4d3375545 100644 --- a/java/res/xml/rowkeys_mongolian1.xml +++ b/java/res/xml/rowkeys_mongolian1.xml @@ -23,61 +23,61 @@ > <!-- U+0444: "ф" CYRILLIC SMALL LETTER EF --> <Key - latin:keyLabel="ф" + latin:keySpec="ф" latin:keyHintLabel="1" latin:additionalMoreKeys="1" /> <!-- U+0446: "ц" CYRILLIC SMALL LETTER TSE --> <Key - latin:keyLabel="ц" + latin:keySpec="ц" latin:keyHintLabel="2" latin:additionalMoreKeys="2" /> <!-- U+0443: "у" CYRILLIC SMALL LETTER U --> <Key - latin:keyLabel="у" + latin:keySpec="у" latin:keyHintLabel="3" latin:additionalMoreKeys="3" latin:moreKeys="!text/more_keys_for_cyrillic_u" /> <!-- U+0436: "ж" CYRILLIC SMALL LETTER ZHE --> <Key - latin:keyLabel="ж" + latin:keySpec="ж" latin:keyHintLabel="4" latin:additionalMoreKeys="4" /> <!-- U+044D: "э" CYRILLIC SMALL LETTER E --> <Key - latin:keyLabel="э" + latin:keySpec="э" latin:keyHintLabel="5" latin:additionalMoreKeys="5" latin:moreKeys="!text/more_keys_for_cyrillic_ie" /> <!-- U+043D: "н" CYRILLIC SMALL LETTER EN --> <Key - latin:keyLabel="н" + latin:keySpec="н" latin:keyHintLabel="6" latin:additionalMoreKeys="6" latin:moreKeys="!text/more_keys_for_cyrillic_en" /> <!-- U+0433: "г" CYRILLIC SMALL LETTER GHE --> <Key - latin:keyLabel="г" + latin:keySpec="г" latin:keyHintLabel="7" latin:additionalMoreKeys="7" latin:moreKeys="!text/more_keys_for_cyrillic_ghe" /> <!-- U+0448: "ш" CYRILLIC SMALL LETTER SHA U+0449: "щ" CYRILLIC SMALL LETTER SHCHA --> <Key - latin:keyLabel="ш" + latin:keySpec="ш" latin:keyHintLabel="8" latin:additionalMoreKeys="8" latin:moreKeys="щ" /> <!-- U+04AF: "ү" CYRILLIC SMALL LETTER STRAIGHT U --> <Key - latin:keyLabel="ү" + latin:keySpec="ү" latin:keyHintLabel="9" latin:additionalMoreKeys="9" /> <!-- U+0437: "з" CYRILLIC SMALL LETTER ZE --> <Key - latin:keyLabel="з" + latin:keySpec="з" latin:keyHintLabel="0" latin:additionalMoreKeys="0" /> <!-- U+043A: "к" CYRILLIC SMALL LETTER KA --> <Key - latin:keyLabel="к" /> + latin:keySpec="к" /> </merge> diff --git a/java/res/xml/rowkeys_mongolian2.xml b/java/res/xml/rowkeys_mongolian2.xml index a8aa00620..f11f4f230 100644 --- a/java/res/xml/rowkeys_mongolian2.xml +++ b/java/res/xml/rowkeys_mongolian2.xml @@ -23,35 +23,35 @@ > <!-- U+0439: "й" CYRILLIC SMALL LETTER SHORT I --> <Key - latin:keyLabel="й" /> + latin:keySpec="й" /> <!-- U+044B: "ы" CYRILLIC SMALL LETTER YERU --> <Key - latin:keyLabel="ы" /> + latin:keySpec="ы" /> <!-- U+0431: "б" CYRILLIC SMALL LETTER BE --> <Key - latin:keyLabel="б" /> + latin:keySpec="б" /> <!-- U+04E9: "ө" CYRILLIC SMALL LETTER BARRED O --> <Key - latin:keyLabel="ө" /> + latin:keySpec="ө" /> <!-- U+0430: "а" CYRILLIC SMALL LETTER A --> <Key - latin:keyLabel="а" /> + latin:keySpec="а" /> <!-- U+0445: "х" CYRILLIC SMALL LETTER HA --> <Key - latin:keyLabel="х" /> + latin:keySpec="х" /> <!-- U+0440: "р" CYRILLIC SMALL LETTER ER --> <Key - latin:keyLabel="р" /> + latin:keySpec="р" /> <!-- U+043E: "о" CYRILLIC SMALL LETTER O --> <Key - latin:keyLabel="о" /> + latin:keySpec="о" /> <!-- U+043B: "л" CYRILLIC SMALL LETTER EL --> <Key - latin:keyLabel="л" /> + latin:keySpec="л" /> <!-- U+0434: "д" CYRILLIC SMALL LETTER DE --> <Key - latin:keyLabel="д" /> + latin:keySpec="д" /> <!-- U+043F: "п" CYRILLIC SMALL LETTER PE --> <Key - latin:keyLabel="п" /> + latin:keySpec="п" /> </merge> diff --git a/java/res/xml/rowkeys_mongolian3.xml b/java/res/xml/rowkeys_mongolian3.xml index dc80c37ab..cf57d1c2a 100644 --- a/java/res/xml/rowkeys_mongolian3.xml +++ b/java/res/xml/rowkeys_mongolian3.xml @@ -23,35 +23,35 @@ > <!-- U+044F: "я" CYRILLIC SMALL LETTER YA --> <Key - latin:keyLabel="я" /> + latin:keySpec="я" /> <!-- U+0447: "ч" CYRILLIC SMALL LETTER CHE --> <Key - latin:keyLabel="ч" /> + latin:keySpec="ч" /> <!-- U+0451: "ё" CYRILLIC SMALL LETTER IO U+0435: "е" CYRILLIC SMALL LETTER IE --> <Key - latin:keyLabel="ё" + latin:keySpec="ё" latin:moreKeys="е" /> <!-- U+0441: "с" CYRILLIC SMALL LETTER ES --> <Key - latin:keyLabel="с" /> + latin:keySpec="с" /> <!-- U+043C: "м" CYRILLIC SMALL LETTER EM --> <Key - latin:keyLabel="м" /> + latin:keySpec="м" /> <!-- U+0438: "и" CYRILLIC SMALL LETTER I --> <Key - latin:keyLabel="и" /> + latin:keySpec="и" /> <!-- U+0442: "т" CYRILLIC SMALL LETTER TE --> <Key - latin:keyLabel="т" /> + latin:keySpec="т" /> <!-- U+044C: "ь" CYRILLIC SMALL LETTER SOFT SIGN U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN --> <Key - latin:keyLabel="ь" + latin:keySpec="ь" latin:moreKeys="ъ" /> <!-- U+0432: "в" CYRILLIC SMALL LETTER VE U+044E: "ю" CYRILLIC SMALL LETTER YU --> <Key - latin:keyLabel="в" + latin:keySpec="в" latin:moreKeys="ю" /> </merge> diff --git a/java/res/xml/rowkeys_nepali_romanized1.xml b/java/res/xml/rowkeys_nepali_romanized1.xml index 408a96648..3c082c2fe 100644 --- a/java/res/xml/rowkeys_nepali_romanized1.xml +++ b/java/res/xml/rowkeys_nepali_romanized1.xml @@ -27,11 +27,11 @@ > <!-- U+0920: "ठ" DEVANAGARI LETTER TTHA --> <Key - latin:keyLabel="ठ" + latin:keySpec="ठ" latin:keyLabelFlags="fontNormal" /> <!-- U+0914: "औ" DEVANAGARI LETTER AU --> <Key - latin:keyLabel="औ" + latin:keySpec="औ" latin:keyLabelFlags="fontNormal" /> <!-- Because the font rendering system prior to API version 16 can't automatically render dotted circle for incomplete combining letter of some scripts, different @@ -47,11 +47,11 @@ latin:keyboardLayout="@xml/key_devanagari_vowel_sign_vocalic_r" /> <!-- U+0925: "थ" DEVANAGARI LETTER THA --> <Key - latin:keyLabel="थ" + latin:keySpec="थ" latin:keyLabelFlags="fontNormal" /> <!-- U+091E: "ञ" DEVANAGARI LETTER NYA --> <Key - latin:keyLabel="ञ" + latin:keySpec="ञ" latin:keyLabelFlags="fontNormal" /> <!-- Because the font rendering system prior to API version 16 can't automatically render dotted circle for incomplete combining letter of some scripts, different @@ -69,15 +69,15 @@ latin:keyStyle="baseKeyDevanagariVowelSignIi" /> <!-- U+0913: "ओ" DEVANAGARI LETTER O --> <Key - latin:keyLabel="ओ" + latin:keySpec="ओ" latin:keyLabelFlags="fontNormal" /> <!-- U+092B: "फ" DEVANAGARI LETTER PHA --> <Key - latin:keyLabel="फ" + latin:keySpec="फ" latin:keyLabelFlags="fontNormal" /> <!-- U+0908: "ई" DEVANAGARI LETTER II --> <Key - latin:keyLabel="ई" + latin:keySpec="ई" latin:keyLabelFlags="fontNormal" /> </case> <default> @@ -85,7 +85,7 @@ U+0967: "१" DEVANAGARI DIGIT ONE U+093C: "़" DEVANAGARI SIGN NUKTA --> <Key - latin:keyLabel="ट" + latin:keySpec="ट" latin:keyHintLabel="1" latin:additionalMoreKeys="१,1" latin:moreKeys="़" @@ -113,21 +113,21 @@ <!-- U+0930: "र" DEVANAGARI LETTER RA U+096A: "४" DEVANAGARI DIGIT FOUR --> <Key - latin:keyLabel="र" + latin:keySpec="र" latin:keyHintLabel="4" latin:additionalMoreKeys="४,4" latin:keyLabelFlags="fontNormal" /> <!-- U+0924: "त" DEVANAGARI LETTER TA U+096B: "५" DEVANAGARI DIGIT FIVE --> <Key - latin:keyLabel="त" + latin:keySpec="त" latin:keyHintLabel="5" latin:additionalMoreKeys="५,5" latin:keyLabelFlags="fontNormal" /> <!-- U+092F: "य" DEVANAGARI LETTER YA U+096C: "६" DEVANAGARI DIGIT SIX --> <Key - latin:keyLabel="य" + latin:keySpec="य" latin:keyHintLabel="6" latin:additionalMoreKeys="६,6" latin:keyLabelFlags="fontNormal" /> @@ -164,13 +164,13 @@ <!-- U+092A: "प" DEVANAGARI LETTER PA U+0966: "०" DEVANAGARI DIGIT ZERO --> <Key - latin:keyLabel="प" + latin:keySpec="प" latin:keyHintLabel="0" latin:additionalMoreKeys="०,0" latin:keyLabelFlags="fontNormal" /> <!-- U+0907: "इ" DEVANAGARI LETTER I --> <Key - latin:keyLabel="इ" + latin:keySpec="इ" latin:keyLabelFlags="fontNormal" /> </default> </switch> diff --git a/java/res/xml/rowkeys_nepali_romanized2.xml b/java/res/xml/rowkeys_nepali_romanized2.xml index 66359ffb5..561ae6c93 100644 --- a/java/res/xml/rowkeys_nepali_romanized2.xml +++ b/java/res/xml/rowkeys_nepali_romanized2.xml @@ -27,43 +27,43 @@ > <!-- U+0906: "आ" DEVANAGARI LETTER AA --> <Key - latin:keyLabel="आ" + latin:keySpec="आ" latin:keyLabelFlags="fontNormal" /> <!-- U+0936: "श" DEVANAGARI LETTER SHA --> <Key - latin:keyLabel="श" + latin:keySpec="श" latin:keyLabelFlags="fontNormal" /> <!-- U+0927: "ध" DEVANAGARI LETTER DHA --> <Key - latin:keyLabel="ध" + latin:keySpec="ध" latin:keyLabelFlags="fontNormal" /> <!-- U+090A: "ऊ" DEVANAGARI LETTER UU --> <Key - latin:keyLabel="ऊ" + latin:keySpec="ऊ" latin:keyLabelFlags="fontNormal" /> <!-- U+0918: "घ" DEVANAGARI LETTER GHA --> <Key - latin:keyLabel="घ" + latin:keySpec="घ" latin:keyLabelFlags="fontNormal" /> <!-- U+0905: "अ" DEVANAGARI LETTER A --> <Key - latin:keyLabel="अ" + latin:keySpec="अ" latin:keyLabelFlags="fontNormal" /> <!-- U+091D: "झ" DEVANAGARI LETTER JHA --> <Key - latin:keyLabel="झ" + latin:keySpec="झ" latin:keyLabelFlags="fontNormal" /> <!-- U+0916: "ख" DEVANAGARI LETTER KHA --> <Key - latin:keyLabel="ख" + latin:keySpec="ख" latin:keyLabelFlags="fontNormal" /> <!-- U+0965: "॥" DEVANAGARI DOUBLE DANDA --> <Key - latin:keyLabel="॥" + latin:keySpec="॥" latin:keyLabelFlags="fontNormal" /> <!-- U+0910: "ऐ" DEVANAGARI LETTER AI --> <Key - latin:keyLabel="ऐ" + latin:keySpec="ऐ" latin:keyLabelFlags="fontNormal" /> <!-- Because the font rendering system prior to API version 16 can't automatically render dotted circle for incomplete combining letter of some scripts, different @@ -83,43 +83,43 @@ latin:keyStyle="baseKeyDevanagariVowelSignAa" /> <!-- U+0938: "स" DEVANAGARI LETTER SA --> <Key - latin:keyLabel="स" + latin:keySpec="स" latin:keyLabelFlags="fontNormal" /> <!-- U+0926: "द" DEVANAGARI LETTER DA --> <Key - latin:keyLabel="द" + latin:keySpec="द" latin:keyLabelFlags="fontNormal" /> <!-- U+0909: "उ" DEVANAGARI LETTER U --> <Key - latin:keyLabel="उ" + latin:keySpec="उ" latin:keyLabelFlags="fontNormal" /> <!-- U+0917: "ग" DEVANAGARI LETTER GA --> <Key - latin:keyLabel="ग" + latin:keySpec="ग" latin:keyLabelFlags="fontNormal" /> <!-- U+0939: "ह" DEVANAGARI LETTER HA --> <Key - latin:keyLabel="ह" + latin:keySpec="ह" latin:keyLabelFlags="fontNormal" /> <!-- U+091C: "ज" DEVANAGARI LETTER JA --> <Key - latin:keyLabel="ज" + latin:keySpec="ज" latin:keyLabelFlags="fontNormal" /> <!-- U+0915: "क" DEVANAGARI LETTER KA --> <Key - latin:keyLabel="क" + latin:keySpec="क" latin:keyLabelFlags="fontNormal" /> <!-- U+0932: "ल" DEVANAGARI LETTER LA --> <Key - latin:keyLabel="ल" + latin:keySpec="ल" latin:keyLabelFlags="fontNormal" /> <!-- U+090F: "ए" DEVANAGARI LETTER E --> <Key - latin:keyLabel="ए" + latin:keySpec="ए" latin:keyLabelFlags="fontNormal" /> <!-- U+0950: "ॐ" DEVANAGARI OM --> <Key - latin:keyLabel="ॐ" + latin:keySpec="ॐ" latin:keyLabelFlags="fontNormal" /> </default> </switch> diff --git a/java/res/xml/rowkeys_nepali_romanized3.xml b/java/res/xml/rowkeys_nepali_romanized3.xml index 166d028a3..232d96e02 100644 --- a/java/res/xml/rowkeys_nepali_romanized3.xml +++ b/java/res/xml/rowkeys_nepali_romanized3.xml @@ -27,15 +27,15 @@ > <!-- U+090B: "ऋ" DEVANAGARI LETTER VOCALIC R --> <Key - latin:keyLabel="ऋ" + latin:keySpec="ऋ" latin:keyLabelFlags="fontNormal" /> <!-- U+0922: "ढ" DEVANAGARI LETTER DDHA --> <Key - latin:keyLabel="ढ" + latin:keySpec="ढ" latin:keyLabelFlags="fontNormal" /> <!-- U+091B: "छ" DEVANAGARI LETTER CHA --> <Key - latin:keyLabel="छ" + latin:keySpec="छ" latin:keyLabelFlags="fontNormal" /> <!-- Because the font rendering system prior to API version 16 can't automatically render dotted circle for incomplete combining letter of some scripts, different @@ -44,11 +44,11 @@ latin:keyboardLayout="@xml/key_devanagari_sign_candrabindu" /> <!-- U+092D: "भ" DEVANAGARI LETTER BHA --> <Key - latin:keyLabel="भ" + latin:keySpec="भ" latin:keyLabelFlags="fontNormal" /> <!-- U+0923: "ण" DEVANAGARI LETTER NNA --> <Key - latin:keyLabel="ण" + latin:keySpec="ण" latin:keyLabelFlags="fontNormal" /> <!-- Because the font rendering system prior to API version 16 can't automatically render dotted circle for incomplete combining letter of some scripts, different @@ -57,7 +57,7 @@ latin:keyboardLayout="@xml/key_devanagari_sign_anusvara" /> <!-- U+0919: "ङ" DEVANAGARI LETTER NGA --> <Key - latin:keyLabel="ङ" + latin:keySpec="ङ" latin:keyLabelFlags="fontNormal" /> <!-- Because the font rendering system prior to API version 16 can't automatically render dotted circle for incomplete combining letter of some scripts, different @@ -70,36 +70,36 @@ <default> <!-- U+0937: "ष" DEVANAGARI LETTER SSA --> <Key - latin:keyLabel="ष" + latin:keySpec="ष" latin:keyLabelFlags="fontNormal" /> <!-- U+0921: "ड" DEVANAGARI LETTER DDA --> <Key - latin:keyLabel="ड" + latin:keySpec="ड" latin:keyLabelFlags="fontNormal" /> <!-- U+091A: "च" DEVANAGARI LETTER CA --> <Key - latin:keyLabel="च" + latin:keySpec="च" latin:keyLabelFlags="fontNormal" /> <!-- U+0935: "व" DEVANAGARI LETTER VA --> <Key - latin:keyLabel="व" + latin:keySpec="व" latin:keyLabelFlags="fontNormal" /> <!-- U+092C: "ब" DEVANAGARI LETTER BHA --> <Key - latin:keyLabel="ब" + latin:keySpec="ब" latin:keyLabelFlags="fontNormal" /> <!-- U+0928: "न" DEVANAGARI LETTER NA --> <Key - latin:keyLabel="न" + latin:keySpec="न" latin:keyLabelFlags="fontNormal" /> <!-- U+092E: "म" DEVANAGARI LETTER MA --> <Key - latin:keyLabel="म" + latin:keySpec="म" latin:keyLabelFlags="fontNormal" /> <!-- U+0964: "।" DEVANAGARI DANDA U+093D: "ऽ" DEVANAGARI SIGN AVAGRAHA --> <Key - latin:keyLabel="।" + latin:keySpec="।" latin:moreKeys="ऽ" latin:keyLabelFlags="fontNormal" /> <!-- Because the font rendering system prior to API version 16 can't automatically diff --git a/java/res/xml/rowkeys_nepali_traditional1.xml b/java/res/xml/rowkeys_nepali_traditional1.xml index c7883c733..98a7be260 100644 --- a/java/res/xml/rowkeys_nepali_traditional1.xml +++ b/java/res/xml/rowkeys_nepali_traditional1.xml @@ -30,61 +30,61 @@ U+091C/U+094D/U+091E: "ज्ञ" DEVANAGARI LETTER JA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER NYA U+0965: "॥" DEVANAGARI DOUBLE DANDA --> <Key - latin:keyLabel="त्त" + latin:keySpec="त्त" latin:moreKeys="ञ,ज्ञ,॥" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> <!-- U+0921/U+094D/U+0922: "ड्ढ" DEVANAGARI LETTER DDA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER DDHA U+0908: "ई" DEVANAGARI LETTER II --> <Key - latin:keyLabel="ड्ढ" + latin:keySpec="ड्ढ" latin:moreKeys="ई" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> <!-- U+0910: "ऐ" DEVANAGARI LETTER AI U+0918: "घ" DEVANAGARI LETTER GHA --> <Key - latin:keyLabel="ऐ" + latin:keySpec="ऐ" latin:moreKeys="घ" latin:keyLabelFlags="fontNormal" /> <!-- U+0926/U+094D/U+0935: "द्व" DEVANAGARI LETTER DA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER VA U+0926/U+094D/U+0927: "द्ध" DEVANAGARI LETTER DA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER DHA --> <Key - latin:keyLabel="द्व" + latin:keySpec="द्व" latin:moreKeys="द्ध" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> <!-- U+091F/U+094D/U+091F: "ट्ट" DEVANAGARI LETTER TTA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER TTA U+091B: "छ" DEVANAGARI LETTER CHA --> <Key - latin:keyLabel="ट्ट" + latin:keySpec="ट्ट" latin:moreKeys="छ" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> <!-- U+0920/U+094D/U+0920: "ठ्ठ" DEVANAGARI LETTER TTHA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER TTHA U+091F: "ट" DEVANAGARI LETTER TTA --> <Key - latin:keyLabel="ठ्ठ" + latin:keySpec="ठ्ठ" latin:moreKeys="ट" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> <!-- U+090A: "ऊ" DEVANAGARI LETTER UU U+0920: "ठ" DEVANAGARI LETTER TTHA --> <Key - latin:keyLabel="ऊ" + latin:keySpec="ऊ" latin:moreKeys="ठ" latin:keyLabelFlags="fontNormal" /> <!-- U+0915/U+094D/U+0937: "क्ष" DEVANAGARI LETTER KA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER SSA U+0921: "ड" DEVANAGARI LETTER DDA --> <Key - latin:keyLabel="क्ष" + latin:keySpec="क्ष" latin:moreKeys="ड" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> <!-- U+0907: "इ" DEVANAGARI LETTER I U+0922: "ढ" DEVANAGARI LETTER DDHA --> <Key - latin:keyLabel="इ" + latin:keySpec="इ" latin:moreKeys="ढ" latin:keyLabelFlags="fontNormal" /> <!-- U+090F: "ए" DEVANAGARI LETTER E U+0923: "ण" DEVANAGARI LETTER NNA --> <Key - latin:keyLabel="ए" + latin:keySpec="ए" latin:moreKeys="ण" latin:keyLabelFlags="fontNormal" /> <!-- Because the font rendering system prior to API version 16 can't automatically @@ -97,77 +97,77 @@ <!-- U+091F: "ट" DEVANAGARI LETTER TTA U+0967: "१" DEVANAGARI DIGIT ONE --> <Key - latin:keyLabel="ट" + latin:keySpec="ट" latin:keyHintLabel="1" latin:additionalMoreKeys="१,1" latin:keyLabelFlags="fontNormal" /> <!-- U+0927: "ध" DEVANAGARI LETTER DHA U+0968: "२" DEVANAGARI DIGIT TWO --> <Key - latin:keyLabel="ध" + latin:keySpec="ध" latin:keyHintLabel="2" latin:additionalMoreKeys="२,2" latin:keyLabelFlags="fontNormal" /> <!-- U+092D: "भ" DEVANAGARI LETTER BHA U+0969: "३" DEVANAGARI DIGIT THREE --> <Key - latin:keyLabel="भ" + latin:keySpec="भ" latin:keyHintLabel="3" latin:additionalMoreKeys="३,3" latin:keyLabelFlags="fontNormal" /> <!-- U+091A: "च" DEVANAGARI LETTER CA U+096A: "४" DEVANAGARI DIGIT FOUR --> <Key - latin:keyLabel="च" + latin:keySpec="च" latin:keyHintLabel="4" latin:additionalMoreKeys="४,4" latin:keyLabelFlags="fontNormal" /> <!-- U+0924: "त" DEVANAGARI LETTER TA U+096B: "५" DEVANAGARI DIGIT FIVE --> <Key - latin:keyLabel="त" + latin:keySpec="त" latin:keyHintLabel="5" latin:additionalMoreKeys="५,5" latin:keyLabelFlags="fontNormal" /> <!-- U+0925: "थ" DEVANAGARI LETTER THA U+096C: "६" DEVANAGARI DIGIT SIX --> <Key - latin:keyLabel="थ" + latin:keySpec="थ" latin:keyHintLabel="6" latin:additionalMoreKeys="६,6" latin:keyLabelFlags="fontNormal" /> <!-- U+0917: "ग" DEVANAGARI LETTER G U+096D: "७" DEVANAGARI DIGIT SEVEN --> <Key - latin:keyLabel="ग" + latin:keySpec="ग" latin:keyHintLabel="7" latin:additionalMoreKeys="७,7" latin:keyLabelFlags="fontNormal" /> <!-- U+0937: "ष" DEVANAGARI LETTER SSA U+096E: "८" DEVANAGARI DIGIT EIGHT --> <Key - latin:keyLabel="ष" + latin:keySpec="ष" latin:keyHintLabel="8" latin:additionalMoreKeys="८,8" latin:keyLabelFlags="fontNormal" /> <!-- U+092F: "य" DEVANAGARI LETTER YA U+096F: "९" DEVANAGARI DIGIT NINE --> <Key - latin:keyLabel="य" + latin:keySpec="य" latin:keyHintLabel="9" latin:additionalMoreKeys="९,9" latin:keyLabelFlags="fontNormal" /> <!-- U+0909: "उ" DEVANAGARI LETTER U U+0966: "०" DEVANAGARI DIGIT ZERO --> <Key - latin:keyLabel="उ" + latin:keySpec="उ" latin:keyHintLabel="0" latin:additionalMoreKeys="०,0" latin:keyLabelFlags="fontNormal" /> <!-- U+0907: "इ" DEVANAGARI LETTER I U+0914: "औ" DEVANAGARI LETTER AU --> <Key - latin:keyLabel="इ" + latin:keySpec="इ" latin:moreKeys="औ" latin:keyLabelFlags="fontNormal" /> </default> diff --git a/java/res/xml/rowkeys_nepali_traditional2.xml b/java/res/xml/rowkeys_nepali_traditional2.xml index 45620a9d7..5ea14ea0d 100644 --- a/java/res/xml/rowkeys_nepali_traditional2.xml +++ b/java/res/xml/rowkeys_nepali_traditional2.xml @@ -27,15 +27,15 @@ > <!-- U+0906: "आ" DEVANAGARI LETTER AA --> <Key - latin:keyLabel="आ" + latin:keySpec="आ" latin:keyLabelFlags="fontNormal" /> <!-- U+0919/U+094D: "ङ्" DEVANAGARI LETTER NGA/DEVANAGARI SIGN VIRAMA --> <Key - latin:keyLabel="ङ्" + latin:keySpec="ङ्" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> <!-- U+0921/U+094D/U+0921: "ड्ड" DEVANAGARI LETTER DDA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER DDA --> <Key - latin:keyLabel="ड्ड" + latin:keySpec="ड्ड" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> <!-- Because the font rendering system prior to API version 16 can't automatically render dotted circle for incomplete combining letter of some scripts, different @@ -44,11 +44,11 @@ latin:keyboardLayout="@xml/key_devanagari_sign_candrabindu" /> <!-- U+0926/U+094D/U+0926: "द्द" DEVANAGARI LETTER DA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER DA --> <Key - latin:keyLabel="द्द" + latin:keySpec="द्द" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> <!-- U+091D: "झ" DEVANAGARI LETTER JHA --> <Key - latin:keyLabel="झ" + latin:keySpec="झ" latin:keyLabelFlags="fontNormal" /> <!-- Because the font rendering system prior to API version 16 can't automatically render dotted circle for incomplete combining letter of some scripts, different @@ -59,7 +59,7 @@ latin:keyStyle="baseKeyDevanagariVowelSignO" /> <!-- U+092B: "फ" DEVANAGARI LETTER PHA --> <Key - latin:keyLabel="फ" + latin:keySpec="फ" latin:keyLabelFlags="fontNormal" /> <!-- Because the font rendering system prior to API version 16 can't automatically render dotted circle for incomplete combining letter of some scripts, different @@ -70,7 +70,7 @@ latin:keyStyle="baseKeyDevanagariVowelSignIi" /> <!-- U+091F/U+094D/U+0920: "ट्ठ" DEVANAGARI LETTER TTA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER TTHA --> <Key - latin:keyLabel="ट्ठ" + latin:keySpec="ट्ठ" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> <!-- Because the font rendering system prior to API version 16 can't automatically render dotted circle for incomplete combining letter of some scripts, different @@ -83,15 +83,15 @@ <default> <!-- U+092C: "ब" DEVANAGARI LETTER BA --> <Key - latin:keyLabel="ब" + latin:keySpec="ब" latin:keyLabelFlags="fontNormal" /> <!-- U+0915: "क" DEVANAGARI LETTER KA --> <Key - latin:keyLabel="क" + latin:keySpec="क" latin:keyLabelFlags="fontNormal" /> <!-- U+092E: "म" DEVANAGARI LETTER MA --> <Key - latin:keyLabel="म" + latin:keySpec="म" latin:keyLabelFlags="fontNormal" /> <!-- Because the font rendering system prior to API version 16 can't automatically render dotted circle for incomplete combining letter of some scripts, different @@ -102,19 +102,19 @@ latin:keyStyle="baseKeyDevanagariVowelSignAa" /> <!-- U+0928: "न" DEVANAGARI LETTER NA --> <Key - latin:keyLabel="न" + latin:keySpec="न" latin:keyLabelFlags="fontNormal" /> <!-- U+091C: "ज" DEVANAGARI LETTER JA --> <Key - latin:keyLabel="ज" + latin:keySpec="ज" latin:keyLabelFlags="fontNormal" /> <!-- U+0935: "व" DEVANAGARI LETTER VA --> <Key - latin:keyLabel="व" + latin:keySpec="व" latin:keyLabelFlags="fontNormal" /> <!-- U+092A: "प" DEVANAGARI LETTER PA --> <Key - latin:keyLabel="प" + latin:keySpec="प" latin:keyLabelFlags="fontNormal" /> <!-- Because the font rendering system prior to API version 16 can't automatically render dotted circle for incomplete combining letter of some scripts, different @@ -125,7 +125,7 @@ latin:keyStyle="baseKeyDevanagariVowelSignI" /> <!-- U+0938: "स" DEVANAGARI LETTER SA --> <Key - latin:keyLabel="स" + latin:keySpec="स" latin:keyLabelFlags="fontNormal" /> <!-- Because the font rendering system prior to API version 16 can't automatically render dotted circle for incomplete combining letter of some scripts, different diff --git a/java/res/xml/rowkeys_nepali_traditional3_left6.xml b/java/res/xml/rowkeys_nepali_traditional3_left6.xml index 1cacced83..59f6e651a 100644 --- a/java/res/xml/rowkeys_nepali_traditional3_left6.xml +++ b/java/res/xml/rowkeys_nepali_traditional3_left6.xml @@ -27,19 +27,19 @@ > <!-- U+0915/U+094D: "क्" DEVANAGARI LETTER KA/DEVANAGARI SIGN VIRAMA --> <Key - latin:keyLabel="क्" + latin:keySpec="क्" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> <!-- U+0939/U+094D/U+092E: "ह्म" DEVANAGARI LETTER HA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER MA --> <Key - latin:keyLabel="ह्म" + latin:keySpec="ह्म" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> <!-- U+090B: "ऋ" DEVANAGARI LETTER VOCALIC R --> <Key - latin:keyLabel="ऋ" + latin:keySpec="ऋ" latin:keyLabelFlags="fontNormal" /> <!-- U+0950: "ॐ" DEVANAGARI OM --> <Key - latin:keyLabel="ॐ" + latin:keySpec="ॐ" latin:keyLabelFlags="fontNormal" /> <!-- Because the font rendering system prior to API version 16 can't automatically render dotted circle for incomplete combining letter of some scripts, different @@ -50,33 +50,33 @@ latin:keyStyle="baseKeyDevanagariVowelSignAu" /> <!-- U+0926/U+094D/U+092F: "द्य" DEVANAGARI LETTER DA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER YA --> <Key - latin:keyLabel="द्य" + latin:keySpec="द्य" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> </case> <default> <!-- U+0936: "श" DEVANAGARI LETTER SHA --> <Key - latin:keyLabel="श" + latin:keySpec="श" latin:keyLabelFlags="fontNormal" /> <!-- U+0939: "ह" DEVANAGARI LETTER HA --> <Key - latin:keyLabel="ह" + latin:keySpec="ह" latin:keyLabelFlags="fontNormal" /> <!-- U+0905: "अ" DEVANAGARI LETTER A --> <Key - latin:keyLabel="अ" + latin:keySpec="अ" latin:keyLabelFlags="fontNormal" /> <!-- U+0916: "ख" DEVANAGARI LETTER KHA --> <Key - latin:keyLabel="ख" + latin:keySpec="ख" latin:keyLabelFlags="fontNormal" /> <!-- U+0926: "द" DEVANAGARI LETTER DA --> <Key - latin:keyLabel="द" + latin:keySpec="द" latin:keyLabelFlags="fontNormal" /> <!-- U+0932: "ल" DEVANAGARI LETTER LA --> <Key - latin:keyLabel="ल" + latin:keySpec="ल" latin:keyLabelFlags="fontNormal" /> </default> </switch> diff --git a/java/res/xml/rowkeys_nepali_traditional3_right3.xml b/java/res/xml/rowkeys_nepali_traditional3_right3.xml index b2e01e481..d6a74d46a 100644 --- a/java/res/xml/rowkeys_nepali_traditional3_right3.xml +++ b/java/res/xml/rowkeys_nepali_traditional3_right3.xml @@ -32,7 +32,7 @@ latin:keyboardLayout="@xml/key_devanagari_sign_anusvara" /> <!-- U+0919: "ङ" DEVANAGARI LETTER NGA --> <Key - latin:keyLabel="ङ" + latin:keySpec="ङ" latin:keyLabelFlags="fontNormal" /> <!-- Because the font rendering system prior to API version 16 can't automatically render dotted circle for incomplete combining letter of some scripts, different @@ -52,12 +52,12 @@ latin:keyStyle="baseKeyDevanagariVowelSignE" /> <!-- U+0964: "।" DEVANAGARI DANDA --> <Key - latin:keyLabel="।" + latin:keySpec="।" latin:keyLabelFlags="fontNormal" /> <!-- U+0930: "र" DEVANAGARI LETTER RA U+0930/U+0941: "रु" DEVANAGARI LETTER RA/DEVANAGARI VOWEL SIGN U --> <Key - latin:keyLabel="र" + latin:keySpec="र" latin:moreKeys="रु" latin:keyLabelFlags="fontNormal" /> </default> diff --git a/java/res/xml/rowkeys_nepali_traditional3_right5.xml b/java/res/xml/rowkeys_nepali_traditional3_right5.xml index 87f061610..a34f40097 100644 --- a/java/res/xml/rowkeys_nepali_traditional3_right5.xml +++ b/java/res/xml/rowkeys_nepali_traditional3_right5.xml @@ -32,7 +32,7 @@ latin:keyboardLayout="@xml/key_devanagari_sign_anusvara" /> <!-- U+0919: "ङ" DEVANAGARI LETTER NGA --> <Key - latin:keyLabel="ङ" + latin:keySpec="ङ" latin:keyLabelFlags="fontNormal" /> <!-- Because the font rendering system prior to API version 16 can't automatically render dotted circle for incomplete combining letter of some scripts, different @@ -43,11 +43,11 @@ latin:keyStyle="baseKeyDevanagariVowelSignAi" /> <!-- U+0930/U+0941: "रु" DEVANAGARI LETTER RA/DEVANAGARI VOWEL SIGN U --> <Key - latin:keyLabel="रु" + latin:keySpec="रु" latin:moreKeys="!" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> <Key - latin:keyLabel="\?" /> + latin:keySpec="\?" /> </case> <default> <!-- Because the font rendering system prior to API version 16 can't automatically @@ -71,11 +71,11 @@ latin:keyStyle="baseKeyDevanagariVowelSignE" /> <!-- U+0964: "।" DEVANAGARI DANDA --> <Key - latin:keyLabel="।" + latin:keySpec="।" latin:keyLabelFlags="fontNormal" /> <!-- U+0930: "र" DEVANAGARI LETTER RA --> <Key - latin:keyLabel="र" + latin:keySpec="र" latin:moreKeys="!" latin:keyLabelFlags="fontNormal" /> <!-- Because the font rendering system prior to API version 16 can't automatically diff --git a/java/res/xml/rowkeys_nordic1.xml b/java/res/xml/rowkeys_nordic1.xml index 72ac86b2e..40e556b98 100644 --- a/java/res/xml/rowkeys_nordic1.xml +++ b/java/res/xml/rowkeys_nordic1.xml @@ -24,5 +24,5 @@ <include latin:keyboardLayout="@xml/rowkeys_qwerty1" /> <Key - latin:keyLabel="!text/keylabel_for_nordic_row1_11" /> + latin:keySpec="!text/keylabel_for_nordic_row1_11" /> </merge> diff --git a/java/res/xml/rowkeys_nordic2.xml b/java/res/xml/rowkeys_nordic2.xml index 836214abf..4064e4f27 100644 --- a/java/res/xml/rowkeys_nordic2.xml +++ b/java/res/xml/rowkeys_nordic2.xml @@ -24,9 +24,9 @@ <include latin:keyboardLayout="@xml/rowkeys_qwerty2" /> <Key - latin:keyLabel="!text/keylabel_for_nordic_row2_10" + latin:keySpec="!text/keylabel_for_nordic_row2_10" latin:moreKeys="!text/more_keys_for_nordic_row2_10" /> <Key - latin:keyLabel="!text/keylabel_for_nordic_row2_11" + latin:keySpec="!text/keylabel_for_nordic_row2_11" latin:moreKeys="!text/more_keys_for_nordic_row2_11" /> </merge> diff --git a/java/res/xml/rowkeys_pcqwerty1.xml b/java/res/xml/rowkeys_pcqwerty1.xml index 1ac264afa..fdb50729b 100644 --- a/java/res/xml/rowkeys_pcqwerty1.xml +++ b/java/res/xml/rowkeys_pcqwerty1.xml @@ -22,60 +22,60 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Key - latin:keyLabel="`" + latin:keySpec="`" latin:additionalMoreKeys="~" /> <Key - latin:keyLabel="1" + latin:keySpec="1" latin:additionalMoreKeys="!,!text/more_keys_for_exclamation" latin:moreKeys="!text/more_keys_for_symbols_1" /> <Key - latin:keyLabel="2" + latin:keySpec="2" latin:additionalMoreKeys="\@" latin:moreKeys="!text/more_keys_for_symbols_2" /> <Key - latin:keyLabel="3" + latin:keySpec="3" latin:additionalMoreKeys="\#" latin:moreKeys="!text/more_keys_for_symbols_3" /> <Key - latin:keyLabel="4" + latin:keySpec="4" latin:additionalMoreKeys="$" latin:moreKeys="!text/more_keys_for_symbols_4" /> <Key - latin:keyLabel="5" + latin:keySpec="5" latin:additionalMoreKeys="\\%" latin:moreKeys="!text/more_keys_for_symbols_5" /> <Key - latin:keyLabel="6" + latin:keySpec="6" latin:additionalMoreKeys="^" latin:moreKeys="!text/more_keys_for_symbols_6" /> <Key - latin:keyLabel="7" + latin:keySpec="7" latin:additionalMoreKeys="&" latin:moreKeys="!text/more_keys_for_symbols_7" /> <Key - latin:keyLabel="8" + latin:keySpec="8" latin:additionalMoreKeys="*" latin:moreKeys="!text/more_keys_for_symbols_8" /> <Key - latin:keyLabel="9" + latin:keySpec="9" latin:additionalMoreKeys="(" latin:moreKeys="!text/more_keys_for_symbols_9" /> <Key - latin:keyLabel="0" + latin:keySpec="0" latin:additionalMoreKeys=")" latin:moreKeys="!text/more_keys_for_symbols_0" /> <!-- U+2013: "–" EN DASH U+2014: "—" EM DASH U+00B7: "·" MIDDLE DOT --> <Key - latin:keyLabel="-" + latin:keySpec="-" latin:additionalMoreKeys="_" latin:moreKeys="–,—,·" /> <!-- U+221E: "∞" INFINITY U+2260: "≠" NOT EQUAL TO U+2248: "≈" ALMOST EQUAL TO --> <Key - latin:keyLabel="=" + latin:keySpec="=" latin:additionalMoreKeys="+" latin:moreKeys="!fixedColumnOrder!4,∞,≠,≈,%" /> </merge> diff --git a/java/res/xml/rowkeys_pcqwerty1_shift.xml b/java/res/xml/rowkeys_pcqwerty1_shift.xml index 718acfd24..b9597c066 100644 --- a/java/res/xml/rowkeys_pcqwerty1_shift.xml +++ b/java/res/xml/rowkeys_pcqwerty1_shift.xml @@ -22,39 +22,39 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Key - latin:keyLabel="~" /> + latin:keySpec="~" /> <Key - latin:keyLabel="!" + latin:keySpec="!" latin:additionalMoreKeys="!text/more_keys_for_exclamation" /> <Key - latin:keyLabel="\@" /> + latin:keySpec="\@" /> <Key - latin:keyLabel="\#" /> + latin:keySpec="\#" /> <Key - latin:keyLabel="$" + latin:keySpec="$" latin:additionalMoreKeys="!text/more_keys_for_currency_dollar" /> <Key - latin:keyLabel="%" + latin:keySpec="%" latin:additionalMoreKeys="!text/more_keys_for_symbols_percent" /> <Key - latin:keyLabel="^" /> + latin:keySpec="^" /> <Key - latin:keyLabel="&" /> + latin:keySpec="&" /> <Key - latin:keyLabel="*" + latin:keySpec="*" latin:additionalMoreKeys="!text/more_keys_for_star" /> <Key - latin:keyLabel="(" /> + latin:keySpec="(" /> <Key - latin:keyLabel=")" /> + latin:keySpec=")" /> <Key - latin:keyLabel="_" /> + latin:keySpec="_" /> <!-- U+00B1: "±" PLUS-MINUS SIGN U+00D7: "×" MULTIPLICATION SIGN U+00F7: "÷" DIVISION SIGN U+221A: "√" SQUARE ROOT --> <Key - latin:keyLabel="+" + latin:keySpec="+" latin:additionalMoreKeys="!text/more_keys_for_plus" latin:moreKeys="±,×,÷,√" /> </merge> diff --git a/java/res/xml/rowkeys_qwerty1.xml b/java/res/xml/rowkeys_qwerty1.xml index e7c9b590b..7ebde8d00 100644 --- a/java/res/xml/rowkeys_qwerty1.xml +++ b/java/res/xml/rowkeys_qwerty1.xml @@ -22,52 +22,52 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Key - latin:keyLabel="!text/keylabel_for_q" + latin:keySpec="!text/keylabel_for_q" latin:keyHintLabel="1" latin:additionalMoreKeys="1" latin:moreKeys="!text/more_keys_for_q" /> <Key - latin:keyLabel="!text/keylabel_for_w" + latin:keySpec="!text/keylabel_for_w" latin:keyHintLabel="2" latin:additionalMoreKeys="2" latin:moreKeys="!text/more_keys_for_w" /> <Key - latin:keyLabel="e" + latin:keySpec="e" latin:keyHintLabel="3" latin:additionalMoreKeys="3" latin:moreKeys="!text/more_keys_for_e" /> <Key - latin:keyLabel="r" + latin:keySpec="r" latin:keyHintLabel="4" latin:additionalMoreKeys="4" latin:moreKeys="!text/more_keys_for_r" /> <Key - latin:keyLabel="t" + latin:keySpec="t" latin:keyHintLabel="5" latin:additionalMoreKeys="5" latin:moreKeys="!text/more_keys_for_t" /> <Key - latin:keyLabel="!text/keylabel_for_y" + latin:keySpec="!text/keylabel_for_y" latin:keyHintLabel="6" latin:additionalMoreKeys="6" latin:moreKeys="!text/more_keys_for_y" /> <Key - latin:keyLabel="u" + latin:keySpec="u" latin:keyHintLabel="7" latin:additionalMoreKeys="7" latin:moreKeys="!text/more_keys_for_u" /> <Key - latin:keyLabel="i" + latin:keySpec="i" latin:keyHintLabel="8" latin:additionalMoreKeys="8" latin:moreKeys="!text/more_keys_for_i" /> <Key - latin:keyLabel="o" + latin:keySpec="o" latin:keyHintLabel="9" latin:additionalMoreKeys="9" latin:moreKeys="!text/more_keys_for_o" /> <Key - latin:keyLabel="p" + latin:keySpec="p" latin:keyHintLabel="0" latin:additionalMoreKeys="0" /> </merge> diff --git a/java/res/xml/rowkeys_qwerty2.xml b/java/res/xml/rowkeys_qwerty2.xml index d9777d920..0700ccecd 100644 --- a/java/res/xml/rowkeys_qwerty2.xml +++ b/java/res/xml/rowkeys_qwerty2.xml @@ -22,29 +22,29 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Key - latin:keyLabel="a" + latin:keySpec="a" latin:moreKeys="!text/more_keys_for_a" /> <Key - latin:keyLabel="s" + latin:keySpec="s" latin:moreKeys="!text/more_keys_for_s" /> <Key - latin:keyLabel="d" + latin:keySpec="d" latin:moreKeys="!text/more_keys_for_d" /> <Key - latin:keyLabel="f" /> + latin:keySpec="f" /> <Key - latin:keyLabel="g" + latin:keySpec="g" latin:moreKeys="!text/more_keys_for_g" /> <Key - latin:keyLabel="h" + latin:keySpec="h" latin:moreKeys="!text/more_keys_for_h" /> <Key - latin:keyLabel="j" + latin:keySpec="j" latin:moreKeys="!text/more_keys_for_j" /> <Key - latin:keyLabel="k" + latin:keySpec="k" latin:moreKeys="!text/more_keys_for_k" /> <Key - latin:keyLabel="l" + latin:keySpec="l" latin:moreKeys="!text/more_keys_for_l" /> </merge> diff --git a/java/res/xml/rowkeys_qwerty3.xml b/java/res/xml/rowkeys_qwerty3.xml index b70fd729f..b48606c25 100644 --- a/java/res/xml/rowkeys_qwerty3.xml +++ b/java/res/xml/rowkeys_qwerty3.xml @@ -22,22 +22,22 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Key - latin:keyLabel="z" + latin:keySpec="z" latin:moreKeys="!text/more_keys_for_z" /> <Key - latin:keyLabel="!text/keylabel_for_x" + latin:keySpec="!text/keylabel_for_x" latin:moreKeys="!text/more_keys_for_x" /> <Key - latin:keyLabel="c" + latin:keySpec="c" latin:moreKeys="!text/more_keys_for_c" /> <Key - latin:keyLabel="v" + latin:keySpec="v" latin:moreKeys="!text/more_keys_for_v" /> <Key - latin:keyLabel="b" /> + latin:keySpec="b" /> <Key - latin:keyLabel="n" + latin:keySpec="n" latin:moreKeys="!text/more_keys_for_n" /> <Key - latin:keyLabel="m" /> + latin:keySpec="m" /> </merge> diff --git a/java/res/xml/rowkeys_qwertz1.xml b/java/res/xml/rowkeys_qwertz1.xml index d87f03ddc..61ce97b83 100644 --- a/java/res/xml/rowkeys_qwertz1.xml +++ b/java/res/xml/rowkeys_qwertz1.xml @@ -22,51 +22,51 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Key - latin:keyLabel="q" + latin:keySpec="q" latin:keyHintLabel="1" latin:additionalMoreKeys="1" /> <Key - latin:keyLabel="w" + latin:keySpec="w" latin:keyHintLabel="2" latin:additionalMoreKeys="2" latin:moreKeys="!text/more_keys_for_w" /> <Key - latin:keyLabel="e" + latin:keySpec="e" latin:keyHintLabel="3" latin:additionalMoreKeys="3" latin:moreKeys="!text/more_keys_for_e" /> <Key - latin:keyLabel="r" + latin:keySpec="r" latin:keyHintLabel="4" latin:additionalMoreKeys="4" latin:moreKeys="!text/more_keys_for_r" /> <Key - latin:keyLabel="t" + latin:keySpec="t" latin:keyHintLabel="5" latin:additionalMoreKeys="5" latin:moreKeys="!text/more_keys_for_t" /> <Key - latin:keyLabel="z" + latin:keySpec="z" latin:keyHintLabel="6" latin:additionalMoreKeys="6" latin:moreKeys="!text/more_keys_for_z" /> <Key - latin:keyLabel="u" + latin:keySpec="u" latin:keyHintLabel="7" latin:additionalMoreKeys="7" latin:moreKeys="!text/more_keys_for_u" /> <Key - latin:keyLabel="i" + latin:keySpec="i" latin:keyHintLabel="8" latin:additionalMoreKeys="8" latin:moreKeys="!text/more_keys_for_i" /> <Key - latin:keyLabel="o" + latin:keySpec="o" latin:keyHintLabel="9" latin:additionalMoreKeys="9" latin:moreKeys="!text/more_keys_for_o" /> <Key - latin:keyLabel="p" + latin:keySpec="p" latin:keyHintLabel="0" latin:additionalMoreKeys="0" /> </merge> diff --git a/java/res/xml/rowkeys_qwertz3.xml b/java/res/xml/rowkeys_qwertz3.xml index 9e39fe08e..55a8ffa18 100644 --- a/java/res/xml/rowkeys_qwertz3.xml +++ b/java/res/xml/rowkeys_qwertz3.xml @@ -22,21 +22,21 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Key - latin:keyLabel="y" + latin:keySpec="y" latin:moreKeys="!text/more_keys_for_y" /> <Key - latin:keyLabel="x" /> + latin:keySpec="x" /> <Key - latin:keyLabel="c" + latin:keySpec="c" latin:moreKeys="!text/more_keys_for_c" /> <Key - latin:keyLabel="v" + latin:keySpec="v" latin:moreKeys="!text/more_keys_for_v" /> <Key - latin:keyLabel="b" /> + latin:keySpec="b" /> <Key - latin:keyLabel="n" + latin:keySpec="n" latin:moreKeys="!text/more_keys_for_n" /> <Key - latin:keyLabel="m" /> + latin:keySpec="m" /> </merge> diff --git a/java/res/xml/rowkeys_south_slavic1.xml b/java/res/xml/rowkeys_south_slavic1.xml index 6117d46f1..8b1d696b7 100644 --- a/java/res/xml/rowkeys_south_slavic1.xml +++ b/java/res/xml/rowkeys_south_slavic1.xml @@ -23,56 +23,56 @@ > <!-- U+0459: "љ" CYRILLIC SMALL LETTER LJE --> <Key - latin:keyLabel="љ" + latin:keySpec="љ" latin:keyHintLabel="1" latin:additionalMoreKeys="1" /> <!-- U+045A: "њ" CYRILLIC SMALL LETTER NJE --> <Key - latin:keyLabel="њ" + latin:keySpec="њ" latin:keyHintLabel="2" latin:additionalMoreKeys="2" /> <!-- U+0435: "е" CYRILLIC SMALL LETTER IE --> <Key - latin:keyLabel="е" + latin:keySpec="е" latin:keyHintLabel="3" latin:additionalMoreKeys="3" latin:moreKeys="!text/more_keys_for_cyrillic_ie" /> <!-- U+0440: "р" CYRILLIC SMALL LETTER ER --> <Key - latin:keyLabel="р" + latin:keySpec="р" latin:keyHintLabel="4" latin:additionalMoreKeys="4" /> <!-- U+0442: "т" CYRILLIC SMALL LETTER TE --> <Key - latin:keyLabel="т" + latin:keySpec="т" latin:keyHintLabel="5" latin:additionalMoreKeys="5" /> <Key - latin:keyLabel="!text/keylabel_for_south_slavic_row1_6" + latin:keySpec="!text/keylabel_for_south_slavic_row1_6" latin:keyHintLabel="6" latin:additionalMoreKeys="6" /> <!-- U+0443: "у" CYRILLIC SMALL LETTER U --> <Key - latin:keyLabel="у" + latin:keySpec="у" latin:keyHintLabel="7" latin:additionalMoreKeys="7" /> <!-- U+0438: "и" CYRILLIC SMALL LETTER I --> <Key - latin:keyLabel="и" + latin:keySpec="и" latin:keyHintLabel="8" latin:additionalMoreKeys="8" latin:moreKeys="!text/more_keys_for_cyrillic_i" /> <!-- U+043E: "о" CYRILLIC SMALL LETTER O --> <Key - latin:keyLabel="о" + latin:keySpec="о" latin:keyHintLabel="9" latin:additionalMoreKeys="9" /> <!-- U+043F: "п" CYRILLIC SMALL LETTER PE --> <Key - latin:keyLabel="п" + latin:keySpec="п" latin:keyHintLabel="0" latin:additionalMoreKeys="0" /> <!-- U+0448: "ш" CYRILLIC SMALL LETTER SHA --> <Key - latin:keyLabel="ш" /> + latin:keySpec="ш" /> </merge> diff --git a/java/res/xml/rowkeys_south_slavic2.xml b/java/res/xml/rowkeys_south_slavic2.xml index 88e894053..fa2426442 100644 --- a/java/res/xml/rowkeys_south_slavic2.xml +++ b/java/res/xml/rowkeys_south_slavic2.xml @@ -23,34 +23,34 @@ > <!-- U+0430: "а" CYRILLIC SMALL LETTER A --> <Key - latin:keyLabel="а" /> + latin:keySpec="а" /> <!-- U+0441: "с" CYRILLIC SMALL LETTER ES --> <Key - latin:keyLabel="с" /> + latin:keySpec="с" /> <!-- U+0434: "д" CYRILLIC SMALL LETTER DE --> <Key - latin:keyLabel="д" /> + latin:keySpec="д" /> <!-- U+0444: "ф" CYRILLIC SMALL LETTER EF --> <Key - latin:keyLabel="ф" /> + latin:keySpec="ф" /> <!-- U+0433: "г" CYRILLIC SMALL LETTER GHE --> <Key - latin:keyLabel="г" /> + latin:keySpec="г" /> <!-- U+0445: "х" CYRILLIC SMALL LETTER HA --> <Key - latin:keyLabel="х" /> + latin:keySpec="х" /> <!-- U+0458: "ј" CYRILLIC SMALL LETTER JE --> <Key - latin:keyLabel="ј" /> + latin:keySpec="ј" /> <!-- U+043A: "к" CYRILLIC SMALL LETTER KA --> <Key - latin:keyLabel="к" /> + latin:keySpec="к" /> <!-- U+043B: "л" CYRILLIC SMALL LETTER EL --> <Key - latin:keyLabel="л" /> + latin:keySpec="л" /> <!-- U+0447: "ч" CYRILLIC SMALL LETTER CHE --> <Key - latin:keyLabel="ч" /> + latin:keySpec="ч" /> <Key - latin:keyLabel="!text/keylabel_for_south_slavic_row2_11" /> + latin:keySpec="!text/keylabel_for_south_slavic_row2_11" /> </merge> diff --git a/java/res/xml/rowkeys_south_slavic3.xml b/java/res/xml/rowkeys_south_slavic3.xml index b01550911..8b54ec8c1 100644 --- a/java/res/xml/rowkeys_south_slavic3.xml +++ b/java/res/xml/rowkeys_south_slavic3.xml @@ -22,28 +22,28 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Key - latin:keyLabel="!text/keylabel_for_south_slavic_row3_1" /> + latin:keySpec="!text/keylabel_for_south_slavic_row3_1" /> <!-- U+045F: "џ" CYRILLIC SMALL LETTER DZHE --> <Key - latin:keyLabel="џ" /> + latin:keySpec="џ" /> <!-- U+0446: "ц" CYRILLIC SMALL LETTER TSE --> <Key - latin:keyLabel="ц" /> + latin:keySpec="ц" /> <!-- U+0432: "в" CYRILLIC SMALL LETTER VE --> <Key - latin:keyLabel="в" /> + latin:keySpec="в" /> <!-- U+0431: "б" CYRILLIC SMALL LETTER BE --> <Key - latin:keyLabel="б" /> + latin:keySpec="б" /> <!-- U+043D: "н" CYRILLIC SMALL LETTER EN --> <Key - latin:keyLabel="н" /> + latin:keySpec="н" /> <!-- U+043C: "м" CYRILLIC SMALL LETTER EM --> <Key - latin:keyLabel="м" /> + latin:keySpec="м" /> <Key - latin:keyLabel="!text/keylabel_for_south_slavic_row3_8" /> + latin:keySpec="!text/keylabel_for_south_slavic_row3_8" /> <!-- U+0436: "ж" CYRILLIC SMALL LETTER ZHE --> <Key - latin:keyLabel="ж" /> + latin:keySpec="ж" /> </merge> diff --git a/java/res/xml/rowkeys_spanish2.xml b/java/res/xml/rowkeys_spanish2.xml index 335dff33c..68632fd2c 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:keyLabel="!text/keylabel_for_spanish_row2_10" /> + latin:keySpec="!text/keylabel_for_spanish_row2_10" /> </merge> diff --git a/java/res/xml/rowkeys_swiss1.xml b/java/res/xml/rowkeys_swiss1.xml index e3b842619..458771d0c 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:keyLabel="!text/keylabel_for_swiss_row1_11" + latin:keySpec="!text/keylabel_for_swiss_row1_11" latin:moreKeys="!text/more_keys_for_swiss_row1_11" /> </merge> diff --git a/java/res/xml/rowkeys_swiss2.xml b/java/res/xml/rowkeys_swiss2.xml index 5364a448c..0c25fe806 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:keyLabel="!text/keylabel_for_swiss_row2_10" + latin:keySpec="!text/keylabel_for_swiss_row2_10" latin:moreKeys="!text/more_keys_for_swiss_row2_10" /> <Key - latin:keyLabel="!text/keylabel_for_swiss_row2_11" + latin:keySpec="!text/keylabel_for_swiss_row2_11" latin:moreKeys="!text/more_keys_for_swiss_row2_11" /> </merge> diff --git a/java/res/xml/rowkeys_symbols1.xml b/java/res/xml/rowkeys_symbols1.xml index 6e2f92dd9..b35b18079 100644 --- a/java/res/xml/rowkeys_symbols1.xml +++ b/java/res/xml/rowkeys_symbols1.xml @@ -22,43 +22,43 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Key - latin:keyLabel="!text/keylabel_for_symbols_1" + latin:keySpec="!text/keylabel_for_symbols_1" latin:additionalMoreKeys="!text/additional_more_keys_for_symbols_1" latin:moreKeys="!text/more_keys_for_symbols_1" /> <Key - latin:keyLabel="!text/keylabel_for_symbols_2" + latin:keySpec="!text/keylabel_for_symbols_2" latin:additionalMoreKeys="!text/additional_more_keys_for_symbols_2" latin:moreKeys="!text/more_keys_for_symbols_2" /> <Key - latin:keyLabel="!text/keylabel_for_symbols_3" + latin:keySpec="!text/keylabel_for_symbols_3" latin:additionalMoreKeys="!text/additional_more_keys_for_symbols_3" latin:moreKeys="!text/more_keys_for_symbols_3" /> <Key - latin:keyLabel="!text/keylabel_for_symbols_4" + latin:keySpec="!text/keylabel_for_symbols_4" latin:additionalMoreKeys="!text/additional_more_keys_for_symbols_4" latin:moreKeys="!text/more_keys_for_symbols_4" /> <Key - latin:keyLabel="!text/keylabel_for_symbols_5" + latin:keySpec="!text/keylabel_for_symbols_5" latin:additionalMoreKeys="!text/additional_more_keys_for_symbols_5" latin:moreKeys="!text/more_keys_for_symbols_5" /> <Key - latin:keyLabel="!text/keylabel_for_symbols_6" + latin:keySpec="!text/keylabel_for_symbols_6" latin:additionalMoreKeys="!text/additional_more_keys_for_symbols_6" latin:moreKeys="!text/more_keys_for_symbols_6" /> <Key - latin:keyLabel="!text/keylabel_for_symbols_7" + latin:keySpec="!text/keylabel_for_symbols_7" latin:additionalMoreKeys="!text/additional_more_keys_for_symbols_7" latin:moreKeys="!text/more_keys_for_symbols_7" /> <Key - latin:keyLabel="!text/keylabel_for_symbols_8" + latin:keySpec="!text/keylabel_for_symbols_8" latin:additionalMoreKeys="!text/additional_more_keys_for_symbols_8" latin:moreKeys="!text/more_keys_for_symbols_8" /> <Key - latin:keyLabel="!text/keylabel_for_symbols_9" + latin:keySpec="!text/keylabel_for_symbols_9" latin:additionalMoreKeys="!text/additional_more_keys_for_symbols_9" latin:moreKeys="!text/more_keys_for_symbols_9" /> <Key - latin:keyLabel="!text/keylabel_for_symbols_0" + latin:keySpec="!text/keylabel_for_symbols_0" latin:additionalMoreKeys="!text/additional_more_keys_for_symbols_0" latin:moreKeys="!text/more_keys_for_symbols_0" /> </merge> diff --git a/java/res/xml/rowkeys_symbols2.xml b/java/res/xml/rowkeys_symbols2.xml index 76cbf6259..fe8653d1c 100644 --- a/java/res/xml/rowkeys_symbols2.xml +++ b/java/res/xml/rowkeys_symbols2.xml @@ -28,36 +28,36 @@ <!-- U+066C: "٬" ARABIC THOUSANDS SEPARATOR U+066B: "٫" ARABIC DECIMAL SEPARATOR --> <Key - latin:keyLabel="٬" + latin:keySpec="٬" latin:keyHintLabel="\@" latin:moreKeys="\@" /> <Key - latin:keyLabel="٫" + latin:keySpec="٫" latin:keyHintLabel="\#" latin:moreKeys="\#" /> </case> <default> <Key - latin:keyLabel="\@" /> + latin:keySpec="\@" /> <Key - latin:keyLabel="\#" /> + latin:keySpec="\#" /> </default> </switch> <Key latin:keyStyle="currencyKeyStyle" /> <Key - latin:keyLabel="!text/keylabel_for_symbols_percent" + latin:keySpec="!text/keylabel_for_symbols_percent" latin:moreKeys="!text/more_keys_for_symbols_percent" /> <Key - latin:keyLabel="&" /> + latin:keySpec="&" /> <!-- U+2013: "–" EN DASH U+2014: "—" EM DASH U+00B7: "·" MIDDLE DOT --> <Key - latin:keyLabel="-" + latin:keySpec="-" latin:moreKeys="_,–,—,·" /> <Key - latin:keyLabel="+" + latin:keySpec="+" latin:moreKeys="!text/more_keys_for_plus" /> <include latin:keyboardLayout="@xml/keys_parentheses" /> diff --git a/java/res/xml/rowkeys_symbols3.xml b/java/res/xml/rowkeys_symbols3.xml index e525dc480..01ca0301d 100644 --- a/java/res/xml/rowkeys_symbols3.xml +++ b/java/res/xml/rowkeys_symbols3.xml @@ -22,41 +22,40 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Key - latin:keyLabel="*" + latin:keySpec="*" latin:moreKeys="!text/more_keys_for_star" /> <switch> <case latin:languageCode="fa" > + <!-- TODO: Introduce !code/key_{left,right}_angle_quotation. --> <!-- U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK --> <Key - latin:keyLabel="«" - latin:code="0x00BB" + latin:keySpec="«|»" latin:moreKeys="!text/more_keys_for_double_quote" /> <Key - latin:keyLabel="»" - latin:code="0x00AB" + latin:keySpec="»|«" latin:moreKeys="!text/more_keys_for_single_quote" /> </case> <default> <Key - latin:keyLabel=""" + latin:keySpec=""" latin:moreKeys="!text/more_keys_for_double_quote" /> <Key - latin:keyLabel="\'" + latin:keySpec="\'" latin:moreKeys="!text/more_keys_for_single_quote" /> </default> </switch> <Key - latin:keyLabel=":" /> + latin:keySpec=":" /> <Key - latin:keyLabel="!text/keylabel_for_symbols_semicolon" + latin:keySpec="!text/keylabel_for_symbols_semicolon" latin:moreKeys="!text/more_keys_for_symbols_semicolon" /> <Key - latin:keyLabel="!" + latin:keySpec="!" latin:moreKeys="!text/more_keys_for_exclamation" /> <Key - latin:keyLabel="!text/keylabel_for_symbols_question" + latin:keySpec="!text/keylabel_for_symbols_question" latin:moreKeys="!text/more_keys_for_question" /> </merge> diff --git a/java/res/xml/rowkeys_symbols_shift1.xml b/java/res/xml/rowkeys_symbols_shift1.xml index 6013493e5..7cb3213f0 100644 --- a/java/res/xml/rowkeys_symbols_shift1.xml +++ b/java/res/xml/rowkeys_symbols_shift1.xml @@ -22,35 +22,35 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Key - latin:keyLabel="~" /> + latin:keySpec="~" /> <Key - latin:keyLabel="`" /> + latin:keySpec="`" /> <Key - latin:keyLabel="|" /> + latin:keySpec="|" /> <!-- U+2022: "•" BULLET --> <Key - latin:keyLabel="•" + latin:keySpec="•" latin:moreKeys="!text/more_keys_for_bullet" /> <!-- U+221A: "√" SQUARE ROOT --> <Key - latin:keyLabel="√" /> + latin:keySpec="√" /> <!-- U+03A0: "Π" GREEK CAPITAL LETTER PI U+03C0: "π" GREEK SMALL LETTER PI --> <Key - latin:keyLabel="Π" + latin:keySpec="Π" latin:moreKeys="π" /> <!-- U+00F7: "÷" DIVISION SIGN --> <Key - latin:keyLabel="÷" /> + latin:keySpec="÷" /> <!-- U+00D7: "×" MULTIPLICATION SIGN --> <Key - latin:keyLabel="×" /> + latin:keySpec="×" /> <!-- U+00B6: "¶" PILCROW SIGN U+00A7: "§" SECTION SIGN --> <Key - latin:keyLabel="¶" + latin:keySpec="¶" latin:moreKeys="§" /> <!-- U+2206: "∆" INCREMENT --> <Key - latin:keyLabel="∆" /> + latin:keySpec="∆" /> </merge> diff --git a/java/res/xml/rowkeys_symbols_shift2.xml b/java/res/xml/rowkeys_symbols_shift2.xml index 36f92143f..39a58030b 100644 --- a/java/res/xml/rowkeys_symbols_shift2.xml +++ b/java/res/xml/rowkeys_symbols_shift2.xml @@ -34,19 +34,19 @@ U+2190: "←" LEFTWARDS ARROW U+2192: "→" RIGHTWARDS ARROW --> <Key - latin:keyLabel="^" + latin:keySpec="^" latin:moreKeys="↑,↓,←,→" /> <!-- U+00B0: "°" DEGREE SIGN U+2032: "′" PRIME U+2033: "″" DOUBLE PRIME --> <Key - latin:keyLabel="°" + latin:keySpec="°" latin:moreKeys="′,″" /> <!-- U+2260: "≠" NOT EQUAL TO U+2248: "≈" ALMOST EQUAL TO U+221E: "∞" INFINITY --> <Key - latin:keyLabel="=" + latin:keySpec="=" latin:moreKeys="≠,≈,∞" /> <include latin:keyboardLayout="@xml/keys_curly_brackets" /> diff --git a/java/res/xml/rowkeys_symbols_shift3.xml b/java/res/xml/rowkeys_symbols_shift3.xml index 5fe1c7450..92ff97bb0 100644 --- a/java/res/xml/rowkeys_symbols_shift3.xml +++ b/java/res/xml/rowkeys_symbols_shift3.xml @@ -22,19 +22,19 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Key - latin:keyLabel="\\" /> + latin:keySpec="\\" /> <!-- U+00A9: "©" COPYRIGHT SIGN --> <Key - latin:keyLabel="©" /> + latin:keySpec="©" /> <!-- U+00AE: "®" REGISTERED SIGN --> <Key - latin:keyLabel="®" /> + latin:keySpec="®" /> <!-- U+2122: "™" TRADE MARK SIGN --> <Key - latin:keyLabel="™" /> + latin:keySpec="™" /> <!-- U+2105: "℅" CARE OF --> <Key - latin:keyLabel="℅" /> + latin:keySpec="℅" /> <include latin:keyboardLayout="@xml/keys_square_brackets" /> </merge> diff --git a/java/res/xml/rowkeys_thai1.xml b/java/res/xml/rowkeys_thai1.xml index cd536656f..e42bda391 100644 --- a/java/res/xml/rowkeys_thai1.xml +++ b/java/res/xml/rowkeys_thai1.xml @@ -26,77 +26,76 @@ latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted" > <Key - latin:keyLabel="+" /> + latin:keySpec="+" /> <!-- U+0E51: "๑" THAI DIGIT ONE --> <Key - latin:keyLabel="๑" + latin:keySpec="๑" latin:keyLabelFlags="fontNormal" /> <!-- U+0E52: "๒" THAI DIGIT TWO --> <Key - latin:keyLabel="๒" + latin:keySpec="๒" latin:keyLabelFlags="fontNormal" /> <!-- U+0E53: "๓" THAI DIGIT THREE --> <Key - latin:keyLabel="๓" + latin:keySpec="๓" latin:keyLabelFlags="fontNormal" /> <!-- U+0E54: "๔" THAI DIGIT FOUR --> <Key - latin:keyLabel="๔" + latin:keySpec="๔" latin:keyLabelFlags="fontNormal" /> <!-- U+0020: " " SPACE U+0E39: " ู" THAI CHARACTER SARA UU --> <!-- Note: The space character is needed as a preceding letter to draw some Thai composing characters correctly. --> <Key - latin:keyLabel=" ู" - latin:code="0x0E39" + latin:keySpec=" ู|ู" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> <!-- U+0E3F: "฿" THAI CURRENCY SYMBOL BAHT --> <Key - latin:keyLabel="฿" + latin:keySpec="฿" latin:keyLabelFlags="fontNormal" /> <!-- U+0E55: "๕" THAI DIGIT FIVE --> <Key - latin:keyLabel="๕" + latin:keySpec="๕" latin:keyLabelFlags="fontNormal" /> <!-- U+0E56: "๖" THAI DIGIT SIX --> <Key - latin:keyLabel="๖" + latin:keySpec="๖" latin:keyLabelFlags="fontNormal" /> <!-- U+0E57: "๗" THAI DIGIT SEVEN --> <Key - latin:keyLabel="๗" + latin:keySpec="๗" latin:keyLabelFlags="fontNormal" /> <!-- U+0E58: "๘" THAI DIGIT EIGHT --> <Key - latin:keyLabel="๘" + latin:keySpec="๘" latin:keyLabelFlags="fontNormal" /> <!-- U+0E59: "๙" THAI DIGIT NINE --> <Key - latin:keyLabel="๙" + latin:keySpec="๙" latin:keyLabelFlags="fontNormal" /> </case> <default> <!-- U+0E45: "ๅ" THAI CHARACTER LAKKHANGYAO --> <Key - latin:keyLabel="ๅ" + latin:keySpec="ๅ" latin:keyLabelFlags="fontNormal" /> <!-- U+0E51: "๑" THAI DIGIT ONE --> <Key latin:keyHintLabel="1" latin:additionalMoreKeys="1" latin:moreKeys="๑" - latin:keyLabel="/" /> + latin:keySpec="/" /> <!-- U+0E52: "๒" THAI DIGIT TWO --> <Key latin:keyHintLabel="2" latin:additionalMoreKeys="2" latin:moreKeys="๒" - latin:keyLabel="_" /> + latin:keySpec="_" /> <!-- U+0E20: "ภ" THAI CHARACTER PHO SAMPHAO U+0E53: "๓" THAI DIGIT THREE --> <Key - latin:keyLabel="ภ" + latin:keySpec="ภ" latin:keyHintLabel="3" latin:additionalMoreKeys="3" latin:moreKeys="๓" @@ -104,7 +103,7 @@ <!-- U+0E16: "ถ" THAI CHARACTER THO THUNG U+0E54: "๔" THAI DIGIT FOUR --> <Key - latin:keyLabel="ถ" + latin:keySpec="ถ" latin:keyHintLabel="4" latin:additionalMoreKeys="4" latin:moreKeys="๔" @@ -114,21 +113,19 @@ <!-- Note: The space character is needed as a preceding letter to draw some Thai composing characters correctly. --> <Key - latin:keyLabel=" ุ" - latin:code="0x0E38" + latin:keySpec=" ุ|ุ" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> <!-- U+0020: " " SPACE U+0E36: " ึ" THAI CHARACTER SARA UE --> <!-- Note: The space character is needed as a preceding letter to draw some Thai composing characters correctly. --> <Key - latin:keyLabel=" ึ" - latin:code="0x0E36" + latin:keySpec=" ึ|ึ" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> <!-- U+0E04: "ค" THAI CHARACTER KHO KHWAI U+0E55: "๕" THAI DIGIT FIVE --> <Key - latin:keyLabel="ค" + latin:keySpec="ค" latin:keyHintLabel="5" latin:additionalMoreKeys="5" latin:moreKeys="๕" @@ -136,7 +133,7 @@ <!-- U+0E15: "ต" THAI CHARACTER TO TAO U+0E56: "๖" THAI DIGIT SIX --> <Key - latin:keyLabel="ต" + latin:keySpec="ต" latin:keyHintLabel="6" latin:additionalMoreKeys="6" latin:moreKeys="๖" @@ -144,7 +141,7 @@ <!-- U+0E08: "จ" THAI CHARACTER CHO CHAN U+0E57: "๗" THAI DIGIT SEVEN --> <Key - latin:keyLabel="จ" + latin:keySpec="จ" latin:keyHintLabel="7" latin:additionalMoreKeys="7" latin:moreKeys="๗" @@ -152,7 +149,7 @@ <!-- U+0E02: "ข" THAI CHARACTER KHO KHAI U+0E58: "๘" THAI DIGIT EIGHT --> <Key - latin:keyLabel="ข" + latin:keySpec="ข" latin:keyHintLabel="8" latin:additionalMoreKeys="8" latin:moreKeys="๘" @@ -160,7 +157,7 @@ <!-- U+0E0A: "ช" THAI CHARACTER CHO CHANG U+0E59: "๙" THAI DIGIT NINE --> <Key - latin:keyLabel="ช" + latin:keySpec="ช" latin:keyHintLabel="9" latin:additionalMoreKeys="9" latin:moreKeys="๙" diff --git a/java/res/xml/rowkeys_thai2.xml b/java/res/xml/rowkeys_thai2.xml index 4bcbbbf8d..7ab036a05 100644 --- a/java/res/xml/rowkeys_thai2.xml +++ b/java/res/xml/rowkeys_thai2.xml @@ -27,117 +27,113 @@ > <!-- U+0E50: "๐" THAI DIGIT ZERO --> <Key - latin:keyLabel="๐" + latin:keySpec="๐" latin:keyLabelFlags="fontNormal" /> <Key - latin:keyLabel=""" /> + latin:keySpec=""" /> <!-- U+0E0E: "ฎ" THAI CHARACTER DO CHADA --> <Key - latin:keyLabel="ฎ" + latin:keySpec="ฎ" latin:keyLabelFlags="fontNormal" /> <!-- U+0E11: "ฑ" THAI CHARACTER THO NANGMONTHO --> <Key - latin:keyLabel="ฑ" + latin:keySpec="ฑ" latin:keyLabelFlags="fontNormal" /> <!-- U+0E18: "ธ" THAI CHARACTER THO THONG --> <Key - latin:keyLabel="ธ" + latin:keySpec="ธ" latin:keyLabelFlags="fontNormal" /> <!-- U+0020: " " SPACE U+0E4D: " ํ" THAI CHARACTER THANTHAKHAT --> <!-- Note: The space character is needed as a preceding letter to draw some Thai composing characters correctly. --> <Key - latin:keyLabel=" ํ" - latin:code="0x0E4D" + latin:keySpec=" ํ|ํ" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> <!-- U+0020: " " SPACE U+0E4A: " ๊" THAI CHARACTER MAI TRI --> <!-- Note: The space character is needed as a preceding letter to draw some Thai composing characters correctly. --> <Key - latin:keyLabel=" ๊" - latin:code="0x0E4A" + latin:keySpec=" ๊|๊" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> <!-- U+0E13: "ณ" THAI CHARACTER NO NEN --> <Key - latin:keyLabel="ณ" + latin:keySpec="ณ" latin:keyLabelFlags="fontNormal" /> <!-- U+0E2F: "ฯ" THAI CHARACTER PAIYANNOI --> <Key - latin:keyLabel="ฯ" + latin:keySpec="ฯ" latin:keyLabelFlags="fontNormal" /> <!-- U+0E0D: "ญ" THAI CHARACTER YO YING --> <Key - latin:keyLabel="ญ" + latin:keySpec="ญ" latin:keyLabelFlags="fontNormal" /> <!-- U+0E10: "ฐ" THAI CHARACTER THO THAN --> <Key - latin:keyLabel="ฐ" + latin:keySpec="ฐ" latin:keyLabelFlags="fontNormal" /> <Key - latin:keyLabel="," /> + latin:keySpec="," /> </case> <default> <!-- U+0E46: "ๆ" THAI CHARACTER MAIYAMOK U+0E50: "๐" THAI DIGIT ZERO --> <Key - latin:keyLabel="ๆ" + latin:keySpec="ๆ" latin:keyHintLabel="0" latin:additionalMoreKeys="0" latin:moreKeys="๐" latin:keyLabelFlags="fontNormal" /> <!-- U+0E44: "ไ" THAI CHARACTER SARA AI MAIMALAI --> <Key - latin:keyLabel="ไ" + latin:keySpec="ไ" latin:keyLabelFlags="fontNormal" /> <!-- U+0E33: "ำ" THAI CHARACTER SARA AM --> <Key - latin:keyLabel="ำ" + latin:keySpec="ำ" latin:keyLabelFlags="fontNormal" /> <!-- U+0E1E: "พ" THAI CHARACTER PHO PHAN --> <Key - latin:keyLabel="พ" + latin:keySpec="พ" latin:keyLabelFlags="fontNormal" /> <!-- U+0E30: "ะ" THAI CHARACTER SARA A --> <Key - latin:keyLabel="ะ" + latin:keySpec="ะ" latin:keyLabelFlags="fontNormal" /> <!-- U+0020: " " SPACE U+0E31: " ั" THAI CHARACTER MAI HAN-AKAT --> <!-- Note: The space character is needed as a preceding letter to draw some Thai composing characters correctly. --> <Key - latin:keyLabel=" ั" - latin:code="0x0E31" + latin:keySpec=" ั|ั" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> <!-- U+0020: " " SPACE U+0E35: " ี" HAI CHARACTER SARA II --> <!-- Note: The space character is needed as a preceding letter to draw some Thai composing characters correctly. --> <Key - latin:keyLabel=" ี" - latin:code="0x0E35" + latin:keySpec=" ี|ี" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> <!-- U+0E23: "ร" THAI CHARACTER RO RUA --> <Key - latin:keyLabel="ร" + latin:keySpec="ร" latin:keyLabelFlags="fontNormal" /> <!-- U+0E19: "น" THAI CHARACTER NO NU --> <Key - latin:keyLabel="น" + latin:keySpec="น" latin:keyLabelFlags="fontNormal" /> <!-- U+0E22: "ย" THAI CHARACTER YO YAK --> <Key - latin:keyLabel="ย" + latin:keySpec="ย" latin:keyLabelFlags="fontNormal" /> <!-- U+0E1A: "บ" THAI CHARACTER BO BAIMAI --> <Key - latin:keyLabel="บ" + latin:keySpec="บ" latin:keyLabelFlags="fontNormal" /> <!-- U+0E25: "ล" THAI CHARACTER LO LING --> <Key - latin:keyLabel="ล" + latin:keySpec="ล" latin:keyLabelFlags="fontNormal" /> </default> </switch> diff --git a/java/res/xml/rowkeys_thai3.xml b/java/res/xml/rowkeys_thai3.xml index 7b6e6372e..4af4d232b 100644 --- a/java/res/xml/rowkeys_thai3.xml +++ b/java/res/xml/rowkeys_thai3.xml @@ -27,107 +27,103 @@ > <!-- U+0E24: "ฤ" THAI CHARACTER RU --> <Key - latin:keyLabel="ฤ" + latin:keySpec="ฤ" latin:keyLabelFlags="fontNormal" /> <!-- U+0E06: "ฆ" THAI CHARACTER KHO RAKHANG --> <Key - latin:keyLabel="ฆ" + latin:keySpec="ฆ" latin:keyLabelFlags="fontNormal" /> <!-- U+0E0F: "ฏ" THAI CHARACTER TO PATAK --> <Key - latin:keyLabel="ฏ" + latin:keySpec="ฏ" latin:keyLabelFlags="fontNormal" /> <!-- U+0E42: "โ" THAI CHARACTER SARA O --> <Key - latin:keyLabel="โ" + latin:keySpec="โ" latin:keyLabelFlags="fontNormal" /> <!-- U+0E0C: "ฌ" THAI CHARACTER CHO CHOE --> <Key - latin:keyLabel="ฌ" + latin:keySpec="ฌ" latin:keyLabelFlags="fontNormal" /> <!-- U+0020: " " SPACE U+0E47: " ็" THAI CHARACTER MAITAIKHU --> <!-- Note: The space character is needed as a preceding letter to draw some Thai composing characters correctly. --> <Key - latin:keyLabel=" ็" - latin:code="0x0E47" + latin:keySpec=" ็|็" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> <!-- U+0020: " " SPACE U+0E4B: " ๋" THAI CHARACTER MAI CHATTAWA --> <!-- Note: The space character is needed as a preceding letter to draw some Thai composing characters correctly. --> <Key - latin:keyLabel=" ๋" - latin:code="0x0E4B" + latin:keySpec=" ๋|๋" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> <!-- U+0E29: "ษ" THAI CHARACTER SO RUSI --> <Key - latin:keyLabel="ษ" + latin:keySpec="ษ" latin:keyLabelFlags="fontNormal" /> <!-- U+0E28: "ศ" THAI CHARACTER SO SALA --> <Key - latin:keyLabel="ศ" + latin:keySpec="ศ" latin:keyLabelFlags="fontNormal" /> <!-- U+0E0B: "ซ" THAI CHARACTER SO SO --> <Key - latin:keyLabel="ซ" + latin:keySpec="ซ" latin:keyLabelFlags="fontNormal" /> <Key - latin:keyLabel="." /> + latin:keySpec="." /> </case> <default> <!-- U+0E1F: "ฟ" THAI CHARACTER FO FAN --> <Key - latin:keyLabel="ฟ" + latin:keySpec="ฟ" latin:keyLabelFlags="fontNormal" /> <!-- U+0E2B: "ห" THAI CHARACTER HO HIP --> <Key - latin:keyLabel="ห" + latin:keySpec="ห" latin:keyLabelFlags="fontNormal" /> <!-- U+0E01: "ก" THAI CHARACTER KO KAI --> <Key - latin:keyLabel="ก" + latin:keySpec="ก" latin:keyLabelFlags="fontNormal" /> <!-- U+0E14: "ด" THAI CHARACTER DO DEK --> <Key - latin:keyLabel="ด" + latin:keySpec="ด" latin:keyLabelFlags="fontNormal" /> <!-- U+0E40: "เ" THAI CHARACTER SARA E --> <Key - latin:keyLabel="เ" + latin:keySpec="เ" latin:keyLabelFlags="fontNormal" /> <!-- U+0020: " " SPACE U+0E49: " ้" THAI CHARACTER MAI THO --> <!-- Note: The space character is needed as a preceding letter to draw some Thai composing characters correctly. --> <Key - latin:keyLabel=" ้" - latin:code="0x0E49" + latin:keySpec=" ้|้" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> <!-- U+0020: " " SPACE U+0E48: " ่" THAI CHARACTER MAI EK --> <!-- Note: The space character is needed as a preceding letter to draw some Thai composing characters correctly. --> <Key - latin:keyLabel=" ่" - latin:code="0x0E48" + latin:keySpec=" ่|่" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> <!-- U+0E32: "า" THAI CHARACTER SARA AA --> <Key - latin:keyLabel="า" + latin:keySpec="า" latin:keyLabelFlags="fontNormal" /> <!-- U+0E2A: "ส" THAI CHARACTER SO SUA --> <Key - latin:keyLabel="ส" + latin:keySpec="ส" latin:keyLabelFlags="fontNormal" /> <!-- U+0E27: "ว" THAI CHARACTER WO WAEN --> <Key - latin:keyLabel="ว" + latin:keySpec="ว" latin:keyLabelFlags="fontNormal" /> <!-- U+0E07: "ง" THAI CHARACTER NGO NGU --> <Key - latin:keyLabel="ง" + latin:keySpec="ง" latin:keyLabelFlags="fontNormal" /> </default> </switch> diff --git a/java/res/xml/rowkeys_thai4.xml b/java/res/xml/rowkeys_thai4.xml index 8a784242c..332d09d7e 100644 --- a/java/res/xml/rowkeys_thai4.xml +++ b/java/res/xml/rowkeys_thai4.xml @@ -26,96 +26,92 @@ latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted" > <Key - latin:keyLabel="(" /> + latin:keySpec="(" /> <Key - latin:keyLabel=")" /> + latin:keySpec=")" /> <!-- U+0E09: "ฉ" THAI CHARACTER CHO CHING --> <Key - latin:keyLabel="ฉ" + latin:keySpec="ฉ" latin:keyLabelFlags="fontNormal" /> <!-- U+0E2E: "ฮ" THAI CHARACTER HO NOKHUK --> <Key - latin:keyLabel="ฮ" + latin:keySpec="ฮ" latin:keyLabelFlags="fontNormal" /> <!-- U+0020: " " SPACE U+0E3A: " ฺ" THAI CHARACTER PHINTHU --> <!-- Note: The space character is needed as a preceding letter to draw some Thai composing characters correctly. --> <Key - latin:keyLabel=" ฺ" - latin:code="0x0E3A" + latin:keySpec=" ฺ|ฺ" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> <!-- U+0020: " " SPACE U+0E4C: " ์" THAI CHARACTER THANTHAKHAT --> <!-- Note: The space character is needed as a preceding letter to draw some Thai composing characters correctly. --> <Key - latin:keyLabel=" ์" - latin:code="0x0E4C" + latin:keySpec=" ์|์" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> <Key - latin:keyLabel="\?" /> + latin:keySpec="\?" /> <!-- U+0E12: "ฒ" THAI CHARACTER THO PHUTHAO --> <Key - latin:keyLabel="ฒ" + latin:keySpec="ฒ" latin:keyLabelFlags="fontNormal" /> <!-- U+0E2C: "ฬ" THAI CHARACTER LO CHULA --> <Key - latin:keyLabel="ฬ" + latin:keySpec="ฬ" latin:keyLabelFlags="fontNormal" /> <!-- U+0E26: "ฦ" THAI CHARACTER LU --> <Key - latin:keyLabel="ฦ" + latin:keySpec="ฦ" latin:keyLabelFlags="fontNormal" /> </case> <default> <!-- U+0E1C: "ผ" THAI CHARACTER PHO PHUNG --> <Key - latin:keyLabel="ผ" + latin:keySpec="ผ" latin:keyLabelFlags="fontNormal" /> <!-- U+0E1B: "ป" THAI CHARACTER PO PLA --> <Key - latin:keyLabel="ป" + latin:keySpec="ป" latin:keyLabelFlags="fontNormal" /> <!-- U+0E41: "แ" THAI CHARACTER SARA AE --> <Key - latin:keyLabel="แ" + latin:keySpec="แ" latin:keyLabelFlags="fontNormal" /> <!-- U+0E2D: "อ" THAI CHARACTER O ANG --> <Key - latin:keyLabel="อ" + latin:keySpec="อ" latin:keyLabelFlags="fontNormal" /> <!-- U+0020: " " SPACE U+0E34: " ิ" THAI CHARACTER SARA I --> <!-- Note: The space character is needed as a preceding letter to draw some Thai composing characters correctly. --> <Key - latin:keyLabel=" ิ" - latin:code="0x0E34" + latin:keySpec=" ิ|ิ" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> <!-- U+0020: " " SPACE U+0E37: " ื" THAI CHARACTER SARA UEE --> <!-- Note: The space character is needed as a preceding letter to draw some Thai composing characters correctly. --> <Key - latin:keyLabel=" ื" - latin:code="0x0E37" + latin:keySpec=" ื|ื" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> <!-- U+0E17: "ท" THAI CHARACTER THO THAHAN --> <Key - latin:keyLabel="ท" + latin:keySpec="ท" latin:keyLabelFlags="fontNormal" /> <!-- U+0E21: "ม" THAI CHARACTER MO MA --> <Key - latin:keyLabel="ม" + latin:keySpec="ม" latin:keyLabelFlags="fontNormal" /> <!-- U+0E43: "ใ" THAI CHARACTER SARA AI MAIMUAN --> <Key - latin:keyLabel="ใ" + latin:keySpec="ใ" latin:keyLabelFlags="fontNormal" /> <!-- U+0E1D: "ฝ" THAI CHARACTER FO FA --> <Key - latin:keyLabel="ฝ" + latin:keySpec="ฝ" latin:keyLabelFlags="fontNormal" /> </default> </switch> diff --git a/java/res/xml/rows_number_normal.xml b/java/res/xml/rows_number_normal.xml index 291018a14..8c9267a53 100644 --- a/java/res/xml/rows_number_normal.xml +++ b/java/res/xml/rows_number_normal.xml @@ -23,16 +23,16 @@ > <Row> <Key - latin:keyLabel="1" + latin:keySpec="1" latin:keyStyle="numKeyStyle" /> <Key - latin:keyLabel="2" + latin:keySpec="2" latin:keyStyle="numKeyStyle" /> <Key - latin:keyLabel="3" + latin:keySpec="3" latin:keyStyle="numKeyStyle" /> <Key - latin:keyLabel="-" + latin:keySpec="-" latin:moreKeys="+" latin:keyLabelFlags="hasPopupHint" latin:keyStyle="numFunctionalKeyStyle" @@ -40,20 +40,20 @@ </Row> <Row> <Key - latin:keyLabel="4" + latin:keySpec="4" latin:keyStyle="numKeyStyle" /> <Key - latin:keyLabel="5" + latin:keySpec="5" latin:keyStyle="numKeyStyle" /> <Key - latin:keyLabel="6" + latin:keySpec="6" latin:keyStyle="numKeyStyle" /> <switch> <case latin:mode="date" > <Key - latin:keyLabel="." + latin:keySpec="." latin:keyStyle="numFunctionalKeyStyle" latin:keyWidth="fillRight" /> </case> @@ -61,7 +61,7 @@ latin:mode="time|datetime" > <Key - latin:keyLabel="." + latin:keySpec="." latin:keyLabelFlags="hasPopupHint" latin:moreKeys="!text/more_keys_for_am_pm" latin:keyStyle="numFunctionalKeyStyle" @@ -69,7 +69,7 @@ </case> <default> <Key - latin:keyLabel="," + latin:keySpec="," latin:keyStyle="numFunctionalKeyStyle" latin:keyWidth="fillRight" /> </default> @@ -77,13 +77,13 @@ </Row> <Row> <Key - latin:keyLabel="7" + latin:keySpec="7" latin:keyStyle="numKeyStyle" /> <Key - latin:keyLabel="8" + latin:keySpec="8" latin:keyStyle="numKeyStyle"/> <Key - latin:keyLabel="9" + latin:keySpec="9" latin:keyStyle="numKeyStyle" /> <Key latin:keyStyle="deleteKeyStyle" @@ -93,36 +93,34 @@ <Key latin:keyStyle="numSpaceKeyStyle" /> <Key - latin:keyLabel="0" + latin:keySpec="0" latin:keyStyle="numKeyStyle" /> <switch> <case latin:mode="date" > <Key - latin:keyLabel="/" + latin:keySpec="/" latin:keyStyle="numKeyStyle" /> </case> <case latin:mode="time" > <Key - latin:keyLabel=":" + latin:keySpec=":" latin:keyStyle="numKeyStyle" /> </case> <case latin:mode="datetime" > - <!-- U+002F: "/" SOLIDUS --> <Key - latin:code="0x002F" - latin:keyLabel="/ :" + latin:keySpec="/ :|/" latin:moreKeys="!noPanelAutoMoreKey!,:" latin:keyStyle="numKeyStyle" /> </case> <default> <Key - latin:keyLabel="." + latin:keySpec="." latin:keyStyle="numKeyStyle" /> </default> </switch> diff --git a/java/res/xml/rows_phone.xml b/java/res/xml/rows_phone.xml index d8dcfbd62..03e45419a 100644 --- a/java/res/xml/rows_phone.xml +++ b/java/res/xml/rows_phone.xml @@ -33,7 +33,7 @@ <Key latin:keyStyle="num3KeyStyle" /> <Key - latin:keyLabel="-" + latin:keySpec="-" latin:moreKeys="+" latin:keyLabelFlags="hasPopupHint" latin:keyStyle="numFunctionalKeyStyle" @@ -47,7 +47,7 @@ <Key latin:keyStyle="num6KeyStyle" /> <Key - latin:keyLabel="." + latin:keySpec="." latin:keyStyle="numFunctionalKeyStyle" latin:keyWidth="fillRight" /> </Row> @@ -68,8 +68,7 @@ <!-- U+0030: "0" DIGIT ZERO --> <Key latin:keyStyle="num0KeyStyle" - latin:code="0x0030" - latin:keyLabel="0 +" + latin:keySpec="0 +|0" latin:moreKeys="!noPanelAutoMoreKey!,+" /> <Key latin:keyStyle="numSpaceKeyStyle" /> diff --git a/java/res/xml/rows_phone_symbols.xml b/java/res/xml/rows_phone_symbols.xml index 8c10a2d71..983bfb5c8 100644 --- a/java/res/xml/rows_phone_symbols.xml +++ b/java/res/xml/rows_phone_symbols.xml @@ -27,16 +27,16 @@ latin:keyboardLayout="@xml/key_styles_number" /> <Row> <Key - latin:keyLabel="(" + latin:keySpec="(" latin:keyStyle="numKeyStyle" /> <Key - latin:keyLabel="/" + latin:keySpec="/" latin:keyStyle="numKeyStyle" /> <Key - latin:keyLabel=")" + latin:keySpec=")" latin:keyStyle="numKeyStyle" /> <Key - latin:keyLabel="-" + latin:keySpec="-" latin:moreKeys="+" latin:keyLabelFlags="hasPopupHint" latin:keyStyle="numFunctionalKeyStyle" @@ -44,17 +44,17 @@ </Row> <Row> <Key - latin:keyLabel="N" + latin:keySpec="N" latin:keyStyle="numKeyBaseStyle" /> <!-- Pause is a comma. Check PhoneNumberUtils.java to see if this has changed. --> <Key latin:keyStyle="numPauseKeyStyle" /> <Key - latin:keyLabel="," + latin:keySpec="," latin:keyStyle="numKeyStyle" /> <Key - latin:keyLabel="." + latin:keySpec="." latin:keyStyle="numFunctionalKeyStyle" latin:keyWidth="fillRight" /> </Row> @@ -65,7 +65,7 @@ <Key latin:keyStyle="numWaitKeyStyle" /> <Key - latin:keyLabel="\#" + latin:keySpec="\#" latin:keyStyle="numKeyStyle" /> <Key latin:keyStyle="deleteKeyStyle" @@ -75,7 +75,7 @@ <Key latin:keyStyle="numPhoneToNumericKeyStyle" /> <Key - latin:keyLabel="+" + latin:keySpec="+" latin:keyStyle="numKeyStyle" /> <Key latin:keyStyle="numSpaceKeyStyle" /> diff --git a/java/src/com/android/inputmethod/keyboard/Key.java b/java/src/com/android/inputmethod/keyboard/Key.java index 1b9007da2..6f0f75314 100644 --- a/java/src/com/android/inputmethod/keyboard/Key.java +++ b/java/src/com/android/inputmethod/keyboard/Key.java @@ -22,13 +22,11 @@ import static com.android.inputmethod.latin.Constants.CODE_SHIFT; import static com.android.inputmethod.latin.Constants.CODE_SWITCH_ALPHA_SYMBOL; import static com.android.inputmethod.latin.Constants.CODE_UNSPECIFIED; -import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.Rect; import android.graphics.Typeface; import android.graphics.drawable.Drawable; import android.text.TextUtils; -import android.util.Xml; import com.android.inputmethod.keyboard.internal.KeyDrawParams; import com.android.inputmethod.keyboard.internal.KeySpecParser; @@ -42,9 +40,6 @@ import com.android.inputmethod.latin.Constants; import com.android.inputmethod.latin.R; import com.android.inputmethod.latin.utils.StringUtils; -import org.xmlpull.v1.XmlPullParser; -import org.xmlpull.v1.XmlPullParserException; - import java.util.Arrays; import java.util.Locale; @@ -188,22 +183,15 @@ public class Key implements Comparable<Key> { private boolean mEnabled = true; /** - * This constructor is being used only for keys in more keys keyboard. - */ - public Key(final KeyboardParams params, final MoreKeySpec moreKeySpec, final int x, final int y, - final int width, final int height, final int labelFlags) { - this(params, moreKeySpec.mLabel, null, moreKeySpec.mIconId, moreKeySpec.mCode, - moreKeySpec.mOutputText, x, y, width, height, labelFlags, BACKGROUND_TYPE_NORMAL); - } - - /** - * This constructor is being used only for key in popup suggestions pane. + * Constructor for a key on <code>MoreKeyKeyboard</code>, on <code>MoreSuggestions</code>, + * and in a <GridRows/>. */ - public Key(final KeyboardParams params, final String label, final String hintLabel, - final int iconId, final int code, final String outputText, final int x, final int y, - final int width, final int height, final int labelFlags, final int backgroundType) { - mHeight = height - params.mVerticalGap; - mWidth = width - params.mHorizontalGap; + public Key(final String label, final int iconId, final int code, final String outputText, + final String hintLabel, final int labelFlags, final int backgroundType, final int x, + final int y, final int width, final int height, final int horizontalGap, + final int verticalGap) { + mHeight = height - verticalGap; + mWidth = width - horizontalGap; mHintLabel = hintLabel; mLabelFlags = labelFlags; mBackgroundType = backgroundType; @@ -218,7 +206,7 @@ public class Key implements Comparable<Key> { mEnabled = (code != CODE_UNSPECIFIED); mIconId = iconId; // Horizontal gap is divided equally to both sides of the key. - mX = x + params.mHorizontalGap / 2; + mX = x + horizontalGap / 2; mY = y; mHitBox.set(x, y, x + width + 1, y + height); mKeyVisualAttributes = null; @@ -227,25 +215,22 @@ public class Key implements Comparable<Key> { } /** - * Create a key with the given top-left coordinate and extract its attributes from the XML - * parser. - * @param res resources associated with the caller's context + * Create a key with the given top-left coordinate and extract its attributes from a key + * specification string, Key attribute array, key style, and etc. + * + * @param keySpec the key specification. + * @param keyAttr the Key XML attributes array. + * @param keyStyle the {@link KeyStyle} of this key. * @param params the keyboard building parameters. * @param row the row that this key belongs to. row's x-coordinate will be the right edge of * this key. - * @param parser the XML parser containing the attributes for this key - * @throws XmlPullParserException */ - public Key(final Resources res, final KeyboardParams params, final KeyboardRow row, - final XmlPullParser parser) throws XmlPullParserException { + public Key(final String keySpec, final TypedArray keyAttr, final KeyStyle style, + final KeyboardParams params, final KeyboardRow row) { final float horizontalGap = isSpacer() ? 0 : params.mHorizontalGap; final int rowHeight = row.getRowHeight(); mHeight = rowHeight - params.mVerticalGap; - final TypedArray keyAttr = res.obtainAttributes(Xml.asAttributeSet(parser), - R.styleable.Keyboard_Key); - - final KeyStyle style = params.mKeyStyles.getKeyStyle(keyAttr, parser); final float keyXPos = row.getKeyX(keyAttr); final float keyWidth = row.getKeyWidth(keyAttr, keyXPos); final int keyYPos = row.getKeyY(); @@ -315,21 +300,13 @@ public class Key implements Comparable<Key> { } mActionFlags = actionFlags; - final String keySpec = style.getString(keyAttr, R.styleable.Keyboard_Key_keyLabel); - - final int iconIdInAttr = KeySpecParser.getIconId(style.getString(keyAttr, - R.styleable.Keyboard_Key_keyIcon)); - mIconId = (iconIdInAttr != ICON_UNDEFINED) ? iconIdInAttr - : KeySpecParser.getIconId(keySpec); + mIconId = KeySpecParser.getIconId(keySpec); final int disabledIconId = KeySpecParser.getIconId(style.getString(keyAttr, R.styleable.Keyboard_Key_keyIconDisabled)); final int previewIconId = KeySpecParser.getIconId(style.getString(keyAttr, R.styleable.Keyboard_Key_keyIconPreview)); - final int codeInAttr = KeySpecParser.parseCode(style.getString(keyAttr, - R.styleable.Keyboard_Key_code), params.mCodesSet, CODE_UNSPECIFIED); - final int code = (codeInAttr != CODE_UNSPECIFIED) ? codeInAttr - : KeySpecParser.getCode(keySpec, params.mCodesSet); + final int code = KeySpecParser.getCode(keySpec, params.mCodesSet); if ((mLabelFlags & LABEL_FLAGS_FROM_CUSTOM_ACTION_LABEL) != 0) { mLabel = params.mId.mCustomActionLabel; } else if (code >= Character.MIN_SUPPLEMENTARY_CODE_POINT) { @@ -376,19 +353,18 @@ public class Key implements Comparable<Key> { } else { mCode = StringUtils.toUpperCaseOfCodeForLocale(code, needsToUpperCase, locale); } + final int altCodeInAttr = KeySpecParser.parseCode(style.getString(keyAttr, + R.styleable.Keyboard_Key_altCode), params.mCodesSet, CODE_UNSPECIFIED); final int altCode = StringUtils.toUpperCaseOfCodeForLocale( - KeySpecParser.parseCode(style.getString(keyAttr, - R.styleable.Keyboard_Key_altCode), params.mCodesSet, CODE_UNSPECIFIED), - needsToUpperCase, locale); + altCodeInAttr, needsToUpperCase, locale); mOptionalAttributes = OptionalAttributes.newInstance(outputText, altCode, disabledIconId, previewIconId, visualInsetsLeft, visualInsetsRight); mKeyVisualAttributes = KeyVisualAttributes.newInstance(keyAttr); - keyAttr.recycle(); mHashCode = computeHashCode(this); } /** - * Copy constructor. + * Copy constructor for DynamicGridKeyboard.GridKey. * * @param key the original key. */ @@ -940,9 +916,9 @@ public class Key implements Comparable<Key> { } public static class Spacer extends Key { - public Spacer(final Resources res, final KeyboardParams params, final KeyboardRow row, - final XmlPullParser parser) throws XmlPullParserException { - super(res, params, row, parser); + public Spacer(final TypedArray keyAttr, final KeyStyle keyStyle, + final KeyboardParams params, final KeyboardRow row) { + super(null /* keySpec */, keyAttr, keyStyle, params, row); } /** @@ -950,8 +926,9 @@ public class Key implements Comparable<Key> { */ protected Spacer(final KeyboardParams params, final int x, final int y, final int width, final int height) { - super(params, null, null, ICON_UNDEFINED, CODE_UNSPECIFIED, - null, x, y, width, height, 0, BACKGROUND_TYPE_EMPTY); + super(null /* label */, ICON_UNDEFINED, CODE_UNSPECIFIED, null /* outputText */, + null /* hintLabel */, 0 /* labelFlags */, BACKGROUND_TYPE_EMPTY, x, y, width, + height, params.mHorizontalGap, params.mVerticalGap); } } } diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java index 53b448515..aebba60fb 100644 --- a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java +++ b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java @@ -80,6 +80,7 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions { private KeyboardState mState; private KeyboardLayoutSet mKeyboardLayoutSet; + private SettingsValues mCurrentSettingsValues; /** mIsAutoCorrectionActive indicates that auto corrected word will be input instead of * what user actually typed. */ @@ -158,6 +159,7 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions { settingsValues.mShowsVoiceInputKey, settingsValues.isLanguageSwitchKeyEnabled()); mKeyboardLayoutSet = builder.build(); + mCurrentSettingsValues = settingsValues; try { mState.onLoadKeyboard(); } catch (KeyboardLayoutSetException e) { @@ -189,8 +191,13 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions { keyboardView.setKeyboard(keyboard); mCurrentInputView.setKeyboardTopPadding(keyboard.mTopPadding); keyboardView.setKeyPreviewPopupEnabled( - Settings.readKeyPreviewPopupEnabled(mPrefs, mResources), - Settings.readKeyPreviewPopupDismissDelay(mPrefs, mResources)); + mCurrentSettingsValues.mKeyPreviewPopupOn, + mCurrentSettingsValues.mKeyPreviewPopupDismissDelay); + keyboardView.setKeyPreviewAnimationParams( + mCurrentSettingsValues.mKeyPreviewShowUpStartScale, + mCurrentSettingsValues.mKeyPreviewShowUpDuration, + mCurrentSettingsValues.mKeyPreviewDismissEndScale, + mCurrentSettingsValues.mKeyPreviewDismissDuration); keyboardView.updateAutoCorrectionState(mIsAutoCorrectionActive); keyboardView.updateShortcutKey(mSubtypeSwitcher.isShortcutImeReady()); final boolean subtypeChanged = (oldKeyboard == null) diff --git a/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java b/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java index f3cfae203..bd955ae6a 100644 --- a/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java +++ b/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java @@ -63,7 +63,6 @@ import com.android.inputmethod.latin.utils.CoordinateUtils; import com.android.inputmethod.latin.utils.SubtypeLocaleUtils; import com.android.inputmethod.latin.utils.TypefaceUtils; import com.android.inputmethod.latin.utils.UsabilityStudyLogUtils; -import com.android.inputmethod.latin.utils.ViewLayoutUtils; import com.android.inputmethod.research.ResearchLogger; import java.util.WeakHashMap; @@ -421,6 +420,12 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack mKeyPreviewDrawParams.setPopupEnabled(previewEnabled, delay); } + public void setKeyPreviewAnimationParams(final float showUpStartScale, final int showUpDuration, + final float dismissEndScale, final int dismissDuration) { + mKeyPreviewDrawParams.setAnimationParams( + showUpStartScale, showUpDuration, dismissEndScale, dismissDuration); + } + private void locatePreviewPlacerView() { if (mDrawingPreviewPlacerView.getParent() != null) { return; diff --git a/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboard.java b/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboard.java index 2bff107eb..a72f79137 100644 --- a/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboard.java +++ b/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboard.java @@ -343,8 +343,7 @@ public final class MoreKeysKeyboard extends Keyboard { final int row = n / params.mNumColumns; final int x = params.getX(n, row); final int y = params.getY(row); - final Key key = new Key(params, moreKeySpec, x, y, - params.mDefaultKeyWidth, params.mDefaultRowHeight, moreKeyFlags); + final Key key = moreKeySpec.buildKey(x, y, moreKeyFlags, params); params.markAsEdgeKey(key, row); params.onAddKey(key); diff --git a/java/src/com/android/inputmethod/keyboard/PointerTracker.java b/java/src/com/android/inputmethod/keyboard/PointerTracker.java index 093155049..19aef140a 100644 --- a/java/src/com/android/inputmethod/keyboard/PointerTracker.java +++ b/java/src/com/android/inputmethod/keyboard/PointerTracker.java @@ -215,8 +215,8 @@ public final class PointerTracker implements PointerTrackerQueue.Element, final Resources res = mainKeyboardViewAttr.getResources(); sNeedsPhantomSuddenMoveEventHack = Boolean.parseBoolean( - ResourceUtils.getDeviceOverrideValue( - res, R.array.phantom_sudden_move_event_device_list)); + ResourceUtils.getDeviceOverrideValue(res, + R.array.phantom_sudden_move_event_device_list, Boolean.FALSE.toString())); BogusMoveEventDetector.init(res); sTimerProxy = timerProxy; diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyPreviewChoreographer.java b/java/src/com/android/inputmethod/keyboard/internal/KeyPreviewChoreographer.java index df869b2bc..ff197ba27 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/KeyPreviewChoreographer.java +++ b/java/src/com/android/inputmethod/keyboard/internal/KeyPreviewChoreographer.java @@ -100,7 +100,7 @@ public final class KeyPreviewChoreographer { if (withAnimation) { if (tag instanceof KeyPreviewAnimations) { final KeyPreviewAnimations animation = (KeyPreviewAnimations)tag; - animation.startZoomOut(); + animation.startDismiss(); } return; } @@ -198,87 +198,87 @@ public final class KeyPreviewChoreographer { } // Show preview with animation. - final Animator zoomIn = createZoomInAniation(key, previewTextView); - final Animator zoomOut = createZoomOutAnimation(key, previewTextView); - final KeyPreviewAnimations animation = new KeyPreviewAnimations(zoomIn, zoomOut); + final Animator showUpAnimation = createShowUpAniation(key, previewTextView); + final Animator dismissAnimation = createDismissAnimation(key, previewTextView); + final KeyPreviewAnimations animation = new KeyPreviewAnimations( + showUpAnimation, dismissAnimation); previewTextView.setTag(animation); - animation.startZoomIn(); + animation.startShowUp(); } - // TODO: Move these parameters to resources or preferences. - private static final float KEY_PREVIEW_START_ZOOM_IN_SCALE = 0.7f; - private static final float KEY_PREVIEW_END_ZOOM_IN_SCALE = 1.0f; - private static final float KEY_PREVIEW_END_ZOOM_OUT_SCALE = 0.7f; + private static final float KEY_PREVIEW_SHOW_UP_END_SCALE = 1.0f; private static final AccelerateInterpolator ACCELERATE_INTERPOLATOR = new AccelerateInterpolator(); private static final DecelerateInterpolator DECELERATE_INTERPOLATOR = new DecelerateInterpolator(); - private Animator createZoomInAniation(final Key key, final TextView previewTextView) { + private Animator createShowUpAniation(final Key key, final TextView previewTextView) { + // TODO: Optimization for no scale animation and no duration. final ObjectAnimator scaleXAnimation = ObjectAnimator.ofFloat( - previewTextView, View.SCALE_X, KEY_PREVIEW_START_ZOOM_IN_SCALE, - KEY_PREVIEW_END_ZOOM_IN_SCALE); + previewTextView, View.SCALE_X, mParams.getShowUpStartScale(), + KEY_PREVIEW_SHOW_UP_END_SCALE); final ObjectAnimator scaleYAnimation = ObjectAnimator.ofFloat( - previewTextView, View.SCALE_Y, KEY_PREVIEW_START_ZOOM_IN_SCALE, - KEY_PREVIEW_END_ZOOM_IN_SCALE); - final AnimatorSet zoomInAnimation = new AnimatorSet(); - zoomInAnimation.play(scaleXAnimation).with(scaleYAnimation); - // TODO: Implement preference option to control key preview animation duration. - zoomInAnimation.setDuration(mParams.mZoomInDuration); - zoomInAnimation.setInterpolator(DECELERATE_INTERPOLATOR); - zoomInAnimation.addListener(new AnimatorListenerAdapter() { + previewTextView, View.SCALE_Y, mParams.getShowUpStartScale(), + KEY_PREVIEW_SHOW_UP_END_SCALE); + final AnimatorSet showUpAnimation = new AnimatorSet(); + showUpAnimation.play(scaleXAnimation).with(scaleYAnimation); + showUpAnimation.setDuration(mParams.getShowUpDuration()); + showUpAnimation.setInterpolator(DECELERATE_INTERPOLATOR); + showUpAnimation.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationStart(final Animator animation) { showKeyPreview(key, previewTextView, false /* withAnimation */); } }); - return zoomInAnimation; + return showUpAnimation; } - private Animator createZoomOutAnimation(final Key key, final TextView previewTextView) { + private Animator createDismissAnimation(final Key key, final TextView previewTextView) { + // TODO: Optimization for no scale animation and no duration. final ObjectAnimator scaleXAnimation = ObjectAnimator.ofFloat( - previewTextView, View.SCALE_X, KEY_PREVIEW_END_ZOOM_OUT_SCALE); + previewTextView, View.SCALE_X, mParams.getDismissEndScale()); final ObjectAnimator scaleYAnimation = ObjectAnimator.ofFloat( - previewTextView, View.SCALE_Y, KEY_PREVIEW_END_ZOOM_OUT_SCALE); - final AnimatorSet zoomOutAnimation = new AnimatorSet(); - zoomOutAnimation.play(scaleXAnimation).with(scaleYAnimation); - // TODO: Implement preference option to control key preview animation duration. - final int zoomOutDuration = Math.min(mParams.mZoomOutDuration, mParams.getLingerTimeout()); - zoomOutAnimation.setDuration(zoomOutDuration); - zoomOutAnimation.setInterpolator(ACCELERATE_INTERPOLATOR); - zoomOutAnimation.addListener(new AnimatorListenerAdapter() { + previewTextView, View.SCALE_Y, mParams.getDismissEndScale()); + final AnimatorSet dismissAnimation = new AnimatorSet(); + dismissAnimation.play(scaleXAnimation).with(scaleYAnimation); + final int dismissDuration = Math.min( + mParams.getDismissDuration(), mParams.getLingerTimeout()); + dismissAnimation.setDuration(dismissDuration); + dismissAnimation.setInterpolator(ACCELERATE_INTERPOLATOR); + dismissAnimation.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(final Animator animation) { dismissKeyPreview(key, false /* withAnimation */); } }); - return zoomOutAnimation; + return dismissAnimation; } private static class KeyPreviewAnimations extends AnimatorListenerAdapter { - private final Animator mZoomIn; - private final Animator mZoomOut; + private final Animator mShowUpAnimation; + private final Animator mDismissAnimation; - public KeyPreviewAnimations(final Animator zoomIn, final Animator zoomOut) { - mZoomIn = zoomIn; - mZoomOut = zoomOut; + public KeyPreviewAnimations(final Animator showUpAnimation, + final Animator dismissAnimation) { + mShowUpAnimation = showUpAnimation; + mDismissAnimation = dismissAnimation; } - public void startZoomIn() { - mZoomIn.start(); + public void startShowUp() { + mShowUpAnimation.start(); } - public void startZoomOut() { - if (mZoomIn.isRunning()) { - mZoomIn.addListener(this); + public void startDismiss() { + if (mShowUpAnimation.isRunning()) { + mShowUpAnimation.addListener(this); return; } - mZoomOut.start(); + mDismissAnimation.start(); } @Override public void onAnimationEnd(final Animator animation) { - mZoomOut.start(); + mDismissAnimation.start(); } } } diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyPreviewDrawParams.java b/java/src/com/android/inputmethod/keyboard/internal/KeyPreviewDrawParams.java index ff493b198..37e5c889d 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/KeyPreviewDrawParams.java +++ b/java/src/com/android/inputmethod/keyboard/internal/KeyPreviewDrawParams.java @@ -26,9 +26,10 @@ public final class KeyPreviewDrawParams { public final int mLayoutId; public final int mPreviewOffset; public final int mPreviewHeight; - // TODO: Move those parameters to preferences. - public final int mZoomInDuration; - public final int mZoomOutDuration; + private int mShowUpDuration; + private int mDismissDuration; + private float mShowUpStartScale; + private float mDismissEndScale; private int mLingerTimeout; private boolean mShowPopup = true; @@ -69,10 +70,6 @@ public final class KeyPreviewDrawParams { if (mLayoutId == 0) { mShowPopup = false; } - mZoomInDuration = mainKeyboardViewAttr.getInt( - R.styleable.MainKeyboardView_keyPreviewZoomInDuration, 0); - mZoomOutDuration = mainKeyboardViewAttr.getInt( - R.styleable.MainKeyboardView_keyPreviewZoomOutDuration, 0); } public void setVisibleOffset(final int previewVisibleOffset) { @@ -117,4 +114,28 @@ public final class KeyPreviewDrawParams { public int getLingerTimeout() { return mLingerTimeout; } + + public void setAnimationParams(final float showUpStartScale, final int showUpDuration, + final float dismissEndScale, final int dismissDuration) { + mShowUpStartScale = showUpStartScale; + mShowUpDuration = showUpDuration; + mDismissEndScale = dismissEndScale; + mDismissDuration = dismissDuration; + } + + public float getShowUpStartScale() { + return mShowUpStartScale; + } + + public int getShowUpDuration() { + return mShowUpDuration; + } + + public float getDismissEndScale() { + return mDismissEndScale; + } + + public int getDismissDuration() { + return mDismissDuration; + } } diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java b/java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java index 2925a4b76..209966606 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java +++ b/java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java @@ -42,6 +42,7 @@ import com.android.inputmethod.latin.utils.StringUtils; * Note that the '\' is also parsed by XML parser and {@link MoreKeySpec#splitKeySpecs(String)} * as well. */ +// TODO: Rename to KeySpec and make this class to the key specification object. public final class KeySpecParser { // Constants for parsing. private static final char BACKSLASH = Constants.CODE_BACKSLASH; @@ -57,8 +58,15 @@ public final class KeySpecParser { } private static boolean hasCode(final String keySpec, final int labelEnd) { - if (labelEnd > 0 && labelEnd + 1 < keySpec.length() - && keySpec.startsWith(KeyboardCodesSet.PREFIX_CODE, labelEnd + 1)) { + if (labelEnd <= 0 || labelEnd + 1 >= keySpec.length()) { + return false; + } + if (keySpec.startsWith(KeyboardCodesSet.PREFIX_CODE, labelEnd + 1)) { + return true; + } + // This is a workaround to have a key that has a supplementary code point. We can't put a + // string in resource as a XML entity of a supplementary code point or a surrogate pair. + if (keySpec.startsWith(PREFIX_HEX, labelEnd + 1)) { return true; } return false; @@ -203,19 +211,20 @@ public final class KeySpecParser { return (StringUtils.codePointCount(label) == 1) ? label.codePointAt(0) : CODE_OUTPUT_TEXT; } - // TODO: Make this method private once Key.code attribute is removed. public static int parseCode(final String text, final KeyboardCodesSet codesSet, - final int defCode) { + final int defaultCode) { if (text == null) { - return defCode; + return defaultCode; } if (text.startsWith(KeyboardCodesSet.PREFIX_CODE)) { return codesSet.getCode(text.substring(KeyboardCodesSet.PREFIX_CODE.length())); } + // This is a workaround to have a key that has a supplementary code point. We can't put a + // string in resource as a XML entity of a supplementary code point or a surrogate pair. if (text.startsWith(PREFIX_HEX)) { return Integer.parseInt(text.substring(PREFIX_HEX.length()), 16); } - return Integer.parseInt(text); + return defaultCode; } public static int getIconId(final String keySpec) { diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyStylesSet.java b/java/src/com/android/inputmethod/keyboard/internal/KeyStylesSet.java index a64f23501..700c9b07c 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/KeyStylesSet.java +++ b/java/src/com/android/inputmethod/keyboard/internal/KeyStylesSet.java @@ -135,14 +135,12 @@ public final class KeyStylesSet { public void readKeyAttributes(final TypedArray keyAttr) { // TODO: Currently not all Key attributes can be declared as style. - readString(keyAttr, R.styleable.Keyboard_Key_code); readString(keyAttr, R.styleable.Keyboard_Key_altCode); - readString(keyAttr, R.styleable.Keyboard_Key_keyLabel); + readString(keyAttr, R.styleable.Keyboard_Key_keySpec); readString(keyAttr, R.styleable.Keyboard_Key_keyHintLabel); readStringArray(keyAttr, R.styleable.Keyboard_Key_moreKeys); readStringArray(keyAttr, R.styleable.Keyboard_Key_additionalMoreKeys); readFlags(keyAttr, R.styleable.Keyboard_Key_keyLabelFlags); - readString(keyAttr, R.styleable.Keyboard_Key_keyIcon); readString(keyAttr, R.styleable.Keyboard_Key_keyIconDisabled); readString(keyAttr, R.styleable.Keyboard_Key_keyIconPreview); readInt(keyAttr, R.styleable.Keyboard_Key_maxMoreKeysColumn); diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java index 47e9142e2..340d184b6 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java +++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java @@ -21,6 +21,7 @@ import android.content.res.Resources; import android.content.res.TypedArray; import android.content.res.XmlResourceParser; import android.os.Build; +import android.text.TextUtils; import android.util.AttributeSet; import android.util.Log; import android.util.TypedValue; @@ -37,6 +38,7 @@ import com.android.inputmethod.latin.utils.RunInLocale; import com.android.inputmethod.latin.utils.StringUtils; import com.android.inputmethod.latin.utils.SubtypeLocaleUtils; import com.android.inputmethod.latin.utils.XmlParseUtils; +import com.android.inputmethod.latin.utils.XmlParseUtils.ParseException; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; @@ -455,11 +457,15 @@ public class KeyboardBuilder<KP extends KeyboardParams> { if (Build.VERSION.SDK_INT < supportedMinSdkVersion) { continue; } + final int labelFlags = row.getDefaultKeyLabelFlags(); + final int backgroundType = row.getDefaultBackgroundType(); final int x = (int)row.getKeyX(null); final int y = row.getKeyY(); - final Key key = new Key(mParams, label, null /* hintLabel */, 0 /* iconId */, - code, outputText, x, y, (int)keyWidth, row.getRowHeight(), - row.getDefaultKeyLabelFlags(), row.getDefaultBackgroundType()); + final int width = (int)keyWidth; + final int height = row.getRowHeight(); + final Key key = new Key(label, KeyboardIconsSet.ICON_UNDEFINED, code, outputText, + null /* hintLabel */, labelFlags, backgroundType, x, y, width, height, + mParams.mHorizontalGap, mParams.mVerticalGap); endKey(key); row.advanceXPos(keyWidth); } @@ -476,7 +482,15 @@ public class KeyboardBuilder<KP extends KeyboardParams> { if (DEBUG) startEndTag("<%s /> skipped", TAG_KEY); return; } - final Key key = new Key(mResources, mParams, row, parser); + final TypedArray keyAttr = mResources.obtainAttributes( + Xml.asAttributeSet(parser), R.styleable.Keyboard_Key); + final KeyStyle keyStyle = mParams.mKeyStyles.getKeyStyle(keyAttr, parser); + final String keySpec = keyStyle.getString(keyAttr, R.styleable.Keyboard_Key_keySpec); + if (TextUtils.isEmpty(keySpec)) { + throw new ParseException("Empty keySpec", parser); + } + final Key key = new Key(keySpec, keyAttr, keyStyle, mParams, row); + keyAttr.recycle(); if (DEBUG) { startEndTag("<%s%s %s moreKeys=%s />", TAG_KEY, (key.isEnabled() ? "" : " disabled"), key, Arrays.toString(key.getMoreKeys())); @@ -492,7 +506,11 @@ public class KeyboardBuilder<KP extends KeyboardParams> { if (DEBUG) startEndTag("<%s /> skipped", TAG_SPACER); return; } - final Key.Spacer spacer = new Key.Spacer(mResources, mParams, row, parser); + final TypedArray keyAttr = mResources.obtainAttributes( + Xml.asAttributeSet(parser), R.styleable.Keyboard_Key); + final KeyStyle keyStyle = mParams.mKeyStyles.getKeyStyle(keyAttr, parser); + final Key spacer = new Key.Spacer(keyAttr, keyStyle, mParams, row); + keyAttr.recycle(); if (DEBUG) startEndTag("<%s />", TAG_SPACER); XmlParseUtils.checkEndTag(TAG_SPACER, parser); endKey(spacer); diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java index 4322345cb..27e3e3006 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java +++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java @@ -27,46 +27,18 @@ import com.android.inputmethod.latin.utils.CollectionUtils; import java.util.HashMap; import java.util.Locale; -/** - * !!!!! DO NOT EDIT THIS FILE !!!!! - * - * This file is generated by tools/make-keyboard-text. The base template file is - * tools/make-keyboard-text/res/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.tmpl - * - * This file must be updated when any text resources in keyboard layout files have been changed. - * These text resources are referred as "!text/<resource_name>" in keyboard XML definitions, - * and should be defined in - * tools/make-keyboard-text/res/values-<locale>/donottranslate-more-keys.xml - * - * To update this file, please run the following commands. - * $ cd $ANDROID_BUILD_TOP - * $ mmm packages/inputmethods/LatinIME/tools/make-keyboard-text - * $ make-keyboard-text -java packages/inputmethods/LatinIME/java/src - * - * The updated source file will be generated to the following path (this file). - * packages/inputmethods/LatinIME/java/src/com/android/inputmethod/keyboard/internal/ - * KeyboardTextsSet.java - */ public final class KeyboardTextsSet { public static final String PREFIX_TEXT = "!text/"; private static final char BACKSLASH = Constants.CODE_BACKSLASH; private static final int MAX_STRING_REFERENCE_INDIRECTION = 10; - // Language to texts map. - private static final HashMap<String, String[]> sLanguageToTextsMap = - CollectionUtils.newHashMap(); - private static final HashMap<String, Integer> sNameToIdsMap = CollectionUtils.newHashMap(); - - private String[] mTexts; + private String[] mTextsTable; // Resource name to text map. private HashMap<String, String> mResourceNameToTextsMap = CollectionUtils.newHashMap(); public void setLocale(final Locale locale) { final String language = locale.getLanguage(); - mTexts = sLanguageToTextsMap.get(language); - if (mTexts == null) { - mTexts = LANGUAGE_DEFAULT; - } + mTextsTable = KeyboardTextsTable.getTextsTable(language); } public void loadStringResources(final Context context) { @@ -86,14 +58,8 @@ public final class KeyboardTextsSet { } public String getText(final String name) { - String text = mResourceNameToTextsMap.get(name); - if (text != null) { - return text; - } - final Integer id = sNameToIdsMap.get(name); - if (id == null) throw new RuntimeException("Unknown label: " + name); - text = (id < mTexts.length) ? mTexts[id] : null; - return (text == null) ? LANGUAGE_DEFAULT[id] : text; + final String text = mResourceNameToTextsMap.get(name); + return (text != null) ? text : KeyboardTextsTable.getText(name, mTextsTable); } private static int searchTextNameEnd(final String text, final int start) { @@ -170,3487 +136,4 @@ public final class KeyboardTextsSet { "label_pause_key", "label_wait_key", }; - - private static final String[] NAMES = { - /* 0 */ "more_keys_for_a", - /* 1 */ "more_keys_for_e", - /* 2 */ "more_keys_for_i", - /* 3 */ "more_keys_for_o", - /* 4 */ "more_keys_for_u", - /* 5 */ "more_keys_for_s", - /* 6 */ "more_keys_for_n", - /* 7 */ "more_keys_for_c", - /* 8 */ "more_keys_for_y", - /* 9 */ "more_keys_for_d", - /* 10 */ "more_keys_for_r", - /* 11 */ "more_keys_for_t", - /* 12 */ "more_keys_for_z", - /* 13 */ "more_keys_for_k", - /* 14 */ "more_keys_for_l", - /* 15 */ "more_keys_for_g", - /* 16 */ "more_keys_for_v", - /* 17 */ "more_keys_for_h", - /* 18 */ "more_keys_for_j", - /* 19 */ "more_keys_for_w", - /* 20 */ "keylabel_for_nordic_row1_11", - /* 21 */ "keylabel_for_nordic_row2_10", - /* 22 */ "keylabel_for_nordic_row2_11", - /* 23 */ "more_keys_for_nordic_row2_10", - /* 24 */ "more_keys_for_nordic_row2_11", - /* 25 */ "keylabel_for_east_slavic_row1_9", - /* 26 */ "keylabel_for_east_slavic_row1_12", - /* 27 */ "keylabel_for_east_slavic_row2_1", - /* 28 */ "keylabel_for_east_slavic_row2_11", - /* 29 */ "keylabel_for_east_slavic_row3_5", - /* 30 */ "more_keys_for_cyrillic_u", - /* 31 */ "more_keys_for_cyrillic_ka", - /* 32 */ "more_keys_for_cyrillic_en", - /* 33 */ "more_keys_for_cyrillic_ghe", - /* 34 */ "more_keys_for_east_slavic_row2_1", - /* 35 */ "more_keys_for_cyrillic_a", - /* 36 */ "more_keys_for_cyrillic_o", - /* 37 */ "more_keys_for_cyrillic_soft_sign", - /* 38 */ "more_keys_for_east_slavic_row2_11", - /* 39 */ "keylabel_for_south_slavic_row1_6", - /* 40 */ "keylabel_for_south_slavic_row2_11", - /* 41 */ "keylabel_for_south_slavic_row3_1", - /* 42 */ "keylabel_for_south_slavic_row3_8", - /* 43 */ "more_keys_for_cyrillic_ie", - /* 44 */ "more_keys_for_cyrillic_i", - /* 45 */ "keylabel_for_swiss_row1_11", - /* 46 */ "keylabel_for_swiss_row2_10", - /* 47 */ "keylabel_for_swiss_row2_11", - /* 48 */ "more_keys_for_swiss_row1_11", - /* 49 */ "more_keys_for_swiss_row2_10", - /* 50 */ "more_keys_for_swiss_row2_11", - /* 51 */ "label_to_alpha_key", - /* 52 */ "single_quotes", - /* 53 */ "double_quotes", - /* 54 */ "single_angle_quotes", - /* 55 */ "double_angle_quotes", - /* 56 */ "more_keys_for_currency_dollar", - /* 57 */ "keylabel_for_currency", - /* 58 */ "more_keys_for_currency", - /* 59 */ "more_keys_for_punctuation", - /* 60 */ "more_keys_for_tablet_punctuation", - /* 61 */ "more_keys_for_star", - /* 62 */ "more_keys_for_bullet", - /* 63 */ "more_keys_for_plus", - /* 64 */ "more_keys_for_left_parenthesis", - /* 65 */ "more_keys_for_right_parenthesis", - /* 66 */ "more_keys_for_less_than", - /* 67 */ "more_keys_for_greater_than", - /* 68 */ "more_keys_for_arabic_diacritics", - /* 69 */ "keylabel_for_symbols_1", - /* 70 */ "keylabel_for_symbols_2", - /* 71 */ "keylabel_for_symbols_3", - /* 72 */ "keylabel_for_symbols_4", - /* 73 */ "keylabel_for_symbols_5", - /* 74 */ "keylabel_for_symbols_6", - /* 75 */ "keylabel_for_symbols_7", - /* 76 */ "keylabel_for_symbols_8", - /* 77 */ "keylabel_for_symbols_9", - /* 78 */ "keylabel_for_symbols_0", - /* 79 */ "label_to_symbol_key", - /* 80 */ "label_to_symbol_with_microphone_key", - /* 81 */ "additional_more_keys_for_symbols_1", - /* 82 */ "additional_more_keys_for_symbols_2", - /* 83 */ "additional_more_keys_for_symbols_3", - /* 84 */ "additional_more_keys_for_symbols_4", - /* 85 */ "additional_more_keys_for_symbols_5", - /* 86 */ "additional_more_keys_for_symbols_6", - /* 87 */ "additional_more_keys_for_symbols_7", - /* 88 */ "additional_more_keys_for_symbols_8", - /* 89 */ "additional_more_keys_for_symbols_9", - /* 90 */ "additional_more_keys_for_symbols_0", - /* 91 */ "more_keys_for_symbols_1", - /* 92 */ "more_keys_for_symbols_2", - /* 93 */ "more_keys_for_symbols_3", - /* 94 */ "more_keys_for_symbols_4", - /* 95 */ "more_keys_for_symbols_5", - /* 96 */ "more_keys_for_symbols_6", - /* 97 */ "more_keys_for_symbols_7", - /* 98 */ "more_keys_for_symbols_8", - /* 99 */ "more_keys_for_symbols_9", - /* 100 */ "more_keys_for_symbols_0", - /* 101 */ "keylabel_for_comma", - /* 102 */ "more_keys_for_comma", - /* 103 */ "keylabel_for_tablet_comma", - /* 104 */ "keyhintlabel_for_tablet_comma", - /* 105 */ "more_keys_for_tablet_comma", - /* 106 */ "keylabel_for_period", - /* 107 */ "keyhintlabel_for_period", - /* 108 */ "more_keys_for_period", - /* 109 */ "keylabel_for_tablet_period", - /* 110 */ "keyhintlabel_for_tablet_period", - /* 111 */ "more_keys_for_tablet_period", - /* 112 */ "keylabel_for_symbols_question", - /* 113 */ "keylabel_for_symbols_semicolon", - /* 114 */ "keylabel_for_symbols_percent", - /* 115 */ "more_keys_for_exclamation", - /* 116 */ "more_keys_for_question", - /* 117 */ "more_keys_for_symbols_semicolon", - /* 118 */ "more_keys_for_symbols_percent", - /* 119 */ "more_keys_for_q", - /* 120 */ "more_keys_for_x", - /* 121 */ "keylabel_for_q", - /* 122 */ "keylabel_for_w", - /* 123 */ "keylabel_for_y", - /* 124 */ "keylabel_for_x", - /* 125 */ "keylabel_for_spanish_row2_10", - /* 126 */ "more_keys_for_am_pm", - /* 127 */ "settings_as_more_key", - /* 128 */ "shortcut_as_more_key", - /* 129 */ "action_next_as_more_key", - /* 130 */ "action_previous_as_more_key", - /* 131 */ "label_to_more_symbol_key", - /* 132 */ "label_to_more_symbol_for_tablet_key", - /* 133 */ "label_tab_key", - /* 134 */ "label_to_phone_numeric_key", - /* 135 */ "label_to_phone_symbols_key", - /* 136 */ "label_time_am", - /* 137 */ "label_time_pm", - /* 138 */ "keylabel_for_popular_domain", - /* 139 */ "more_keys_for_popular_domain", - /* 140 */ "single_laqm_raqm", - /* 141 */ "single_laqm_raqm_rtl", - /* 142 */ "single_raqm_laqm", - /* 143 */ "double_laqm_raqm", - /* 144 */ "double_laqm_raqm_rtl", - /* 145 */ "double_raqm_laqm", - /* 146 */ "single_lqm_rqm", - /* 147 */ "single_9qm_lqm", - /* 148 */ "single_9qm_rqm", - /* 149 */ "double_lqm_rqm", - /* 150 */ "double_9qm_lqm", - /* 151 */ "double_9qm_rqm", - /* 152 */ "more_keys_for_single_quote", - /* 153 */ "more_keys_for_double_quote", - /* 154 */ "more_keys_for_tablet_double_quote", - /* 155 */ "emoji_key_as_more_key", - }; - - private static final String EMPTY = ""; - - /* Default texts */ - private static final String[] LANGUAGE_DEFAULT = { - /* 0~ */ - EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, - EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, - EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, - EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, - /* ~50 */ - // Label for "switch to alphabetic" key. - /* 51 */ "ABC", - /* 52 */ "!text/single_lqm_rqm", - /* 53 */ "!text/double_lqm_rqm", - /* 54 */ "!text/single_laqm_raqm", - /* 55 */ "!text/double_laqm_raqm", - // U+00A2: "¢" CENT SIGN - // U+00A3: "£" POUND SIGN - // U+20AC: "€" EURO SIGN - // U+00A5: "¥" YEN SIGN - // U+20B1: "₱" PESO SIGN - /* 56 */ "\u00A2,\u00A3,\u20AC,\u00A5,\u20B1", - /* 57 */ "$", - /* 58 */ "$,\u00A2,\u20AC,\u00A3,\u00A5,\u20B1", - /* 59 */ "!fixedColumnOrder!8,;,/,(,),#,!,\\,,?,&,\\%,+,\",-,:,',@", - /* 60 */ "!fixedColumnOrder!7,;,/,(,),#,',\\,,&,\\%,+,\",-,:,@", - // U+2020: "†" DAGGER - // U+2021: "‡" DOUBLE DAGGER - // U+2605: "★" BLACK STAR - /* 61 */ "\u2020,\u2021,\u2605", - // U+266A: "♪" EIGHTH NOTE - // U+2665: "♥" BLACK HEART SUIT - // U+2660: "♠" BLACK SPADE SUIT - // U+2666: "♦" BLACK DIAMOND SUIT - // U+2663: "♣" BLACK CLUB SUIT - /* 62 */ "\u266A,\u2665,\u2660,\u2666,\u2663", - // U+00B1: "±" PLUS-MINUS SIGN - /* 63 */ "\u00B1", - // The all letters need to be mirrored are found at - // http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt - /* 64 */ "!fixedColumnOrder!3,<,{,[", - /* 65 */ "!fixedColumnOrder!3,>,},]", - // U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK - // U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK - // U+2264: "≤" LESS-THAN OR EQUAL TO - // U+2265: "≥" GREATER-THAN EQUAL TO - // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK - // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK - /* 66 */ "!fixedColumnOrder!3,\u2039,\u2264,\u00AB", - /* 67 */ "!fixedColumnOrder!3,\u203A,\u2265,\u00BB", - /* 68 */ EMPTY, - /* 69 */ "1", - /* 70 */ "2", - /* 71 */ "3", - /* 72 */ "4", - /* 73 */ "5", - /* 74 */ "6", - /* 75 */ "7", - /* 76 */ "8", - /* 77 */ "9", - /* 78 */ "0", - // Label for "switch to symbols" key. - /* 79 */ "?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. - /* 80 */ "123", - /* 81~ */ - EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, - /* ~90 */ - // 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 - /* 91 */ "\u00B9,\u00BD,\u2153,\u00BC,\u215B", - // U+00B2: "²" SUPERSCRIPT TWO - // U+2154: "⅔" VULGAR FRACTION TWO THIRDS - /* 92 */ "\u00B2,\u2154", - // U+00B3: "³" SUPERSCRIPT THREE - // U+00BE: "¾" VULGAR FRACTION THREE QUARTERS - // U+215C: "⅜" VULGAR FRACTION THREE EIGHTHS - /* 93 */ "\u00B3,\u00BE,\u215C", - // U+2074: "⁴" SUPERSCRIPT FOUR - /* 94 */ "\u2074", - // U+215D: "⅝" VULGAR FRACTION FIVE EIGHTHS - /* 95 */ "\u215D", - /* 96 */ EMPTY, - // U+215E: "⅞" VULGAR FRACTION SEVEN EIGHTHS - /* 97 */ "\u215E", - /* 98 */ EMPTY, - /* 99 */ EMPTY, - // U+207F: "ⁿ" SUPERSCRIPT LATIN SMALL LETTER N - // U+2205: "∅" EMPTY SET - /* 100 */ "\u207F,\u2205", - // Comma key - /* 101 */ ",", - /* 102 */ EMPTY, - /* 103 */ ",", - /* 104 */ EMPTY, - /* 105 */ EMPTY, - // Period key - /* 106 */ ".", - /* 107 */ EMPTY, - /* 108 */ "!text/more_keys_for_punctuation", - /* 109 */ ".", - /* 110 */ EMPTY, - /* 111 */ "!text/more_keys_for_tablet_punctuation", - /* 112 */ "?", - /* 113 */ ";", - /* 114 */ "%", - // U+00A1: "¡" INVERTED EXCLAMATION MARK - /* 115 */ "\u00A1", - // U+00BF: "¿" INVERTED QUESTION MARK - /* 116 */ "\u00BF", - /* 117 */ EMPTY, - // U+2030: "‰" PER MILLE SIGN - /* 118 */ "\u2030", - /* 119 */ EMPTY, - /* 120 */ EMPTY, - /* 121 */ "q", - /* 122 */ "w", - /* 123 */ "y", - /* 124 */ "x", - // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE - /* 125 */ "\u00F1", - /* 126 */ "!fixedColumnOrder!2,!hasLabels!,!text/label_time_am,!text/label_time_pm", - /* 127 */ "!icon/settings_key|!code/key_settings", - /* 128 */ "!icon/shortcut_key|!code/key_shortcut", - /* 129 */ "!hasLabels!,!text/label_next_key|!code/key_action_next", - /* 130 */ "!hasLabels!,!text/label_previous_key|!code/key_action_previous", - // Label for "switch to more symbol" modifier key. Must be short to fit on key! - /* 131 */ "= \\ <", - // Label for "switch to more symbol" modifier key on tablets. Must be short to fit on key! - /* 132 */ "~ [ <", - // Label for "Tab" key. Must be short to fit on key! - /* 133 */ "Tab", - // Label for "switch to phone numeric" key. Must be short to fit on key! - /* 134 */ "123", - // Label for "switch to phone symbols" key. Must be short to fit on key! - // U+FF0A: "*" FULLWIDTH ASTERISK - // U+FF03: "#" FULLWIDTH NUMBER SIGN - /* 135 */ "\uFF0A\uFF03", - // Key label for "ante meridiem" - /* 136 */ "AM", - // Key label for "post meridiem" - /* 137 */ "PM", - /* 138 */ ".com", - // popular web domains for the locale - most popular, displayed on the keyboard - /* 139 */ "!hasLabels!,.net,.org,.gov,.edu", - // U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK - // U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK - // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK - // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK - // The following characters don't need BIDI mirroring. - // U+2018: "‘" LEFT SINGLE QUOTATION MARK - // U+2019: "’" RIGHT SINGLE QUOTATION MARK - // U+201A: "‚" SINGLE LOW-9 QUOTATION MARK - // U+201C: "“" LEFT DOUBLE QUOTATION MARK - // U+201D: "”" RIGHT DOUBLE QUOTATION MARK - // U+201E: "„" DOUBLE LOW-9 QUOTATION MARK - // Abbreviations are: - // laqm: LEFT-POINTING ANGLE QUOTATION MARK - // raqm: RIGHT-POINTING ANGLE QUOTATION MARK - // rtl: Right-To-Left script order - // lqm: LEFT QUOTATION MARK - // rqm: RIGHT QUOTATION MARK - // 9qm: LOW-9 QUOTATION MARK - // The following each quotation mark pair consist of - // <opening quotation mark>, <closing quotation mark> - // and is named after (single|double)_<opening quotation mark>_<closing quotation mark>. - /* 140 */ "\u2039,\u203A", - /* 141 */ "\u2039|\u203A,\u203A|\u2039", - /* 142 */ "\u203A,\u2039", - /* 143 */ "\u00AB,\u00BB", - /* 144 */ "\u00AB|\u00BB,\u00BB|\u00AB", - /* 145 */ "\u00BB,\u00AB", - // The following each quotation mark triplet consists of - // <another quotation mark>, <opening quotation mark>, <closing quotation mark> - // and is named after (single|double)_<opening quotation mark>_<closing quotation mark>. - /* 146 */ "\u201A,\u2018,\u2019", - /* 147 */ "\u2019,\u201A,\u2018", - /* 148 */ "\u2018,\u201A,\u2019", - /* 149 */ "\u201E,\u201C,\u201D", - /* 150 */ "\u201D,\u201E,\u201C", - /* 151 */ "\u201C,\u201E,\u201D", - /* 152 */ "!fixedColumnOrder!5,!text/single_quotes,!text/single_angle_quotes", - /* 153 */ "!fixedColumnOrder!5,!text/double_quotes,!text/double_angle_quotes", - /* 154 */ "!fixedColumnOrder!6,!text/double_quotes,!text/single_quotes,!text/double_angle_quotes,!text/single_angle_quotes", - /* 155 */ "!icon/emoji_key|!code/key_emoji", - }; - - /* Language af: Afrikaans */ - private static final String[] LANGUAGE_af = { - // This is the same as Dutch except more keys of y and demoting vowels with diaeresis. - // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE - // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX - // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS - // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE - // U+00E6: "æ" LATIN SMALL LETTER AE - // 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 - /* 0 */ "\u00E1,\u00E2,\u00E4,\u00E0,\u00E6,\u00E3,\u00E5,\u0101", - // 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 - // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE - // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON - /* 1 */ "\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 - // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX - // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK - // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON - // U+0133: "ij" LATIN SMALL LIGATURE IJ - /* 2 */ "\u00ED,\u00EC,\u00EF,\u00EE,\u012F,\u012B,\u0133", - // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE - // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX - // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS - // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE - // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE - // U+0153: "œ" LATIN SMALL LIGATURE OE - // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE - // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON - /* 3 */ "\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 - /* 4 */ "\u00FA,\u00FB,\u00FC,\u00F9,\u016B", - /* 5 */ null, - // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE - // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE - /* 6 */ "\u00F1,\u0144", - /* 7 */ null, - // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE - // U+0133: "ij" LATIN SMALL LIGATURE IJ - /* 8 */ "\u00FD,\u0133", - }; - - /* Language ar: Arabic */ - private static final String[] LANGUAGE_ar = { - /* 0~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, - /* ~50 */ - // Label for "switch to alphabetic" key. - // U+0623: "ا" ARABIC LETTER ALEF - // U+200C: ZERO WIDTH NON-JOINER - // U+0628: "ب" ARABIC LETTER BEH - // U+062C: "پ" ARABIC LETTER PEH - /* 51 */ "\u0623\u200C\u0628\u200C\u062C", - /* 52 */ null, - /* 53 */ null, - /* 54 */ "!text/single_laqm_raqm_rtl", - /* 55 */ "!text/double_laqm_raqm_rtl", - /* 56~ */ - null, null, null, - /* ~58 */ - /* 59 */ "!fixedColumnOrder!8,\",\',#,-,:,!,\u060C,\u061F,@,&,\\%,+,\u061B,/,(|),)|(", - /* 60 */ null, - // U+2605: "★" BLACK STAR - // U+066D: "٭" ARABIC FIVE POINTED STAR - /* 61 */ "\u2605,\u066D", - // U+266A: "♪" EIGHTH NOTE - /* 62 */ "\u266A", - /* 63 */ null, - // The all letters need to be mirrored are found at - // http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt - // U+FD3E: "﴾" ORNATE LEFT PARENTHESIS - // U+FD3F: "﴿" ORNATE RIGHT PARENTHESIS - /* 64 */ "!fixedColumnOrder!4,\uFD3E|\uFD3F,<|>,{|},[|]", - /* 65 */ "!fixedColumnOrder!4,\uFD3F|\uFD3E,>|<,}|{,]|[", - // U+2264: "≤" LESS-THAN OR EQUAL TO - // U+2265: "≥" GREATER-THAN EQUAL TO - // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK - // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK - // U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK - // U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK - /* 66 */ "!fixedColumnOrder!3,\u2039|\u203A,\u2264|\u2265,\u00AB|\u00BB", - /* 67 */ "!fixedColumnOrder!3,\u203A|\u2039,\u2265|\u2264,\u00BB|\u00AB", - // U+0655: "ٕ" ARABIC HAMZA BELOW - // U+0654: "ٔ" ARABIC HAMZA ABOVE - // U+0652: "ْ" ARABIC SUKUN - // U+064D: "ٍ" ARABIC KASRATAN - // U+064C: "ٌ" ARABIC DAMMATAN - // U+064B: "ً" ARABIC FATHATAN - // U+0651: "ّ" ARABIC SHADDA - // U+0656: "ٖ" ARABIC SUBSCRIPT ALEF - // U+0670: "ٰ" ARABIC LETTER SUPERSCRIPT ALEF - // U+0653: "ٓ" ARABIC MADDAH ABOVE - // U+0650: "ِ" ARABIC KASRA - // U+064F: "ُ" ARABIC DAMMA - // U+064E: "َ" ARABIC FATHA - // U+0640: "ـ" ARABIC TATWEEL - // In order to make Tatweel easily distinguishable from other punctuations, we use consecutive Tatweels only for its displayed label. - // Note: The space character is needed as a preceding letter to draw Arabic diacritics characters correctly. - /* 68 */ "!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+0661: "١" ARABIC-INDIC DIGIT ONE - /* 69 */ "\u0661", - // U+0662: "٢" ARABIC-INDIC DIGIT TWO - /* 70 */ "\u0662", - // U+0663: "٣" ARABIC-INDIC DIGIT THREE - /* 71 */ "\u0663", - // U+0664: "٤" ARABIC-INDIC DIGIT FOUR - /* 72 */ "\u0664", - // U+0665: "٥" ARABIC-INDIC DIGIT FIVE - /* 73 */ "\u0665", - // U+0666: "٦" ARABIC-INDIC DIGIT SIX - /* 74 */ "\u0666", - // U+0667: "٧" ARABIC-INDIC DIGIT SEVEN - /* 75 */ "\u0667", - // U+0668: "٨" ARABIC-INDIC DIGIT EIGHT - /* 76 */ "\u0668", - // U+0669: "٩" ARABIC-INDIC DIGIT NINE - /* 77 */ "\u0669", - // U+0660: "٠" ARABIC-INDIC DIGIT ZERO - /* 78 */ "\u0660", - // Label for "switch to symbols" key. - // U+061F: "؟" ARABIC QUESTION MARK - /* 79 */ "\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. - /* 80 */ "\u0663\u0662\u0661", - /* 81 */ "1", - /* 82 */ "2", - /* 83 */ "3", - /* 84 */ "4", - /* 85 */ "5", - /* 86 */ "6", - /* 87 */ "7", - /* 88 */ "8", - /* 89 */ "9", - // U+066B: "٫" ARABIC DECIMAL SEPARATOR - // U+066C: "٬" ARABIC THOUSANDS SEPARATOR - /* 90 */ "0,\u066B,\u066C", - /* 91~ */ - null, null, null, null, null, null, null, null, null, null, - /* ~100 */ - // U+060C: "،" ARABIC COMMA - /* 101 */ "\u060C", - /* 102 */ "\\,", - // U+061F: "؟" ARABIC QUESTION MARK - // U+060C: "،" ARABIC COMMA - // U+061B: "؛" ARABIC SEMICOLON - /* 103 */ "\u060C", - /* 104 */ "\u061F", - /* 105 */ "!fixedColumnOrder!4,:,!,\u061F,\u061B,-,/,\",\'", - /* 106 */ null, - // U+0651: "ّ" ARABIC SHADDA - /* 107 */ "\u0651", - /* 108 */ "!text/more_keys_for_arabic_diacritics", - /* 109 */ null, - /* 110 */ "\u0651", - /* 111 */ "!text/more_keys_for_arabic_diacritics", - /* 112 */ "\u061F", - /* 113 */ "\u061B", - // U+066A: "٪" ARABIC PERCENT SIGN - /* 114 */ "\u066A", - /* 115 */ null, - // U+00BF: "¿" INVERTED QUESTION MARK - /* 116 */ "?,\u00BF", - /* 117 */ ";", - // U+2030: "‰" PER MILLE SIGN - /* 118 */ "\\%,\u2030", - }; - - /* Language az_AZ: Azerbaijani (Azerbaijan) */ - private static final String[] LANGUAGE_az_AZ = { - // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX - /* 0 */ "\u00E2", - // U+0259: "ə" LATIN SMALL LETTER SCHWA - /* 1 */ "\u0259", - // U+0131: "ı" LATIN SMALL LETTER DOTLESS I - // 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 - /* 2 */ "\u0131,\u00EE,\u00EF,\u00EC,\u00ED,\u012F,\u012B", - // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS - // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX - // U+0153: "œ" LATIN SMALL LIGATURE OE - // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE - // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE - // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE - // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE - // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON - /* 3 */ "\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 - /* 4 */ "\u00FC,\u00FB,\u00F9,\u00FA,\u016B", - // 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 - /* 5 */ "\u015F,\u00DF,\u015B,\u0161", - /* 6 */ null, - // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA - // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE - // U+010D: "č" LATIN SMALL LETTER C WITH CARON - /* 7 */ "\u00E7,\u0107,\u010D", - /* 8~ */ - null, null, null, null, null, null, null, - /* ~14 */ - // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE - /* 15 */ "\u011F", - }; - - /* Language be_BY: Belarusian (Belarus) */ - private static final String[] LANGUAGE_be_BY = { - /* 0~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, - /* ~24 */ - // U+045E: "ў" CYRILLIC SMALL LETTER SHORT U - /* 25 */ "\u045E", - // U+0451: "ё" CYRILLIC SMALL LETTER IO - /* 26 */ "\u0451", - // U+044B: "ы" CYRILLIC SMALL LETTER YERU - /* 27 */ "\u044B", - // U+044D: "э" CYRILLIC SMALL LETTER E - /* 28 */ "\u044D", - // U+0456: "і" CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I - /* 29 */ "\u0456", - /* 30~ */ - null, null, null, null, null, null, null, - /* ~36 */ - // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN - /* 37 */ "\u044A", - /* 38~ */ - null, null, null, null, null, - /* ~42 */ - // U+0451: "ё" CYRILLIC SMALL LETTER IO - /* 43 */ "\u0451", - /* 44~ */ - null, null, null, null, null, null, null, - /* ~50 */ - // Label for "switch to alphabetic" key. - // U+0410: "А" CYRILLIC CAPITAL LETTER A - // U+0411: "Б" CYRILLIC CAPITAL LETTER BE - // U+0412: "В" CYRILLIC CAPITAL LETTER VE - /* 51 */ "\u0410\u0411\u0412", - /* 52 */ "!text/single_9qm_lqm", - /* 53 */ "!text/double_9qm_lqm", - }; - - /* Language bg: Bulgarian */ - private static final String[] LANGUAGE_bg = { - /* 0~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, - /* ~50 */ - // Label for "switch to alphabetic" key. - // U+0410: "А" CYRILLIC CAPITAL LETTER A - // U+0411: "Б" CYRILLIC CAPITAL LETTER BE - // U+0412: "В" CYRILLIC CAPITAL LETTER VE - /* 51 */ "\u0410\u0411\u0412", - /* 52 */ null, - // single_quotes of Bulgarian is default single_quotes_right_left. - /* 53 */ "!text/double_9qm_lqm", - }; - - /* Language ca: Catalan */ - private static final String[] LANGUAGE_ca = { - // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE - // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE - // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS - // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX - // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE - // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE - // U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK - // U+00E6: "æ" LATIN SMALL LETTER AE - // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON - // U+00AA: "ª" FEMININE ORDINAL INDICATOR - /* 0 */ "\u00E0,\u00E1,\u00E4,\u00E2,\u00E3,\u00E5,\u0105,\u00E6,\u0101,\u00AA", - // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE - // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE - // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS - // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX - // 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 - /* 1 */ "\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 - /* 2 */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B", - // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE - // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE - // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS - // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX - // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE - // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE - // U+0153: "œ" LATIN SMALL LIGATURE OE - // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON - // U+00BA: "º" MASCULINE ORDINAL INDICATOR - /* 3 */ "\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 - /* 4 */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B", - /* 5 */ null, - // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE - // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE - /* 6 */ "\u00F1,\u0144", - // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA - // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE - // U+010D: "č" LATIN SMALL LETTER C WITH CARON - /* 7 */ "\u00E7,\u0107,\u010D", - /* 8~ */ - null, null, null, null, null, null, - /* ~13 */ - // U+00B7: "·" MIDDLE DOT - // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE - /* 14 */ "l\u00B7l,\u0142", - /* 15~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, - /* ~58 */ - // U+00B7: "·" MIDDLE DOT - /* 59 */ "!fixedColumnOrder!9,;,/,(,),#,\u00B7,!,\\,,?,&,\\%,+,\",-,:,',@", - /* 60 */ "!fixedColumnOrder!8,;,/,(,),#,\u00B7,',\\,,&,\\%,+,\",-,:,@", - /* 61~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, - /* ~124 */ - // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA - /* 125 */ "\u00E7", - }; - - /* Language cs: Czech */ - private static final String[] LANGUAGE_cs = { - // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE - // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE - // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX - // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS - // U+00E6: "æ" LATIN SMALL LETTER AE - // 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 - /* 0 */ "\u00E1,\u00E0,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101", - // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE - // U+011B: "ě" LATIN SMALL LETTER E WITH CARON - // 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 - // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE - // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON - /* 1 */ "\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 - /* 2 */ "\u00ED,\u00EE,\u00EF,\u00EC,\u012F,\u012B", - // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE - // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS - // 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+00F8: "ø" LATIN SMALL LETTER O WITH STROKE - // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON - /* 3 */ "\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 - /* 4 */ "\u00FA,\u016F,\u00FB,\u00FC,\u00F9,\u016B", - // U+0161: "š" LATIN SMALL LETTER S WITH CARON - // U+00DF: "ß" LATIN SMALL LETTER SHARP S - // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE - /* 5 */ "\u0161,\u00DF,\u015B", - // U+0148: "ň" LATIN SMALL LETTER N WITH CARON - // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE - // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE - /* 6 */ "\u0148,\u00F1,\u0144", - // U+010D: "č" LATIN SMALL LETTER C WITH CARON - // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA - // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE - /* 7 */ "\u010D,\u00E7,\u0107", - // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE - // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS - /* 8 */ "\u00FD,\u00FF", - // U+010F: "ď" LATIN SMALL LETTER D WITH CARON - /* 9 */ "\u010F", - // U+0159: "ř" LATIN SMALL LETTER R WITH CARON - /* 10 */ "\u0159", - // U+0165: "ť" LATIN SMALL LETTER T WITH CARON - /* 11 */ "\u0165", - // 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 - /* 12 */ "\u017E,\u017A,\u017C", - /* 13~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, - /* ~51 */ - /* 52 */ "!text/single_9qm_lqm", - /* 53 */ "!text/double_9qm_lqm", - /* 54 */ "!text/single_raqm_laqm", - /* 55 */ "!text/double_raqm_laqm", - }; - - /* Language da: Danish */ - private static final String[] LANGUAGE_da = { - // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE - // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS - // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE - // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX - // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE - // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON - /* 0 */ "\u00E1,\u00E4,\u00E0,\u00E2,\u00E3,\u0101", - // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE - // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS - /* 1 */ "\u00E9,\u00EB", - // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE - // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS - /* 2 */ "\u00ED,\u00EF", - // 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 - /* 3 */ "\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 - /* 4 */ "\u00FA,\u00FC,\u00FB,\u00F9,\u016B", - // U+00DF: "ß" LATIN SMALL LETTER SHARP S - // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE - // U+0161: "š" LATIN SMALL LETTER S WITH CARON - /* 5 */ "\u00DF,\u015B,\u0161", - // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE - // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE - /* 6 */ "\u00F1,\u0144", - /* 7 */ null, - // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE - // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS - /* 8 */ "\u00FD,\u00FF", - // U+00F0: "ð" LATIN SMALL LETTER ETH - /* 9 */ "\u00F0", - /* 10~ */ - null, null, null, null, - /* ~13 */ - // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE - /* 14 */ "\u0142", - /* 15~ */ - null, null, null, null, null, - /* ~19 */ - // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE - /* 20 */ "\u00E5", - // U+00E6: "æ" LATIN SMALL LETTER AE - /* 21 */ "\u00E6", - // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE - /* 22 */ "\u00F8", - // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS - /* 23 */ "\u00E4", - // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS - /* 24 */ "\u00F6", - /* 25~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, - /* ~51 */ - /* 52 */ "!text/single_9qm_lqm", - /* 53 */ "!text/double_9qm_lqm", - /* 54 */ "!text/single_raqm_laqm", - /* 55 */ "!text/double_raqm_laqm", - }; - - /* Language de: German */ - private static final String[] LANGUAGE_de = { - // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS - // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX - // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE - // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE - // U+00E6: "æ" LATIN SMALL LETTER AE - // 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 - /* 0 */ "\u00E4,\u00E2,\u00E0,\u00E1,\u00E6,\u00E3,\u00E5,\u0101", - // 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 - /* 1 */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0117", - /* 2 */ null, - // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS - // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX - // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE - // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE - // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE - // U+0153: "œ" LATIN SMALL LIGATURE OE - // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE - // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON - /* 3 */ "\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 - /* 4 */ "\u00FC,\u00FB,\u00F9,\u00FA,\u016B", - // U+00DF: "ß" LATIN SMALL LETTER SHARP S - // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE - // U+0161: "š" LATIN SMALL LETTER S WITH CARON - /* 5 */ "\u00DF,\u015B,\u0161", - // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE - // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE - /* 6 */ "\u00F1,\u0144", - /* 7~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, - /* ~44 */ - // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS - /* 45 */ "\u00FC", - // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS - /* 46 */ "\u00F6", - // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS - /* 47 */ "\u00E4", - // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE - /* 48 */ "\u00E8", - // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE - /* 49 */ "\u00E9", - // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE - /* 50 */ "\u00E0", - /* 51 */ null, - /* 52 */ "!text/single_9qm_lqm", - /* 53 */ "!text/double_9qm_lqm", - /* 54 */ "!text/single_raqm_laqm", - /* 55 */ "!text/double_raqm_laqm", - }; - - /* Language el: Greek */ - private static final String[] LANGUAGE_el = { - /* 0~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, - /* ~50 */ - // Label for "switch to alphabetic" key. - // U+0391: "Α" GREEK CAPITAL LETTER ALPHA - // U+0392: "Β" GREEK CAPITAL LETTER BETA - // U+0393: "Γ" GREEK CAPITAL LETTER GAMMA - /* 51 */ "\u0391\u0392\u0393", - }; - - /* Language en: English */ - private static final String[] LANGUAGE_en = { - // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE - // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE - // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX - // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS - // U+00E6: "æ" LATIN SMALL LETTER AE - // 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 - /* 0 */ "\u00E0,\u00E1,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101", - // 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 - /* 1 */ "\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 - /* 2 */ "\u00EE,\u00EF,\u00ED,\u012B,\u00EC", - // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX - // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS - // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE - // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE - // U+0153: "œ" LATIN SMALL LIGATURE OE - // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE - // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON - // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE - /* 3 */ "\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 - /* 4 */ "\u00FB,\u00FC,\u00F9,\u00FA,\u016B", - // U+00DF: "ß" LATIN SMALL LETTER SHARP S - /* 5 */ "\u00DF", - // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE - /* 6 */ "\u00F1", - // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA - /* 7 */ "\u00E7", - }; - - /* Language eo: Esperanto */ - private static final String[] LANGUAGE_eo = { - // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE - // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE - // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX - // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS - // U+00E6: "æ" LATIN SMALL LETTER AE - // 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 - // U+0103: "ă" LATIN SMALL LETTER A WITH BREVE - // U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK - // U+00AA: "ª" FEMININE ORDINAL INDICATOR - /* 0 */ "\u00E1,\u00E0,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101,\u0103,\u0105,\u00AA", - // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE - // U+011B: "ě" LATIN SMALL LETTER E WITH CARON - // 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 - // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE - // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON - /* 1 */ "\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+0129: "ĩ" LATIN SMALL LETTER I WITH TILDE - // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE - // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK - // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON - // U+0131: "ı" LATIN SMALL LETTER DOTLESS I - // U+0133: "ij" LATIN SMALL LIGATURE IJ - /* 2 */ "\u00ED,\u00EE,\u00EF,\u0129,\u00EC,\u012F,\u012B,\u0131,\u0133", - // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE - // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS - // 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+00F8: "ø" LATIN SMALL LETTER O WITH STROKE - // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON - // U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE - // U+00BA: "º" MASCULINE ORDINAL INDICATOR - /* 3 */ "\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 - // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS - // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE - // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON - // U+0169: "ũ" LATIN SMALL LETTER U WITH TILDE - // U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE - // U+0173: "ų" LATIN SMALL LETTER U WITH OGONEK - // U+00B5: "µ" MICRO SIGN - /* 4 */ "\u00FA,\u016F,\u00FB,\u00FC,\u00F9,\u016B,\u0169,\u0171,\u0173,\u00B5", - // 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 - /* 5 */ "\u00DF,\u0161,\u015B,\u0219,\u015F", - // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE - // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE - // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA - // U+0148: "ň" LATIN SMALL LETTER N WITH CARON - // U+0149: "ʼn" LATIN SMALL LETTER N PRECEDED BY APOSTROPHE - // U+014B: "ŋ" LATIN SMALL LETTER ENG - /* 6 */ "\u00F1,\u0144,\u0146,\u0148,\u0149,\u014B", - // 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 - /* 7 */ "\u0107,\u010D,\u00E7,\u010B", - // 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 - /* 8 */ "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 - /* 9 */ "\u00F0,\u010F,\u0111", - // U+0159: "ř" LATIN SMALL LETTER R WITH CARON - // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE - // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA - /* 10 */ "\u0159,\u0155,\u0157", - // 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 - /* 11 */ "\u0165,\u021B,\u0163,\u0167", - // 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 - /* 12 */ "\u017A,\u017C,\u017E", - // U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA - // U+0138: "ĸ" LATIN SMALL LETTER KRA - /* 13 */ "\u0137,\u0138", - // 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 - /* 14 */ "\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 - /* 15 */ "\u011F,\u0121,\u0123", - // U+0175: "ŵ" LATIN SMALL LETTER W WITH CIRCUMFLEX - /* 16 */ "w,\u0175", - // U+0125: "ĥ" LATIN SMALL LETTER H WITH CIRCUMFLEX - // U+0127: "ħ" LATIN SMALL LETTER H WITH STROKE - /* 17 */ "\u0125,\u0127", - /* 18 */ null, - // U+0175: "ŵ" LATIN SMALL LETTER W WITH CIRCUMFLEX - /* 19 */ "w,\u0175", - /* 20~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, - /* ~118 */ - /* 119 */ "q", - /* 120 */ "x", - // U+015D: "ŝ" LATIN SMALL LETTER S WITH CIRCUMFLEX - /* 121 */ "\u015D", - // U+011D: "ĝ" LATIN SMALL LETTER G WITH CIRCUMFLEX - /* 122 */ "\u011D", - // U+016D: "ŭ" LATIN SMALL LETTER U WITH BREVE - /* 123 */ "\u016D", - // U+0109: "ĉ" LATIN SMALL LETTER C WITH CIRCUMFLEX - /* 124 */ "\u0109", - // U+0135: "ĵ" LATIN SMALL LETTER J WITH CIRCUMFLEX - /* 125 */ "\u0135", - }; - - /* Language es: Spanish */ - private static final String[] LANGUAGE_es = { - // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE - // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE - // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS - // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX - // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE - // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE - // U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK - // U+00E6: "æ" LATIN SMALL LETTER AE - // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON - // U+00AA: "ª" FEMININE ORDINAL INDICATOR - /* 0 */ "\u00E1,\u00E0,\u00E4,\u00E2,\u00E3,\u00E5,\u0105,\u00E6,\u0101,\u00AA", - // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE - // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE - // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS - // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX - // 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 - /* 1 */ "\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 - /* 2 */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B", - // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE - // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE - // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS - // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX - // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE - // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE - // U+0153: "œ" LATIN SMALL LIGATURE OE - // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON - // U+00BA: "º" MASCULINE ORDINAL INDICATOR - /* 3 */ "\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 - /* 4 */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B", - /* 5 */ null, - // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE - // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE - /* 6 */ "\u00F1,\u0144", - // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA - // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE - // U+010D: "č" LATIN SMALL LETTER C WITH CARON - /* 7 */ "\u00E7,\u0107,\u010D", - /* 8~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, - /* ~58 */ - // U+00A1: "¡" INVERTED EXCLAMATION MARK - // U+00BF: "¿" INVERTED QUESTION MARK - /* 59 */ "!fixedColumnOrder!9,\u00A1,;,/,(,),#,!,\\,,?,\u00BF,&,\\%,+,\",-,:,',@", - }; - - /* Language et_EE: Estonian (Estonia) */ - private static final String[] LANGUAGE_et_EE = { - // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS - // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON - // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE - // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE - // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX - // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE - // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE - // U+00E6: "æ" LATIN SMALL LETTER AE - // U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK - /* 0 */ "\u00E4,\u0101,\u00E0,\u00E1,\u00E2,\u00E3,\u00E5,\u00E6,\u0105", - // 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 - // 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+0119: "ę" LATIN SMALL LETTER E WITH OGONEK - // U+011B: "ě" LATIN SMALL LETTER E WITH CARON - /* 1 */ "\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 - // 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+0131: "ı" LATIN SMALL LETTER DOTLESS I - /* 2 */ "\u012B,\u00EC,\u012F,\u00ED,\u00EE,\u00EF,\u0131", - // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS - // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE - // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE - // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE - // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX - // U+0153: "œ" LATIN SMALL LIGATURE OE - // U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE - // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE - /* 3 */ "\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 - // 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+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE - // U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE - /* 4 */ "\u00FC,\u016B,\u0173,\u00F9,\u00FA,\u00FB,\u016F,\u0171", - // 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 - /* 5 */ "\u0161,\u00DF,\u015B,\u015F", - // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA - // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE - // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE - // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE - /* 6 */ "\u0146,\u00F1,\u0144,\u0144", - // U+010D: "č" LATIN SMALL LETTER C WITH CARON - // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA - // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE - /* 7 */ "\u010D,\u00E7,\u0107", - // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE - // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS - /* 8 */ "\u00FD,\u00FF", - // U+010F: "ď" LATIN SMALL LETTER D WITH CARON - /* 9 */ "\u010F", - // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA - // U+0159: "ř" LATIN SMALL LETTER R WITH CARON - // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE - /* 10 */ "\u0157,\u0159,\u0155", - // U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA - // U+0165: "ť" LATIN SMALL LETTER T WITH CARON - /* 11 */ "\u0163,\u0165", - // 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 - /* 12 */ "\u017E,\u017C,\u017A", - // U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA - /* 13 */ "\u0137", - // 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 - /* 14 */ "\u013C,\u0142,\u013A,\u013E", - // U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA - // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE - /* 15 */ "\u0123,\u011F", - /* 16~ */ - null, null, null, null, - /* ~19 */ - // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS - /* 20 */ "\u00FC", - // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS - /* 21 */ "\u00F6", - // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS - /* 22 */ "\u00E4", - // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE - /* 23 */ "\u00F5", - /* 24~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, - /* ~51 */ - /* 52 */ "!text/single_9qm_lqm", - /* 53 */ "!text/double_9qm_lqm", - }; - - /* Language fa: Persian */ - private static final String[] LANGUAGE_fa = { - /* 0~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, - /* ~50 */ - // Label for "switch to alphabetic" key. - // U+0627: "ا" ARABIC LETTER ALEF - // U+200C: ZERO WIDTH NON-JOINER - // U+0628: "ب" ARABIC LETTER BEH - // U+067E: "پ" ARABIC LETTER PEH - /* 51 */ "\u0627\u200C\u0628\u200C\u067E", - /* 52 */ null, - /* 53 */ null, - /* 54 */ "!text/single_laqm_raqm_rtl", - /* 55 */ "!text/double_laqm_raqm_rtl", - /* 56 */ null, - // U+FDFC: "﷼" RIAL SIGN - /* 57 */ "\uFDFC", - /* 58 */ null, - // U+061F: "؟" ARABIC QUESTION MARK - // U+060C: "،" ARABIC COMMA - // U+061B: "؛" ARABIC SEMICOLON - /* 59 */ "!fixedColumnOrder!8,\",\',#,-,:,!,\u060C,\u061F,@,&,\\%,+,\u061B,/,(|),)|(", - /* 60 */ null, - // U+2605: "★" BLACK STAR - // U+066D: "٭" ARABIC FIVE POINTED STAR - /* 61 */ "\u2605,\u066D", - // U+266A: "♪" EIGHTH NOTE - /* 62 */ "\u266A", - /* 63 */ null, - // The all letters need to be mirrored are found at - // http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt - // U+FD3E: "﴾" ORNATE LEFT PARENTHESIS - // U+FD3F: "﴿" ORNATE RIGHT PARENTHESIS - /* 64 */ "!fixedColumnOrder!4,\uFD3E|\uFD3F,<|>,{|},[|]", - /* 65 */ "!fixedColumnOrder!4,\uFD3F|\uFD3E,>|<,}|{,]|[", - // U+2264: "≤" LESS-THAN OR EQUAL TO - // U+2265: "≥" GREATER-THAN EQUAL TO - // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK - // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK - // U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK - // U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK - /* 66 */ "!fixedColumnOrder!3,\u2039|\u203A,\u2264|\u2265,<|>", - /* 67 */ "!fixedColumnOrder!3,\u203A|\u2039,\u2265|\u2264,>|<", - // U+0655: "ٕ" ARABIC HAMZA BELOW - // U+0652: "ْ" ARABIC SUKUN - // U+0651: "ّ" ARABIC SHADDA - // U+064C: "ٌ" ARABIC DAMMATAN - // U+064D: "ٍ" ARABIC KASRATAN - // U+064B: "ً" ARABIC FATHATAN - // U+0654: "ٔ" ARABIC HAMZA ABOVE - // U+0656: "ٖ" ARABIC SUBSCRIPT ALEF - // U+0670: "ٰ" ARABIC LETTER SUPERSCRIPT ALEF - // U+0653: "ٓ" ARABIC MADDAH ABOVE - // U+064F: "ُ" ARABIC DAMMA - // U+0650: "ِ" ARABIC KASRA - // U+064E: "َ" ARABIC FATHA - // U+0640: "ـ" ARABIC TATWEEL - // In order to make Tatweel easily distinguishable from other punctuations, we use consecutive Tatweels only for its displayed label. - // Note: The space character is needed as a preceding letter to draw Arabic diacritics characters correctly. - /* 68 */ "!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+06F1: "۱" EXTENDED ARABIC-INDIC DIGIT ONE - /* 69 */ "\u06F1", - // U+06F2: "۲" EXTENDED ARABIC-INDIC DIGIT TWO - /* 70 */ "\u06F2", - // U+06F3: "۳" EXTENDED ARABIC-INDIC DIGIT THREE - /* 71 */ "\u06F3", - // U+06F4: "۴" EXTENDED ARABIC-INDIC DIGIT FOUR - /* 72 */ "\u06F4", - // U+06F5: "۵" EXTENDED ARABIC-INDIC DIGIT FIVE - /* 73 */ "\u06F5", - // U+06F6: "۶" EXTENDED ARABIC-INDIC DIGIT SIX - /* 74 */ "\u06F6", - // U+06F7: "۷" EXTENDED ARABIC-INDIC DIGIT SEVEN - /* 75 */ "\u06F7", - // U+06F8: "۸" EXTENDED ARABIC-INDIC DIGIT EIGHT - /* 76 */ "\u06F8", - // U+06F9: "۹" EXTENDED ARABIC-INDIC DIGIT NINE - /* 77 */ "\u06F9", - // U+06F0: "۰" EXTENDED ARABIC-INDIC DIGIT ZERO - /* 78 */ "\u06F0", - // Label for "switch to symbols" key. - // U+061F: "؟" ARABIC QUESTION MARK - /* 79 */ "\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. - /* 80 */ "\u06F3\u06F2\u06F1", - /* 81 */ "1", - /* 82 */ "2", - /* 83 */ "3", - /* 84 */ "4", - /* 85 */ "5", - /* 86 */ "6", - /* 87 */ "7", - /* 88 */ "8", - /* 89 */ "9", - // U+066B: "٫" ARABIC DECIMAL SEPARATOR - // U+066C: "٬" ARABIC THOUSANDS SEPARATOR - /* 90 */ "0,\u066B,\u066C", - /* 91~ */ - null, null, null, null, null, null, null, null, null, null, - /* ~100 */ - // U+060C: "،" ARABIC COMMA - /* 101 */ "\u060C", - /* 102 */ "\\,", - // U+060C: "،" ARABIC COMMA - // U+061B: "؛" ARABIC SEMICOLON - // U+061F: "؟" ARABIC QUESTION MARK - // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK - // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK - /* 103 */ "\u060C", - /* 104 */ "\u061F", - /* 105 */ "!fixedColumnOrder!4,:,!,\u061F,\u061B,-,/,\u00AB|\u00BB,\u00BB|\u00AB", - /* 106 */ null, - // U+064B: "ً" ARABIC FATHATAN - /* 107 */ "\u064B", - /* 108 */ "!text/more_keys_for_arabic_diacritics", - /* 109 */ null, - /* 110 */ "\u064B", - /* 111 */ "!text/more_keys_for_arabic_diacritics", - /* 112 */ "\u061F", - /* 113 */ "\u061B", - // U+066A: "٪" ARABIC PERCENT SIGN - /* 114 */ "\u066A", - /* 115 */ null, - // U+00BF: "¿" INVERTED QUESTION MARK - /* 116 */ "?,\u00BF", - /* 117 */ ";", - // U+2030: "‰" PER MILLE SIGN - /* 118 */ "\\%,\u2030", - }; - - /* Language fi: Finnish */ - private static final String[] LANGUAGE_fi = { - // U+00E6: "æ" LATIN SMALL LETTER AE - // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE - // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE - // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX - // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE - // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON - /* 0 */ "\u00E6,\u00E0,\u00E1,\u00E2,\u00E3,\u0101", - /* 1 */ null, - /* 2 */ null, - // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE - // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX - // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE - // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE - // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE - // U+0153: "œ" LATIN SMALL LIGATURE OE - // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON - /* 3 */ "\u00F8,\u00F4,\u00F2,\u00F3,\u00F5,\u0153,\u014D", - // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS - /* 4 */ "\u00FC", - // U+0161: "š" LATIN SMALL LETTER S WITH CARON - // U+00DF: "ß" LATIN SMALL LETTER SHARP S - // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE - /* 5 */ "\u0161,\u00DF,\u015B", - /* 6~ */ - null, null, null, null, null, null, - /* ~11 */ - // 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 - /* 12 */ "\u017E,\u017A,\u017C", - /* 13~ */ - null, null, null, null, null, null, null, - /* ~19 */ - // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE - /* 20 */ "\u00E5", - // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS - /* 21 */ "\u00F6", - // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS - /* 22 */ "\u00E4", - // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE - /* 23 */ "\u00F8", - // U+00E6: "æ" LATIN SMALL LETTER AE - /* 24 */ "\u00E6", - }; - - /* Language fr: French */ - private static final String[] LANGUAGE_fr = { - // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE - // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX - // U+00E6: "æ" LATIN SMALL LETTER AE - // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE - // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS - // 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 - // U+00AA: "ª" FEMININE ORDINAL INDICATOR - /* 0 */ "\u00E0,\u00E2,%,\u00E6,\u00E1,\u00E4,\u00E3,\u00E5,\u0101,\u00AA", - // 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 - // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE - // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON - /* 1 */ "\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 - /* 2 */ "\u00EE,%,\u00EF,\u00EC,\u00ED,\u012F,\u012B", - // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX - // U+0153: "œ" LATIN SMALL LIGATURE OE - // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS - // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE - // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE - // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE - // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE - // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON - // U+00BA: "º" MASCULINE ORDINAL INDICATOR - /* 3 */ "\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 - /* 4 */ "\u00F9,\u00FB,%,\u00FC,\u00FA,\u016B", - /* 5 */ null, - /* 6 */ null, - // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA - // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE - // U+010D: "č" LATIN SMALL LETTER C WITH CARON - /* 7 */ "\u00E7,\u0107,\u010D", - // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS - /* 8 */ "%,\u00FF", - /* 9~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, - /* ~44 */ - // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE - /* 45 */ "\u00E8", - // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE - /* 46 */ "\u00E9", - // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE - /* 47 */ "\u00E0", - // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS - /* 48 */ "\u00FC", - // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS - /* 49 */ "\u00F6", - // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS - /* 50 */ "\u00E4", - }; - - /* Language hi: Hindi */ - private static final String[] LANGUAGE_hi = { - /* 0~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, - /* ~50 */ - // Label for "switch to alphabetic" key. - // U+0915: "क" DEVANAGARI LETTER KA - // U+0916: "ख" DEVANAGARI LETTER KHA - // U+0917: "ग" DEVANAGARI LETTER GA - /* 51 */ "\u0915\u0916\u0917", - /* 52~ */ - null, null, null, null, null, - /* ~56 */ - // U+20B9: "₹" INDIAN RUPEE SIGN - /* 57 */ "\u20B9", - /* 58~ */ - null, null, null, null, null, null, null, null, null, null, null, - /* ~68 */ - // U+0967: "१" DEVANAGARI DIGIT ONE - /* 69 */ "\u0967", - // U+0968: "२" DEVANAGARI DIGIT TWO - /* 70 */ "\u0968", - // U+0969: "३" DEVANAGARI DIGIT THREE - /* 71 */ "\u0969", - // U+096A: "४" DEVANAGARI DIGIT FOUR - /* 72 */ "\u096A", - // U+096B: "५" DEVANAGARI DIGIT FIVE - /* 73 */ "\u096B", - // U+096C: "६" DEVANAGARI DIGIT SIX - /* 74 */ "\u096C", - // U+096D: "७" DEVANAGARI DIGIT SEVEN - /* 75 */ "\u096D", - // U+096E: "८" DEVANAGARI DIGIT EIGHT - /* 76 */ "\u096E", - // U+096F: "९" DEVANAGARI DIGIT NINE - /* 77 */ "\u096F", - // U+0966: "०" DEVANAGARI DIGIT ZERO - /* 78 */ "\u0966", - // Label for "switch to symbols" key. - /* 79 */ "?\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. - /* 80 */ "\u0967\u0968\u0969", - /* 81 */ "1", - /* 82 */ "2", - /* 83 */ "3", - /* 84 */ "4", - /* 85 */ "5", - /* 86 */ "6", - /* 87 */ "7", - /* 88 */ "8", - /* 89 */ "9", - /* 90 */ "0", - }; - - /* Language hr: Croatian */ - private static final String[] LANGUAGE_hr = { - /* 0~ */ - null, null, null, null, null, - /* ~4 */ - // U+0161: "š" LATIN SMALL LETTER S WITH CARON - // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE - // U+00DF: "ß" LATIN SMALL LETTER SHARP S - /* 5 */ "\u0161,\u015B,\u00DF", - // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE - // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE - /* 6 */ "\u00F1,\u0144", - // U+010D: "č" LATIN SMALL LETTER C WITH CARON - // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE - // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA - /* 7 */ "\u010D,\u0107,\u00E7", - /* 8 */ null, - // U+0111: "đ" LATIN SMALL LETTER D WITH STROKE - /* 9 */ "\u0111", - /* 10 */ null, - /* 11 */ 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 - /* 12 */ "\u017E,\u017A,\u017C", - /* 13~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, - /* ~51 */ - /* 52 */ "!text/single_9qm_rqm", - /* 53 */ "!text/double_9qm_rqm", - /* 54 */ "!text/single_raqm_laqm", - /* 55 */ "!text/double_raqm_laqm", - }; - - /* Language hu: Hungarian */ - private static final String[] LANGUAGE_hu = { - // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE - // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE - // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX - // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS - // U+00E6: "æ" LATIN SMALL LETTER AE - // 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 - /* 0 */ "\u00E1,\u00E0,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101", - // 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 - // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE - // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON - /* 1 */ "\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 - /* 2 */ "\u00ED,\u00EE,\u00EF,\u00EC,\u012F,\u012B", - // 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 - // 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+00F8: "ø" LATIN SMALL LETTER O WITH STROKE - // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON - /* 3 */ "\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 - /* 4 */ "\u00FA,\u00FC,\u0171,\u00FB,\u00F9,\u016B", - /* 5~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, - /* ~51 */ - /* 52 */ "!text/single_9qm_rqm", - /* 53 */ "!text/double_9qm_rqm", - /* 54 */ "!text/single_raqm_laqm", - /* 55 */ "!text/double_raqm_laqm", - }; - - /* Language hy_AM: Armenian (Armenia) */ - private static final String[] LANGUAGE_hy_AM = { - /* 0~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, - /* ~58 */ - // U+058A: "֊" ARMENIAN HYPHEN - // U+055C: "՜" ARMENIAN EXCLAMATION MARK - // U+055D: "՝" ARMENIAN COMMA - // U+055E: "՞" ARMENIAN QUESTION MARK - // U+0559: "ՙ" ARMENIAN MODIFIER LETTER LEFT HALF RING - // U+055A: "՚" ARMENIAN APOSTROPHE - // U+055B: "՛" ARMENIAN EMPHASIS MARK - // U+055F: "՟" ARMENIAN ABBREVIATION MARK - /* 59 */ "!fixedColumnOrder!8,!,?,\u0559,\u055A,.,\u055C,\\,,\u055E,:,;,\u055F,\u00AB,\u00BB,\u058A,\u055D,\u055B", - /* 60~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, - /* ~102 */ - // U+058F: "֏" ARMENIAN DRAM SIGN - // TODO: Enable this when we have glyph for the following letter - // <string name="keylabel_for_currency">֏</string> - // - // U+055D: "՝" ARMENIAN COMMA - /* 103 */ "\u055D", - /* 104 */ null, - /* 105 */ null, - // U+0589: "։" ARMENIAN FULL STOP - /* 106 */ "\u0589", - /* 107 */ null, - /* 108 */ null, - /* 109 */ "\u0589", - /* 110 */ null, - /* 111 */ "!text/more_keys_for_punctuation", - /* 112~ */ - null, null, null, - /* ~114 */ - // U+055C: "՜" ARMENIAN EXCLAMATION MARK - // U+00A1: "¡" INVERTED EXCLAMATION MARK - /* 115 */ "\u055C,\u00A1", - // U+055E: "՞" ARMENIAN QUESTION MARK - // U+00BF: "¿" INVERTED QUESTION MARK - /* 116 */ "\u055E,\u00BF", - }; - - /* Language is: Icelandic */ - private static final String[] LANGUAGE_is = { - // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE - // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS - // U+00E6: "æ" LATIN SMALL LETTER AE - // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE - // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE - // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX - // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE - // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON - /* 0 */ "\u00E1,\u00E4,\u00E6,\u00E5,\u00E0,\u00E2,\u00E3,\u0101", - // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE - // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS - // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE - // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX - // 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 - /* 1 */ "\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 - /* 2 */ "\u00ED,\u00EF,\u00EE,\u00EC,\u012F,\u012B", - // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE - // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS - // 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+00F8: "ø" LATIN SMALL LETTER O WITH STROKE - // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON - /* 3 */ "\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 - /* 4 */ "\u00FA,\u00FC,\u00FB,\u00F9,\u016B", - /* 5~ */ - null, null, null, - /* ~7 */ - // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE - // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS - /* 8 */ "\u00FD,\u00FF", - // U+00F0: "ð" LATIN SMALL LETTER ETH - /* 9 */ "\u00F0", - /* 10 */ null, - // U+00FE: "þ" LATIN SMALL LETTER THORN - /* 11 */ "\u00FE", - /* 12~ */ - null, null, null, null, null, null, null, null, - /* ~19 */ - // U+00F0: "ð" LATIN SMALL LETTER ETH - /* 20 */ "\u00F0", - // U+00E6: "æ" LATIN SMALL LETTER AE - /* 21 */ "\u00E6", - // U+00FE: "þ" LATIN SMALL LETTER THORN - /* 22 */ "\u00FE", - /* 23~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, - /* ~51 */ - /* 52 */ "!text/single_9qm_lqm", - /* 53 */ "!text/double_9qm_lqm", - }; - - /* Language it: Italian */ - private static final String[] LANGUAGE_it = { - // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE - // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE - // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX - // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS - // U+00E6: "æ" LATIN SMALL LETTER AE - // 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 - // U+00AA: "ª" FEMININE ORDINAL INDICATOR - /* 0 */ "\u00E0,\u00E1,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101,\u00AA", - // 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+0119: "ę" LATIN SMALL LETTER E WITH OGONEK - // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE - // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON - /* 1 */ "\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 - /* 2 */ "\u00EC,\u00ED,\u00EE,\u00EF,\u012F,\u012B", - // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE - // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE - // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX - // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS - // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE - // U+0153: "œ" LATIN SMALL LIGATURE OE - // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE - // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON - // U+00BA: "º" MASCULINE ORDINAL INDICATOR - /* 3 */ "\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 - /* 4 */ "\u00F9,\u00FA,\u00FB,\u00FC,\u016B", - }; - - /* Language iw: Hebrew */ - private static final String[] LANGUAGE_iw = { - /* 0~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, - /* ~50 */ - // Label for "switch to alphabetic" key. - // U+05D0: "א" HEBREW LETTER ALEF - // U+05D1: "ב" HEBREW LETTER BET - // U+05D2: "ג" HEBREW LETTER GIMEL - /* 51 */ "\u05D0\u05D1\u05D2", - // The following characters don't need BIDI mirroring. - // U+2018: "‘" LEFT SINGLE QUOTATION MARK - // U+2019: "’" RIGHT SINGLE QUOTATION MARK - // U+201A: "‚" SINGLE LOW-9 QUOTATION MARK - // U+201C: "“" LEFT DOUBLE QUOTATION MARK - // U+201D: "”" RIGHT DOUBLE QUOTATION MARK - // U+201E: "„" DOUBLE LOW-9 QUOTATION MARK - /* 52 */ "\u2018,\u2019,\u201A", - /* 53 */ "\u201C,\u201D,\u201E", - /* 54 */ "!text/single_laqm_raqm_rtl", - /* 55 */ "!text/double_laqm_raqm_rtl", - /* 56 */ null, - // U+20AA: "₪" NEW SHEQEL SIGN - /* 57 */ "\u20AA", - /* 58 */ null, - /* 59 */ "!fixedColumnOrder!8,;,/,(|),)|(,#,!,\\,,?,&,\\%,+,\",-,:,',@", - /* 60 */ "!fixedColumnOrder!7,;,/,(|),)|(,#,',\\,,&,\\%,+,\",-,:,@", - // U+2605: "★" BLACK STAR - /* 61 */ "\u2605", - /* 62 */ null, - // U+00B1: "±" PLUS-MINUS SIGN - // U+FB29: "﬩" HEBREW LETTER ALTERNATIVE PLUS SIGN - /* 63 */ "\u00B1,\uFB29", - // The all letters need to be mirrored are found at - // http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt - /* 64 */ "!fixedColumnOrder!3,<|>,{|},[|]", - /* 65 */ "!fixedColumnOrder!3,>|<,}|{,]|[", - // 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 - /* 66 */ "!fixedColumnOrder!3,\u2039|\u203A,\u2264|\u2265,\u00AB|\u00BB", - /* 67 */ "!fixedColumnOrder!3,\u203A|\u2039,\u2265|\u2264,\u00BB|\u00AB", - }; - - /* Language ka_GE: Georgian (Georgia) */ - private static final String[] LANGUAGE_ka_GE = { - /* 0~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, - /* ~50 */ - // Label for "switch to alphabetic" key. - // U+10D0: "ა" GEORGIAN LETTER AN - // U+10D1: "ბ" GEORGIAN LETTER BAN - // U+10D2: "გ" GEORGIAN LETTER GAN - /* 51 */ "\u10D0\u10D1\u10D2", - /* 52 */ "!text/single_9qm_lqm", - /* 53 */ "!text/double_9qm_lqm", - }; - - /* Language kk: Kazakh */ - private static final String[] LANGUAGE_kk = { - /* 0~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, - /* ~24 */ - // U+0449: "щ" CYRILLIC SMALL LETTER SHCHA - /* 25 */ "\u0449", - // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN - /* 26 */ "\u044A", - // U+044B: "ы" CYRILLIC SMALL LETTER YERU - /* 27 */ "\u044B", - // U+044D: "э" CYRILLIC SMALL LETTER E - /* 28 */ "\u044D", - // U+0438: "и" CYRILLIC SMALL LETTER I - /* 29 */ "\u0438", - // U+04AF: "ү" CYRILLIC SMALL LETTER STRAIGHT U - // U+04B1: "ұ" CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE - /* 30 */ "\u04AF,\u04B1", - // U+049B: "қ" CYRILLIC SMALL LETTER KA WITH DESCENDER - /* 31 */ "\u049B", - // U+04A3: "ң" CYRILLIC SMALL LETTER EN WITH DESCENDER - /* 32 */ "\u04A3", - // U+0493: "ғ" CYRILLIC SMALL LETTER GHE WITH STROKE - /* 33 */ "\u0493", - // U+0456: "і" CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I - /* 34 */ "\u0456", - // U+04D9: "ә" CYRILLIC SMALL LETTER SCHWA - /* 35 */ "\u04D9", - // U+04E9: "ө" CYRILLIC SMALL LETTER BARRED O - /* 36 */ "\u04E9", - // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN - /* 37 */ "\u044A", - // U+04BB: "һ" CYRILLIC SMALL LETTER SHHA - /* 38 */ "\u04BB", - /* 39~ */ - null, null, null, null, - /* ~42 */ - // U+0451: "ё" CYRILLIC SMALL LETTER IO - /* 43 */ "\u0451", - /* 44~ */ - null, null, null, null, null, null, null, - /* ~50 */ - // Label for "switch to alphabetic" key. - // U+0410: "А" CYRILLIC CAPITAL LETTER A - // U+0411: "Б" CYRILLIC CAPITAL LETTER BE - // U+0412: "В" CYRILLIC CAPITAL LETTER VE - /* 51 */ "\u0410\u0411\u0412", - }; - - /* Language km_KH: Khmer (Cambodia) */ - private static final String[] LANGUAGE_km_KH = { - /* 0~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, - /* ~50 */ - // Label for "switch to alphabetic" key. - // U+1780: "ក" KHMER LETTER KA - // U+1781: "ខ" KHMER LETTER KHA - // U+1782: "គ" KHMER LETTER KO - /* 51 */ "\u1780\u1781\u1782", - /* 52~ */ - null, null, null, null, - /* ~55 */ - // U+17DB: "៛" KHMER CURRENCY SYMBOL RIEL - /* 56 */ "\u17DB,\u00A2,\u00A3,\u20AC,\u00A5,\u20B1", - }; - - /* Language ky: Kirghiz */ - private static final String[] LANGUAGE_ky = { - /* 0~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, - /* ~24 */ - // U+0449: "щ" CYRILLIC SMALL LETTER SHCHA - /* 25 */ "\u0449", - // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN - /* 26 */ "\u044A", - // U+044B: "ы" CYRILLIC SMALL LETTER YERU - /* 27 */ "\u044B", - // U+044D: "э" CYRILLIC SMALL LETTER E - /* 28 */ "\u044D", - // U+0438: "и" CYRILLIC SMALL LETTER I - /* 29 */ "\u0438", - // U+04AF: "ү" CYRILLIC SMALL LETTER STRAIGHT U - /* 30 */ "\u04AF", - /* 31 */ null, - // U+04A3: "ң" CYRILLIC SMALL LETTER EN WITH DESCENDER - /* 32 */ "\u04A3", - /* 33~ */ - null, null, null, - /* ~35 */ - // U+04E9: "ө" CYRILLIC SMALL LETTER BARRED O - /* 36 */ "\u04E9", - // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN - /* 37 */ "\u044A", - /* 38~ */ - null, null, null, null, null, - /* ~42 */ - // U+0451: "ё" CYRILLIC SMALL LETTER IO - /* 43 */ "\u0451", - /* 44~ */ - null, null, null, null, null, null, null, - /* ~50 */ - // Label for "switch to alphabetic" key. - // U+0410: "А" CYRILLIC CAPITAL LETTER A - // U+0411: "Б" CYRILLIC CAPITAL LETTER BE - // U+0412: "В" CYRILLIC CAPITAL LETTER VE - /* 51 */ "\u0410\u0411\u0412", - }; - - /* Language lo_LA: Lao (Laos) */ - private static final String[] LANGUAGE_lo_LA = { - /* 0~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, - /* ~50 */ - // Label for "switch to alphabetic" key. - // U+0E81: "ກ" LAO LETTER KO - // U+0E82: "ຂ" LAO LETTER KHO SUNG - // U+0E84: "ຄ" LAO LETTER KHO TAM - /* 51 */ "\u0E81\u0E82\u0E84", - /* 52~ */ - null, null, null, null, null, - /* ~56 */ - // U+20AD: "₭" KIP SIGN - /* 57 */ "\u20AD", - }; - - /* Language lt: Lithuanian */ - private static final String[] LANGUAGE_lt = { - // U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK - // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS - // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON - // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE - // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE - // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX - // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE - // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE - // U+00E6: "æ" LATIN SMALL LETTER AE - /* 0 */ "\u0105,\u00E4,\u0101,\u00E0,\u00E1,\u00E2,\u00E3,\u00E5,\u00E6", - // 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 - // 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+011B: "ě" LATIN SMALL LETTER E WITH CARON - /* 1 */ "\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 - // 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+0131: "ı" LATIN SMALL LETTER DOTLESS I - /* 2 */ "\u012F,\u012B,\u00EC,\u00ED,\u00EE,\u00EF,\u0131", - // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS - // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE - // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE - // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE - // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX - // U+0153: "œ" LATIN SMALL LIGATURE OE - // U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE - // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE - /* 3 */ "\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 - // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON - // 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+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE - // U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE - /* 4 */ "\u016B,\u0173,\u00FC,\u016B,\u00F9,\u00FA,\u00FB,\u016F,\u0171", - // 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 - /* 5 */ "\u0161,\u00DF,\u015B,\u015F", - // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA - // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE - // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE - // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE - /* 6 */ "\u0146,\u00F1,\u0144,\u0144", - // U+010D: "č" LATIN SMALL LETTER C WITH CARON - // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA - // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE - /* 7 */ "\u010D,\u00E7,\u0107", - // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE - // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS - /* 8 */ "\u00FD,\u00FF", - // U+010F: "ď" LATIN SMALL LETTER D WITH CARON - /* 9 */ "\u010F", - // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA - // U+0159: "ř" LATIN SMALL LETTER R WITH CARON - // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE - /* 10 */ "\u0157,\u0159,\u0155", - // U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA - // U+0165: "ť" LATIN SMALL LETTER T WITH CARON - /* 11 */ "\u0163,\u0165", - // 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 - /* 12 */ "\u017E,\u017C,\u017A", - // U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA - /* 13 */ "\u0137", - // 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 - /* 14 */ "\u013C,\u0142,\u013A,\u013E", - // U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA - // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE - /* 15 */ "\u0123,\u011F", - /* 16~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, - /* ~51 */ - /* 52 */ "!text/single_9qm_lqm", - /* 53 */ "!text/double_9qm_lqm", - }; - - /* Language lv: Latvian */ - private static final String[] LANGUAGE_lv = { - // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON - // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE - // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE - // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX - // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE - // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS - // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE - // U+00E6: "æ" LATIN SMALL LETTER AE - // U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK - /* 0 */ "\u0101,\u00E0,\u00E1,\u00E2,\u00E3,\u00E4,\u00E5,\u00E6,\u0105", - // 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 - // 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+0119: "ę" LATIN SMALL LETTER E WITH OGONEK - // U+011B: "ě" LATIN SMALL LETTER E WITH CARON - /* 1 */ "\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 - // 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+0131: "ı" LATIN SMALL LETTER DOTLESS I - /* 2 */ "\u012B,\u012F,\u00EC,\u00ED,\u00EE,\u00EF,\u0131", - // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE - // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE - // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX - // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE - // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS - // U+0153: "œ" LATIN SMALL LIGATURE OE - // U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE - // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE - /* 3 */ "\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 - // 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+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE - // U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE - /* 4 */ "\u016B,\u0173,\u00F9,\u00FA,\u00FB,\u00FC,\u016F,\u0171", - // 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 - /* 5 */ "\u0161,\u00DF,\u015B,\u015F", - // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA - // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE - // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE - // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE - /* 6 */ "\u0146,\u00F1,\u0144,\u0144", - // U+010D: "č" LATIN SMALL LETTER C WITH CARON - // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA - // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE - /* 7 */ "\u010D,\u00E7,\u0107", - // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE - // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS - /* 8 */ "\u00FD,\u00FF", - // U+010F: "ď" LATIN SMALL LETTER D WITH CARON - /* 9 */ "\u010F", - // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA - // U+0159: "ř" LATIN SMALL LETTER R WITH CARON - // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE - /* 10 */ "\u0157,\u0159,\u0155", - // U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA - // U+0165: "ť" LATIN SMALL LETTER T WITH CARON - /* 11 */ "\u0163,\u0165", - // 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 - /* 12 */ "\u017E,\u017C,\u017A", - // U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA - /* 13 */ "\u0137", - // 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 - /* 14 */ "\u013C,\u0142,\u013A,\u013E", - // U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA - // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE - /* 15 */ "\u0123,\u011F", - /* 16~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, - /* ~51 */ - /* 52 */ "!text/single_9qm_lqm", - /* 53 */ "!text/double_9qm_lqm", - }; - - /* Language mk: Macedonian */ - private static final String[] LANGUAGE_mk = { - /* 0~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, - /* ~38 */ - // U+0455: "ѕ" CYRILLIC SMALL LETTER DZE - /* 39 */ "\u0455", - // U+045C: "ќ" CYRILLIC SMALL LETTER KJE - /* 40 */ "\u045C", - // U+0437: "з" CYRILLIC SMALL LETTER ZE - /* 41 */ "\u0437", - // U+0453: "ѓ" CYRILLIC SMALL LETTER GJE - /* 42 */ "\u0453", - // U+0450: "ѐ" CYRILLIC SMALL LETTER IE WITH GRAVE - /* 43 */ "\u0450", - // U+045D: "ѝ" CYRILLIC SMALL LETTER I WITH GRAVE - /* 44 */ "\u045D", - /* 45~ */ - null, null, null, null, null, null, - /* ~50 */ - // Label for "switch to alphabetic" key. - // U+0410: "А" CYRILLIC CAPITAL LETTER A - // U+0411: "Б" CYRILLIC CAPITAL LETTER BE - // U+0412: "В" CYRILLIC CAPITAL LETTER VE - /* 51 */ "\u0410\u0411\u0412", - /* 52 */ "!text/single_9qm_lqm", - /* 53 */ "!text/double_9qm_lqm", - }; - - /* Language mn_MN: Mongolian (Mongolia) */ - private static final String[] LANGUAGE_mn_MN = { - /* 0~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, - /* ~50 */ - // Label for "switch to alphabetic" key. - // U+0410: "А" CYRILLIC CAPITAL LETTER A - // U+0411: "Б" CYRILLIC CAPITAL LETTER BE - // U+0412: "В" CYRILLIC CAPITAL LETTER VE - /* 51 */ "\u0410\u0411\u0412", - /* 52~ */ - null, null, null, null, null, - /* ~56 */ - // U+20AE: "₮" TUGRIK SIGN - /* 57 */ "\u20AE", - }; - - /* Language nb: Norwegian Bokmål */ - private static final String[] LANGUAGE_nb = { - // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE - // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS - // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE - // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX - // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE - // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON - /* 0 */ "\u00E0,\u00E4,\u00E1,\u00E2,\u00E3,\u0101", - // 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 - // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE - // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON - /* 1 */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0119,\u0117,\u0113", - /* 2 */ null, - // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX - // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE - // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE - // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS - // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE - // U+0153: "œ" LATIN SMALL LIGATURE OE - // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON - /* 3 */ "\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 - /* 4 */ "\u00FC,\u00FB,\u00F9,\u00FA,\u016B", - /* 5~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - /* ~19 */ - // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE - /* 20 */ "\u00E5", - // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE - /* 21 */ "\u00F8", - // U+00E6: "æ" LATIN SMALL LETTER AE - /* 22 */ "\u00E6", - // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS - /* 23 */ "\u00F6", - // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS - /* 24 */ "\u00E4", - /* 25~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, - /* ~51 */ - /* 52 */ "!text/single_9qm_rqm", - /* 53 */ "!text/double_9qm_rqm", - }; - - /* Language ne_NP: Nepali (Nepal) */ - private static final String[] LANGUAGE_ne_NP = { - /* 0~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, - /* ~50 */ - // Label for "switch to alphabetic" key. - // U+0915: "क" DEVANAGARI LETTER KA - // U+0916: "ख" DEVANAGARI LETTER KHA - // U+0917: "ग" DEVANAGARI LETTER GA - /* 51 */ "\u0915\u0916\u0917", - /* 52~ */ - null, null, null, null, null, - /* ~56 */ - // U+0930/U+0941/U+002E "रु." NEPALESE RUPEE SIGN - /* 57 */ "\u0930\u0941.", - /* 58~ */ - null, null, null, null, null, null, null, null, null, null, null, - /* ~68 */ - // U+0967: "१" DEVANAGARI DIGIT ONE - /* 69 */ "\u0967", - // U+0968: "२" DEVANAGARI DIGIT TWO - /* 70 */ "\u0968", - // U+0969: "३" DEVANAGARI DIGIT THREE - /* 71 */ "\u0969", - // U+096A: "४" DEVANAGARI DIGIT FOUR - /* 72 */ "\u096A", - // U+096B: "५" DEVANAGARI DIGIT FIVE - /* 73 */ "\u096B", - // U+096C: "६" DEVANAGARI DIGIT SIX - /* 74 */ "\u096C", - // U+096D: "७" DEVANAGARI DIGIT SEVEN - /* 75 */ "\u096D", - // U+096E: "८" DEVANAGARI DIGIT EIGHT - /* 76 */ "\u096E", - // U+096F: "९" DEVANAGARI DIGIT NINE - /* 77 */ "\u096F", - // U+0966: "०" DEVANAGARI DIGIT ZERO - /* 78 */ "\u0966", - // Label for "switch to symbols" key. - /* 79 */ "?\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. - /* 80 */ "\u0967\u0968\u0969", - /* 81 */ "1", - /* 82 */ "2", - /* 83 */ "3", - /* 84 */ "4", - /* 85 */ "5", - /* 86 */ "6", - /* 87 */ "7", - /* 88 */ "8", - /* 89 */ "9", - /* 90 */ "0", - }; - - /* Language nl: Dutch */ - private static final String[] LANGUAGE_nl = { - // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE - // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS - // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX - // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE - // U+00E6: "æ" LATIN SMALL LETTER AE - // 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 - /* 0 */ "\u00E1,\u00E4,\u00E2,\u00E0,\u00E6,\u00E3,\u00E5,\u0101", - // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE - // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS - // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX - // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE - // 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 - /* 1 */ "\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 - // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX - // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK - // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON - // U+0133: "ij" LATIN SMALL LIGATURE IJ - /* 2 */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B,\u0133", - // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE - // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS - // 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+00F8: "ø" LATIN SMALL LETTER O WITH STROKE - // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON - /* 3 */ "\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 - /* 4 */ "\u00FA,\u00FC,\u00FB,\u00F9,\u016B", - /* 5 */ null, - // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE - // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE - /* 6 */ "\u00F1,\u0144", - /* 7 */ null, - // U+0133: "ij" LATIN SMALL LIGATURE IJ - /* 8 */ "\u0133", - /* 9~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, - /* ~51 */ - /* 52 */ "!text/single_9qm_rqm", - /* 53 */ "!text/double_9qm_rqm", - }; - - /* Language pl: Polish */ - private static final String[] LANGUAGE_pl = { - // U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK - // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE - // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE - // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX - // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS - // U+00E6: "æ" LATIN SMALL LETTER AE - // 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 - /* 0 */ "\u0105,\u00E1,\u00E0,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101", - // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK - // 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+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE - // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON - /* 1 */ "\u0119,\u00E8,\u00E9,\u00EA,\u00EB,\u0117,\u0113", - /* 2 */ null, - // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE - // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS - // 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+00F8: "ø" LATIN SMALL LETTER O WITH STROKE - // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON - /* 3 */ "\u00F3,\u00F6,\u00F4,\u00F2,\u00F5,\u0153,\u00F8,\u014D", - /* 4 */ null, - // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE - // U+00DF: "ß" LATIN SMALL LETTER SHARP S - // U+0161: "š" LATIN SMALL LETTER S WITH CARON - /* 5 */ "\u015B,\u00DF,\u0161", - // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE - // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE - /* 6 */ "\u0144,\u00F1", - // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE - // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA - // U+010D: "č" LATIN SMALL LETTER C WITH CARON - /* 7 */ "\u0107,\u00E7,\u010D", - /* 8~ */ - null, null, null, null, - /* ~11 */ - // 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 - /* 12 */ "\u017C,\u017A,\u017E", - /* 13 */ null, - // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE - /* 14 */ "\u0142", - /* 15~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, - /* ~51 */ - /* 52 */ "!text/single_9qm_rqm", - /* 53 */ "!text/double_9qm_rqm", - }; - - /* Language pt: Portuguese */ - private static final String[] LANGUAGE_pt = { - // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE - // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE - // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE - // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX - // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS - // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE - // U+00E6: "æ" LATIN SMALL LETTER AE - // U+00AA: "ª" FEMININE ORDINAL INDICATOR - /* 0 */ "\u00E1,\u00E3,\u00E0,\u00E2,\u00E4,\u00E5,\u00E6,\u00AA", - // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE - // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX - // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE - // 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 - // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS - /* 1 */ "\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 - /* 2 */ "\u00ED,\u00EE,\u00EC,\u00EF,\u012F,\u012B", - // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE - // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE - // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX - // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE - // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS - // U+0153: "œ" LATIN SMALL LIGATURE OE - // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE - // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON - // U+00BA: "º" MASCULINE ORDINAL INDICATOR - /* 3 */ "\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 - /* 4 */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B", - /* 5 */ null, - /* 6 */ null, - // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA - // U+010D: "č" LATIN SMALL LETTER C WITH CARON - // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE - /* 7 */ "\u00E7,\u010D,\u0107", - }; - - /* Language rm: Raeto-Romance */ - private static final String[] LANGUAGE_rm = { - /* 0~ */ - null, null, null, - /* ~2 */ - // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE - // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE - // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS - // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX - // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE - // U+0153: "œ" LATIN SMALL LIGATURE OE - // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE - /* 3 */ "\u00F2,\u00F3,\u00F6,\u00F4,\u00F5,\u0153,\u00F8", - }; - - /* Language ro: Romanian */ - private static final String[] LANGUAGE_ro = { - // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX - // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE - // U+0103: "ă" LATIN SMALL LETTER A WITH BREVE - // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE - // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE - // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS - // U+00E6: "æ" LATIN SMALL LETTER AE - // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE - // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON - /* 0 */ "\u00E2,\u00E3,\u0103,\u00E0,\u00E1,\u00E4,\u00E6,\u00E5,\u0101", - /* 1 */ null, - // 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 - /* 2 */ "\u00EE,\u00EF,\u00EC,\u00ED,\u012F,\u012B", - /* 3 */ null, - /* 4 */ 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 - /* 5 */ "\u0219,\u00DF,\u015B,\u0161", - /* 6~ */ - null, null, null, null, null, - /* ~10 */ - // U+021B: "ț" LATIN SMALL LETTER T WITH COMMA BELOW - /* 11 */ "\u021B", - /* 12~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, - /* ~51 */ - /* 52 */ "!text/single_9qm_rqm", - /* 53 */ "!text/double_9qm_rqm", - }; - - /* Language ru: Russian */ - private static final String[] LANGUAGE_ru = { - /* 0~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, - /* ~24 */ - // U+0449: "щ" CYRILLIC SMALL LETTER SHCHA - /* 25 */ "\u0449", - // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN - /* 26 */ "\u044A", - // U+044B: "ы" CYRILLIC SMALL LETTER YERU - /* 27 */ "\u044B", - // U+044D: "э" CYRILLIC SMALL LETTER E - /* 28 */ "\u044D", - // U+0438: "и" CYRILLIC SMALL LETTER I - /* 29 */ "\u0438", - /* 30~ */ - null, null, null, null, null, null, null, - /* ~36 */ - // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN - /* 37 */ "\u044A", - /* 38~ */ - null, null, null, null, null, - /* ~42 */ - // U+0451: "ё" CYRILLIC SMALL LETTER IO - /* 43 */ "\u0451", - /* 44~ */ - null, null, null, null, null, null, null, - /* ~50 */ - // Label for "switch to alphabetic" key. - // U+0410: "А" CYRILLIC CAPITAL LETTER A - // U+0411: "Б" CYRILLIC CAPITAL LETTER BE - // U+0412: "В" CYRILLIC CAPITAL LETTER VE - /* 51 */ "\u0410\u0411\u0412", - /* 52 */ "!text/single_9qm_lqm", - /* 53 */ "!text/double_9qm_lqm", - }; - - /* Language sk: Slovak */ - private static final String[] LANGUAGE_sk = { - // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE - // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS - // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON - // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE - // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX - // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE - // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE - // U+00E6: "æ" LATIN SMALL LETTER AE - // U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK - /* 0 */ "\u00E1,\u00E4,\u0101,\u00E0,\u00E2,\u00E3,\u00E5,\u00E6,\u0105", - // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE - // U+011B: "ě" LATIN SMALL LETTER E WITH CARON - // 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 - // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX - // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS - // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK - /* 1 */ "\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 - // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE - // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX - // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS - // U+0131: "ı" LATIN SMALL LETTER DOTLESS I - /* 2 */ "\u00ED,\u012B,\u012F,\u00EC,\u00EE,\u00EF,\u0131", - // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX - // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE - // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS - // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE - // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE - // U+0153: "œ" LATIN SMALL LIGATURE OE - // U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE - // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE - /* 3 */ "\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 - // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON - // U+0173: "ų" LATIN SMALL LETTER U WITH OGONEK - // 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 - /* 4 */ "\u00FA,\u016F,\u00FC,\u016B,\u0173,\u00F9,\u00FB,\u0171", - // 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 - /* 5 */ "\u0161,\u00DF,\u015B,\u015F", - // 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 - // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE - /* 6 */ "\u0148,\u0146,\u00F1,\u0144,\u0144", - // U+010D: "č" LATIN SMALL LETTER C WITH CARON - // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA - // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE - /* 7 */ "\u010D,\u00E7,\u0107", - // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE - // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS - /* 8 */ "\u00FD,\u00FF", - // U+010F: "ď" LATIN SMALL LETTER D WITH CARON - /* 9 */ "\u010F", - // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE - // U+0159: "ř" LATIN SMALL LETTER R WITH CARON - // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA - /* 10 */ "\u0155,\u0159,\u0157", - // U+0165: "ť" LATIN SMALL LETTER T WITH CARON - // U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA - /* 11 */ "\u0165,\u0163", - // 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 - /* 12 */ "\u017E,\u017C,\u017A", - // U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA - /* 13 */ "\u0137", - // 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 - /* 14 */ "\u013E,\u013A,\u013C,\u0142", - // U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA - // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE - /* 15 */ "\u0123,\u011F", - /* 16~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, - /* ~51 */ - /* 52 */ "!text/single_9qm_lqm", - /* 53 */ "!text/double_9qm_lqm", - /* 54 */ "!text/single_raqm_laqm", - /* 55 */ "!text/double_raqm_laqm", - }; - - /* Language sl: Slovenian */ - private static final String[] LANGUAGE_sl = { - /* 0~ */ - null, null, null, null, null, - /* ~4 */ - // U+0161: "š" LATIN SMALL LETTER S WITH CARON - /* 5 */ "\u0161", - /* 6 */ null, - // U+010D: "č" LATIN SMALL LETTER C WITH CARON - // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE - /* 7 */ "\u010D,\u0107", - /* 8 */ null, - // U+0111: "đ" LATIN SMALL LETTER D WITH STROKE - /* 9 */ "\u0111", - /* 10 */ null, - /* 11 */ null, - // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON - /* 12 */ "\u017E", - /* 13~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, - /* ~51 */ - /* 52 */ "!text/single_9qm_lqm", - /* 53 */ "!text/double_9qm_lqm", - /* 54 */ "!text/single_raqm_laqm", - /* 55 */ "!text/double_raqm_laqm", - }; - - /* Language sr: Serbian */ - private static final String[] LANGUAGE_sr = { - /* 0~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, - /* ~38 */ - // 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> - // 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> - // U+010F: "ď" LATIN SMALL LETTER D WITH CARON - // <string name="more_keys_for_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> - // END: More keys definitions for Serbian (Latin) - // BEGIN: More keys definitions for Serbian (Cyrillic) - // U+0437: "з" CYRILLIC SMALL LETTER ZE - /* 39 */ "\u0437", - // U+045B: "ћ" CYRILLIC SMALL LETTER TSHE - /* 40 */ "\u045B", - // U+0455: "ѕ" CYRILLIC SMALL LETTER DZE - /* 41 */ "\u0455", - // U+0452: "ђ" CYRILLIC SMALL LETTER DJE - /* 42 */ "\u0452", - // U+0450: "ѐ" CYRILLIC SMALL LETTER IE WITH GRAVE - /* 43 */ "\u0450", - // U+045D: "ѝ" CYRILLIC SMALL LETTER I WITH GRAVE - /* 44 */ "\u045D", - /* 45~ */ - null, null, null, null, null, null, - /* ~50 */ - // 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 - /* 51 */ "\u0410\u0411\u0412", - /* 52 */ "!text/single_9qm_lqm", - /* 53 */ "!text/double_9qm_lqm", - /* 54 */ "!text/single_raqm_laqm", - /* 55 */ "!text/double_raqm_laqm", - }; - - /* Language sv: Swedish */ - private static final String[] LANGUAGE_sv = { - // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE - // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE - // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX - // U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK - // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE - /* 0 */ "\u00E1,\u00E0,\u00E2,\u0105,\u00E3", - // 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 - /* 1 */ "\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 - /* 2 */ "\u00ED,\u00EC,\u00EE,\u00EF", - // 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 - /* 3 */ "\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 - /* 4 */ "\u00FC,\u00FA,\u00F9,\u00FB,\u016B", - // 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 - /* 5 */ "\u015B,\u0161,\u015F,\u00DF", - // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE - // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE - // U+0148: "ň" LATIN SMALL LETTER N WITH CARON - /* 6 */ "\u0144,\u00F1,\u0148", - // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA - // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE - // U+010D: "č" LATIN SMALL LETTER C WITH CARON - /* 7 */ "\u00E7,\u0107,\u010D", - // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE - // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS - // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS - /* 8 */ "\u00FD,\u00FF,\u00FC", - // U+00F0: "ð" LATIN SMALL LETTER ETH - // U+010F: "ď" LATIN SMALL LETTER D WITH CARON - /* 9 */ "\u00F0,\u010F", - // U+0159: "ř" LATIN SMALL LETTER R WITH CARON - /* 10 */ "\u0159", - // U+0165: "ť" LATIN SMALL LETTER T WITH CARON - // U+00FE: "þ" LATIN SMALL LETTER THORN - /* 11 */ "\u0165,\u00FE", - // 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 - /* 12 */ "\u017A,\u017E,\u017C", - /* 13 */ null, - // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE - /* 14 */ "\u0142", - /* 15~ */ - null, null, null, null, null, - /* ~19 */ - // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE - /* 20 */ "\u00E5", - // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS - /* 21 */ "\u00F6", - // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS - /* 22 */ "\u00E4", - // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE - // U+0153: "œ" LATIN SMALL LIGATURE OE - /* 23 */ "\u00F8,\u0153", - // U+00E6: "æ" LATIN SMALL LETTER AE - /* 24 */ "\u00E6", - /* 25~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, - /* ~53 */ - /* 54 */ "!text/single_raqm_laqm", - /* 55 */ "!text/double_raqm_laqm", - }; - - /* Language sw: Swahili */ - private static final String[] LANGUAGE_sw = { - // This is the same as English except more_keys_for_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 - // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS - // U+00E6: "æ" LATIN SMALL LETTER AE - // 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 - /* 0 */ "\u00E0,\u00E1,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101", - // 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 - /* 1 */ "\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 - /* 2 */ "\u00EE,\u00EF,\u00ED,\u012B,\u00EC", - // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX - // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS - // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE - // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE - // U+0153: "œ" LATIN SMALL LIGATURE OE - // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE - // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON - // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE - /* 3 */ "\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 - /* 4 */ "\u00FB,\u00FC,\u00F9,\u00FA,\u016B", - // U+00DF: "ß" LATIN SMALL LETTER SHARP S - /* 5 */ "\u00DF", - // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE - /* 6 */ "\u00F1", - // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA - /* 7 */ "\u00E7", - /* 8~ */ - null, null, null, null, null, null, null, - /* ~14 */ - /* 15 */ "g\'", - }; - - /* Language th: Thai */ - private static final String[] LANGUAGE_th = { - /* 0~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, - /* ~50 */ - // Label for "switch to alphabetic" key. - // U+0E01: "ก" THAI CHARACTER KO KAI - // U+0E02: "ข" THAI CHARACTER KHO KHAI - // U+0E04: "ค" THAI CHARACTER KHO KHWAI - /* 51 */ "\u0E01\u0E02\u0E04", - /* 52~ */ - null, null, null, null, null, - /* ~56 */ - // U+0E3F: "฿" THAI CURRENCY SYMBOL BAHT - /* 57 */ "\u0E3F", - }; - - /* Language tl: Tagalog */ - private static final String[] LANGUAGE_tl = { - // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE - // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE - // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS - // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX - // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE - // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE - // U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK - // U+00E6: "æ" LATIN SMALL LETTER AE - // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON - // U+00AA: "ª" FEMININE ORDINAL INDICATOR - /* 0 */ "\u00E1,\u00E0,\u00E4,\u00E2,\u00E3,\u00E5,\u0105,\u00E6,\u0101,\u00AA", - // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE - // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE - // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS - // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX - // 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 - /* 1 */ "\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 - /* 2 */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B", - // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE - // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE - // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS - // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX - // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE - // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE - // U+0153: "œ" LATIN SMALL LIGATURE OE - // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON - // U+00BA: "º" MASCULINE ORDINAL INDICATOR - /* 3 */ "\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 - /* 4 */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B", - /* 5 */ null, - // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE - // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE - /* 6 */ "\u00F1,\u0144", - // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA - // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE - // U+010D: "č" LATIN SMALL LETTER C WITH CARON - /* 7 */ "\u00E7,\u0107,\u010D", - }; - - /* Language tr: Turkish */ - private static final String[] LANGUAGE_tr = { - // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX - /* 0 */ "\u00E2", - /* 1 */ null, - // U+0131: "ı" LATIN SMALL LETTER DOTLESS I - // 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 - /* 2 */ "\u0131,\u00EE,\u00EF,\u00EC,\u00ED,\u012F,\u012B", - // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS - // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX - // U+0153: "œ" LATIN SMALL LIGATURE OE - // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE - // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE - // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE - // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE - // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON - /* 3 */ "\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 - /* 4 */ "\u00FC,\u00FB,\u00F9,\u00FA,\u016B", - // 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 - /* 5 */ "\u015F,\u00DF,\u015B,\u0161", - /* 6 */ null, - // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA - // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE - // U+010D: "č" LATIN SMALL LETTER C WITH CARON - /* 7 */ "\u00E7,\u0107,\u010D", - /* 8~ */ - null, null, null, null, null, null, null, - /* ~14 */ - // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE - /* 15 */ "\u011F", - }; - - /* Language uk: Ukrainian */ - private static final String[] LANGUAGE_uk = { - /* 0~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, - /* ~24 */ - // U+0449: "щ" CYRILLIC SMALL LETTER SHCHA - /* 25 */ "\u0449", - // U+0457: "ї" CYRILLIC SMALL LETTER YI - /* 26 */ "\u0457", - // U+0456: "і" CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I - /* 27 */ "\u0456", - // U+0454: "є" CYRILLIC SMALL LETTER UKRAINIAN IE - /* 28 */ "\u0454", - // U+0438: "и" CYRILLIC SMALL LETTER I - /* 29 */ "\u0438", - /* 30~ */ - null, null, null, - /* ~32 */ - // U+0491: "ґ" CYRILLIC SMALL LETTER GHE WITH UPTURN - /* 33 */ "\u0491", - // U+0457: "ї" CYRILLIC SMALL LETTER YI - /* 34 */ "\u0457", - /* 35 */ null, - /* 36 */ null, - // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN - /* 37 */ "\u044A", - /* 38~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, - /* ~50 */ - // Label for "switch to alphabetic" key. - // U+0410: "А" CYRILLIC CAPITAL LETTER A - // U+0411: "Б" CYRILLIC CAPITAL LETTER BE - // U+0412: "В" CYRILLIC CAPITAL LETTER VE - /* 51 */ "\u0410\u0411\u0412", - /* 52 */ "!text/single_9qm_lqm", - /* 53 */ "!text/double_9qm_lqm", - /* 54~ */ - null, null, null, - /* ~56 */ - // U+20B4: "₴" HRYVNIA SIGN - /* 57 */ "\u20B4", - }; - - /* Language vi: Vietnamese */ - private static final String[] LANGUAGE_vi = { - // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE - // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE - // U+1EA3: "ả" LATIN SMALL LETTER A WITH HOOK ABOVE - // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE - // U+1EA1: "ạ" LATIN SMALL LETTER A WITH DOT BELOW - // U+0103: "ă" LATIN SMALL LETTER A WITH BREVE - // U+1EB1: "ằ" LATIN SMALL LETTER A WITH BREVE AND GRAVE - // U+1EAF: "ắ" LATIN SMALL LETTER A WITH BREVE AND ACUTE - // U+1EB3: "ẳ" LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE - // U+1EB5: "ẵ" LATIN SMALL LETTER A WITH BREVE AND TILDE - // U+1EB7: "ặ" LATIN SMALL LETTER A WITH BREVE AND DOT BELOW - // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX - // U+1EA7: "ầ" LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE - // U+1EA5: "ấ" LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE - // 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 - /* 0 */ "\u00E0,\u00E1,\u1EA3,\u00E3,\u1EA1,\u0103,\u1EB1,\u1EAF,\u1EB3,\u1EB5,\u1EB7,\u00E2,\u1EA7,\u1EA5,\u1EA9,\u1EAB,\u1EAD", - // 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 - // U+1EBD: "ẽ" LATIN SMALL LETTER E WITH TILDE - // U+1EB9: "ẹ" LATIN SMALL LETTER E WITH DOT BELOW - // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX - // U+1EC1: "ề" LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE - // U+1EBF: "ế" LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE - // 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 - /* 1 */ "\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 - /* 2 */ "\u00EC,\u00ED,\u1EC9,\u0129,\u1ECB", - // 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 - // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE - // U+1ECD: "ọ" LATIN SMALL LETTER O WITH DOT BELOW - // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX - // U+1ED3: "ồ" LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE - // U+1ED1: "ố" LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE - // U+1ED5: "ổ" LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE - // U+1ED7: "ỗ" LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE - // U+1ED9: "ộ" LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW - // U+01A1: "ơ" LATIN SMALL LETTER O WITH HORN - // U+1EDD: "ờ" LATIN SMALL LETTER O WITH HORN AND GRAVE - // U+1EDB: "ớ" LATIN SMALL LETTER O WITH HORN AND ACUTE - // 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 - /* 3 */ "\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 - // U+0169: "ũ" LATIN SMALL LETTER U WITH TILDE - // U+1EE5: "ụ" LATIN SMALL LETTER U WITH DOT BELOW - // U+01B0: "ư" LATIN SMALL LETTER U WITH HORN - // U+1EEB: "ừ" LATIN SMALL LETTER U WITH HORN AND GRAVE - // U+1EE9: "ứ" LATIN SMALL LETTER U WITH HORN AND ACUTE - // 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 - /* 4 */ "\u00F9,\u00FA,\u1EE7,\u0169,\u1EE5,\u01B0,\u1EEB,\u1EE9,\u1EED,\u1EEF,\u1EF1", - /* 5~ */ - null, null, null, - /* ~7 */ - // 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 - /* 8 */ "\u1EF3,\u00FD,\u1EF7,\u1EF9,\u1EF5", - // U+0111: "đ" LATIN SMALL LETTER D WITH STROKE - /* 9 */ "\u0111", - /* 10~ */ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, - /* ~56 */ - // U+20AB: "₫" DONG SIGN - /* 57 */ "\u20AB", - }; - - /* Language zu: Zulu */ - private static final String[] LANGUAGE_zu = { - // This is the same as English - // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE - // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE - // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX - // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS - // U+00E6: "æ" LATIN SMALL LETTER AE - // 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 - /* 0 */ "\u00E0,\u00E1,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101", - // 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 - /* 1 */ "\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 - /* 2 */ "\u00EE,\u00EF,\u00ED,\u012B,\u00EC", - // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX - // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS - // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE - // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE - // U+0153: "œ" LATIN SMALL LIGATURE OE - // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE - // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON - // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE - /* 3 */ "\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 - /* 4 */ "\u00FB,\u00FC,\u00F9,\u00FA,\u016B", - // U+00DF: "ß" LATIN SMALL LETTER SHARP S - /* 5 */ "\u00DF", - // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE - /* 6 */ "\u00F1", - // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA - /* 7 */ "\u00E7", - }; - - /* Language zz: Alphabet */ - private static final String[] LANGUAGE_zz = { - // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE - // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE - // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX - // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE - // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS - // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE - // U+00E6: "æ" LATIN SMALL LETTER AE - // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON - // U+0103: "ă" LATIN SMALL LETTER A WITH BREVE - // U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK - // U+00AA: "ª" FEMININE ORDINAL INDICATOR - /* 0 */ "\u00E0,\u00E1,\u00E2,\u00E3,\u00E4,\u00E5,\u00E6,\u00E3,\u00E5,\u0101,\u0103,\u0105,\u00AA", - // 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 - // U+0115: "ĕ" LATIN SMALL LETTER E WITH BREVE - // 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 - /* 1 */ "\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 - // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS - // U+0129: "ĩ" LATIN SMALL LETTER I WITH TILDE - // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON - // U+012D: "ĭ" LATIN SMALL LETTER I WITH BREVE - // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK - // U+0131: "ı" LATIN SMALL LETTER DOTLESS I - // U+0133: "ij" LATIN SMALL LIGATURE IJ - /* 2 */ "\u00EC,\u00ED,\u00EE,\u00EF,\u0129,\u012B,\u012D,\u012F,\u0131,\u0133", - // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE - // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE - // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX - // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE - // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS - // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE - // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON - // U+014F: "ŏ" LATIN SMALL LETTER O WITH BREVE - // U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE - // U+0153: "œ" LATIN SMALL LIGATURE OE - // U+00BA: "º" MASCULINE ORDINAL INDICATOR - /* 3 */ "\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 - // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS - // U+0169: "ũ" LATIN SMALL LETTER U WITH TILDE - // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON - // U+016D: "ŭ" LATIN SMALL LETTER U WITH BREVE - // 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 - /* 4 */ "\u00F9,\u00FA,\u00FB,\u00FC,\u0169,\u016B,\u016D,\u016F,\u0171,\u0173", - // 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 - /* 5 */ "\u00DF,\u015B,\u015D,\u015F,\u0161,\u017F", - // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE - // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE - // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA - // U+0148: "ň" LATIN SMALL LETTER N WITH CARON - // U+0149: "ʼn" LATIN SMALL LETTER N PRECEDED BY APOSTROPHE - // U+014B: "ŋ" LATIN SMALL LETTER ENG - /* 6 */ "\u00F1,\u0144,\u0146,\u0148,\u0149,\u014B", - // 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 - /* 7 */ "\u00E7,\u0107,\u0109,\u010B,\u010D", - // 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 - /* 8 */ "\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 - /* 9 */ "\u010F,\u0111,\u00F0", - // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE - // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA - // U+0159: "ř" LATIN SMALL LETTER R WITH CARON - /* 10 */ "\u0155,\u0157,\u0159", - // 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 - /* 11 */ "\u00FE,\u0163,\u0165,\u0167", - // 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 - /* 12 */ "\u017A,\u017C,\u017E", - // U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA - // U+0138: "ĸ" LATIN SMALL LETTER KRA - /* 13 */ "\u0137,\u0138", - // 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 - /* 14 */ "\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 - /* 15 */ "\u011D,\u011F,\u0121,\u0123", - /* 16 */ null, - // U+0125: "ĥ" LATIN SMALL LETTER H WITH CIRCUMFLEX - /* 17 */ "\u0125", - // U+0135: "ĵ" LATIN SMALL LETTER J WITH CIRCUMFLEX - /* 18 */ "\u0135", - // U+0175: "ŵ" LATIN SMALL LETTER W WITH CIRCUMFLEX - /* 19 */ "\u0175", - }; - - // 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 = { - "DEFAULT", LANGUAGE_DEFAULT, /* default */ - "af", LANGUAGE_af, /* Afrikaans */ - "ar", LANGUAGE_ar, /* Arabic */ - "az" /* "az_AZ" */, LANGUAGE_az_AZ, /* Azerbaijani (Azerbaijan) */ - "be" /* "be_BY" */, LANGUAGE_be_BY, /* Belarusian (Belarus) */ - "bg", LANGUAGE_bg, /* Bulgarian */ - "ca", LANGUAGE_ca, /* Catalan */ - "cs", LANGUAGE_cs, /* Czech */ - "da", LANGUAGE_da, /* Danish */ - "de", LANGUAGE_de, /* German */ - "el", LANGUAGE_el, /* Greek */ - "en", LANGUAGE_en, /* English */ - "eo", LANGUAGE_eo, /* Esperanto */ - "es", LANGUAGE_es, /* Spanish */ - "et" /* "et_EE" */, LANGUAGE_et_EE, /* Estonian (Estonia) */ - "fa", LANGUAGE_fa, /* Persian */ - "fi", LANGUAGE_fi, /* Finnish */ - "fr", LANGUAGE_fr, /* French */ - "hi", LANGUAGE_hi, /* Hindi */ - "hr", LANGUAGE_hr, /* Croatian */ - "hu", LANGUAGE_hu, /* Hungarian */ - "hy" /* "hy_AM" */, LANGUAGE_hy_AM, /* Armenian (Armenia) */ - "is", LANGUAGE_is, /* Icelandic */ - "it", LANGUAGE_it, /* Italian */ - "iw", LANGUAGE_iw, /* Hebrew */ - "ka" /* "ka_GE" */, LANGUAGE_ka_GE, /* Georgian (Georgia) */ - "kk", LANGUAGE_kk, /* Kazakh */ - "km" /* "km_KH" */, LANGUAGE_km_KH, /* Khmer (Cambodia) */ - "ky", LANGUAGE_ky, /* Kirghiz */ - "lo" /* "lo_LA" */, LANGUAGE_lo_LA, /* Lao (Laos) */ - "lt", LANGUAGE_lt, /* Lithuanian */ - "lv", LANGUAGE_lv, /* Latvian */ - "mk", LANGUAGE_mk, /* Macedonian */ - "mn" /* "mn_MN" */, LANGUAGE_mn_MN, /* Mongolian (Mongolia) */ - "nb", LANGUAGE_nb, /* Norwegian Bokmål */ - "ne" /* "ne_NP" */, LANGUAGE_ne_NP, /* Nepali (Nepal) */ - "nl", LANGUAGE_nl, /* Dutch */ - "pl", LANGUAGE_pl, /* Polish */ - "pt", LANGUAGE_pt, /* Portuguese */ - "rm", LANGUAGE_rm, /* Raeto-Romance */ - "ro", LANGUAGE_ro, /* Romanian */ - "ru", LANGUAGE_ru, /* Russian */ - "sk", LANGUAGE_sk, /* Slovak */ - "sl", LANGUAGE_sl, /* Slovenian */ - "sr", LANGUAGE_sr, /* Serbian */ - "sv", LANGUAGE_sv, /* Swedish */ - "sw", LANGUAGE_sw, /* Swahili */ - "th", LANGUAGE_th, /* Thai */ - "tl", LANGUAGE_tl, /* Tagalog */ - "tr", LANGUAGE_tr, /* Turkish */ - "uk", LANGUAGE_uk, /* Ukrainian */ - "vi", LANGUAGE_vi, /* Vietnamese */ - "zu", LANGUAGE_zu, /* Zulu */ - "zz", LANGUAGE_zz, /* Alphabet */ - }; - - static { - int id = 0; - for (final String name : NAMES) { - sNameToIdsMap.put(name, id++); - } - - for (int i = 0; i < LANGUAGES_AND_TEXTS.length; i += 2) { - final String language = (String)LANGUAGES_AND_TEXTS[i]; - final String[] texts = (String[])LANGUAGES_AND_TEXTS[i + 1]; - sLanguageToTextsMap.put(language, texts); - } - } } diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java new file mode 100644 index 000000000..14991f587 --- /dev/null +++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java @@ -0,0 +1,3546 @@ +/* + * 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.keyboard.internal; + +import com.android.inputmethod.latin.utils.CollectionUtils; + +import java.util.HashMap; + +/** + * !!!!! DO NOT EDIT THIS FILE !!!!! + * + * This file is generated by tools/make-keyboard-text. The base template file is + * tools/make-keyboard-text/res/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.tmpl + * + * This file must be updated when any text resources in keyboard layout files have been changed. + * These text resources are referred as "!text/<resource_name>" in keyboard XML definitions, + * and should be defined in + * tools/make-keyboard-text/res/values-<locale>/donottranslate-more-keys.xml + * + * To update this file, please run the following commands. + * $ cd $ANDROID_BUILD_TOP + * $ mmm packages/inputmethods/LatinIME/tools/make-keyboard-text + * $ make-keyboard-text -java packages/inputmethods/LatinIME/java/src + * + * The updated source file will be generated to the following path (this file). + * packages/inputmethods/LatinIME/java/src/com/android/inputmethod/keyboard/internal/ + * KeyboardTextsTable.java + */ +public final class KeyboardTextsTable { + // Name to index map. + private static final HashMap<String, Integer> sNameToIndexesMap = CollectionUtils.newHashMap(); + // Language to texts map. + private static final HashMap<String, String[]> sLanguageToTextsMap = + CollectionUtils.newHashMap(); + + public static String getText(final String name, final String[] textsTable) { + final Integer indexObj = sNameToIndexesMap.get(name); + if (indexObj == null) { + throw new RuntimeException("Unknown text name: " + name); + } + final int index = indexObj; + final String text = (index < textsTable.length) ? textsTable[index] : null; + return (text != null) ? text : LANGUAGE_DEFAULT[index]; + } + + public static String[] getTextsTable(final String language) { + final String[] textsTable = sLanguageToTextsMap.get(language); + return textsTable != null ? textsTable : LANGUAGE_DEFAULT; + } + + private static final String[] NAMES = { + /* 0 */ "more_keys_for_a", + /* 1 */ "more_keys_for_e", + /* 2 */ "more_keys_for_i", + /* 3 */ "more_keys_for_o", + /* 4 */ "more_keys_for_u", + /* 5 */ "more_keys_for_s", + /* 6 */ "more_keys_for_n", + /* 7 */ "more_keys_for_c", + /* 8 */ "more_keys_for_y", + /* 9 */ "more_keys_for_d", + /* 10 */ "more_keys_for_r", + /* 11 */ "more_keys_for_t", + /* 12 */ "more_keys_for_z", + /* 13 */ "more_keys_for_k", + /* 14 */ "more_keys_for_l", + /* 15 */ "more_keys_for_g", + /* 16 */ "more_keys_for_v", + /* 17 */ "more_keys_for_h", + /* 18 */ "more_keys_for_j", + /* 19 */ "more_keys_for_w", + /* 20 */ "keylabel_for_nordic_row1_11", + /* 21 */ "keylabel_for_nordic_row2_10", + /* 22 */ "keylabel_for_nordic_row2_11", + /* 23 */ "more_keys_for_nordic_row2_10", + /* 24 */ "more_keys_for_nordic_row2_11", + /* 25 */ "keylabel_for_east_slavic_row1_9", + /* 26 */ "keylabel_for_east_slavic_row1_12", + /* 27 */ "keylabel_for_east_slavic_row2_1", + /* 28 */ "keylabel_for_east_slavic_row2_11", + /* 29 */ "keylabel_for_east_slavic_row3_5", + /* 30 */ "more_keys_for_cyrillic_u", + /* 31 */ "more_keys_for_cyrillic_ka", + /* 32 */ "more_keys_for_cyrillic_en", + /* 33 */ "more_keys_for_cyrillic_ghe", + /* 34 */ "more_keys_for_east_slavic_row2_1", + /* 35 */ "more_keys_for_cyrillic_a", + /* 36 */ "more_keys_for_cyrillic_o", + /* 37 */ "more_keys_for_cyrillic_soft_sign", + /* 38 */ "more_keys_for_east_slavic_row2_11", + /* 39 */ "keylabel_for_south_slavic_row1_6", + /* 40 */ "keylabel_for_south_slavic_row2_11", + /* 41 */ "keylabel_for_south_slavic_row3_1", + /* 42 */ "keylabel_for_south_slavic_row3_8", + /* 43 */ "more_keys_for_cyrillic_ie", + /* 44 */ "more_keys_for_cyrillic_i", + /* 45 */ "keylabel_for_swiss_row1_11", + /* 46 */ "keylabel_for_swiss_row2_10", + /* 47 */ "keylabel_for_swiss_row2_11", + /* 48 */ "more_keys_for_swiss_row1_11", + /* 49 */ "more_keys_for_swiss_row2_10", + /* 50 */ "more_keys_for_swiss_row2_11", + /* 51 */ "label_to_alpha_key", + /* 52 */ "single_quotes", + /* 53 */ "double_quotes", + /* 54 */ "single_angle_quotes", + /* 55 */ "double_angle_quotes", + /* 56 */ "more_keys_for_currency_dollar", + /* 57 */ "keylabel_for_currency", + /* 58 */ "more_keys_for_currency", + /* 59 */ "more_keys_for_punctuation", + /* 60 */ "more_keys_for_tablet_punctuation", + /* 61 */ "more_keys_for_star", + /* 62 */ "more_keys_for_bullet", + /* 63 */ "more_keys_for_plus", + /* 64 */ "more_keys_for_left_parenthesis", + /* 65 */ "more_keys_for_right_parenthesis", + /* 66 */ "more_keys_for_less_than", + /* 67 */ "more_keys_for_greater_than", + /* 68 */ "more_keys_for_arabic_diacritics", + /* 69 */ "keylabel_for_symbols_1", + /* 70 */ "keylabel_for_symbols_2", + /* 71 */ "keylabel_for_symbols_3", + /* 72 */ "keylabel_for_symbols_4", + /* 73 */ "keylabel_for_symbols_5", + /* 74 */ "keylabel_for_symbols_6", + /* 75 */ "keylabel_for_symbols_7", + /* 76 */ "keylabel_for_symbols_8", + /* 77 */ "keylabel_for_symbols_9", + /* 78 */ "keylabel_for_symbols_0", + /* 79 */ "label_to_symbol_key", + /* 80 */ "label_to_symbol_with_microphone_key", + /* 81 */ "additional_more_keys_for_symbols_1", + /* 82 */ "additional_more_keys_for_symbols_2", + /* 83 */ "additional_more_keys_for_symbols_3", + /* 84 */ "additional_more_keys_for_symbols_4", + /* 85 */ "additional_more_keys_for_symbols_5", + /* 86 */ "additional_more_keys_for_symbols_6", + /* 87 */ "additional_more_keys_for_symbols_7", + /* 88 */ "additional_more_keys_for_symbols_8", + /* 89 */ "additional_more_keys_for_symbols_9", + /* 90 */ "additional_more_keys_for_symbols_0", + /* 91 */ "more_keys_for_symbols_1", + /* 92 */ "more_keys_for_symbols_2", + /* 93 */ "more_keys_for_symbols_3", + /* 94 */ "more_keys_for_symbols_4", + /* 95 */ "more_keys_for_symbols_5", + /* 96 */ "more_keys_for_symbols_6", + /* 97 */ "more_keys_for_symbols_7", + /* 98 */ "more_keys_for_symbols_8", + /* 99 */ "more_keys_for_symbols_9", + /* 100 */ "more_keys_for_symbols_0", + /* 101 */ "keylabel_for_comma", + /* 102 */ "more_keys_for_comma", + /* 103 */ "keylabel_for_tablet_comma", + /* 104 */ "keyhintlabel_for_tablet_comma", + /* 105 */ "more_keys_for_tablet_comma", + /* 106 */ "keylabel_for_period", + /* 107 */ "keyhintlabel_for_period", + /* 108 */ "more_keys_for_period", + /* 109 */ "keylabel_for_tablet_period", + /* 110 */ "keyhintlabel_for_tablet_period", + /* 111 */ "more_keys_for_tablet_period", + /* 112 */ "keylabel_for_symbols_question", + /* 113 */ "keylabel_for_symbols_semicolon", + /* 114 */ "keylabel_for_symbols_percent", + /* 115 */ "more_keys_for_exclamation", + /* 116 */ "more_keys_for_question", + /* 117 */ "more_keys_for_symbols_semicolon", + /* 118 */ "more_keys_for_symbols_percent", + /* 119 */ "more_keys_for_q", + /* 120 */ "more_keys_for_x", + /* 121 */ "keylabel_for_q", + /* 122 */ "keylabel_for_w", + /* 123 */ "keylabel_for_y", + /* 124 */ "keylabel_for_x", + /* 125 */ "keylabel_for_spanish_row2_10", + /* 126 */ "more_keys_for_am_pm", + /* 127 */ "settings_as_more_key", + /* 128 */ "shortcut_as_more_key", + /* 129 */ "action_next_as_more_key", + /* 130 */ "action_previous_as_more_key", + /* 131 */ "label_to_more_symbol_key", + /* 132 */ "label_to_more_symbol_for_tablet_key", + /* 133 */ "label_tab_key", + /* 134 */ "label_to_phone_numeric_key", + /* 135 */ "label_to_phone_symbols_key", + /* 136 */ "label_time_am", + /* 137 */ "label_time_pm", + /* 138 */ "keylabel_for_popular_domain", + /* 139 */ "more_keys_for_popular_domain", + /* 140 */ "single_laqm_raqm", + /* 141 */ "single_laqm_raqm_rtl", + /* 142 */ "single_raqm_laqm", + /* 143 */ "double_laqm_raqm", + /* 144 */ "double_laqm_raqm_rtl", + /* 145 */ "double_raqm_laqm", + /* 146 */ "single_lqm_rqm", + /* 147 */ "single_9qm_lqm", + /* 148 */ "single_9qm_rqm", + /* 149 */ "double_lqm_rqm", + /* 150 */ "double_9qm_lqm", + /* 151 */ "double_9qm_rqm", + /* 152 */ "more_keys_for_single_quote", + /* 153 */ "more_keys_for_double_quote", + /* 154 */ "more_keys_for_tablet_double_quote", + /* 155 */ "emoji_key_as_more_key", + }; + + private static final String EMPTY = ""; + + /* Default texts */ + private static final String[] LANGUAGE_DEFAULT = { + /* 0~ */ + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, + /* ~50 */ + // Label for "switch to alphabetic" key. + /* 51 */ "ABC", + /* 52 */ "!text/single_lqm_rqm", + /* 53 */ "!text/double_lqm_rqm", + /* 54 */ "!text/single_laqm_raqm", + /* 55 */ "!text/double_laqm_raqm", + // U+00A2: "¢" CENT SIGN + // U+00A3: "£" POUND SIGN + // U+20AC: "€" EURO SIGN + // U+00A5: "¥" YEN SIGN + // U+20B1: "₱" PESO SIGN + /* 56 */ "\u00A2,\u00A3,\u20AC,\u00A5,\u20B1", + /* 57 */ "$", + /* 58 */ "$,\u00A2,\u20AC,\u00A3,\u00A5,\u20B1", + /* 59 */ "!fixedColumnOrder!8,;,/,(,),#,!,\\,,?,&,\\%,+,\",-,:,',@", + /* 60 */ "!fixedColumnOrder!7,;,/,(,),#,',\\,,&,\\%,+,\",-,:,@", + // U+2020: "†" DAGGER + // U+2021: "‡" DOUBLE DAGGER + // U+2605: "★" BLACK STAR + /* 61 */ "\u2020,\u2021,\u2605", + // U+266A: "♪" EIGHTH NOTE + // U+2665: "♥" BLACK HEART SUIT + // U+2660: "♠" BLACK SPADE SUIT + // U+2666: "♦" BLACK DIAMOND SUIT + // U+2663: "♣" BLACK CLUB SUIT + /* 62 */ "\u266A,\u2665,\u2660,\u2666,\u2663", + // U+00B1: "±" PLUS-MINUS SIGN + /* 63 */ "\u00B1", + // The all letters need to be mirrored are found at + // http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt + /* 64 */ "!fixedColumnOrder!3,<,{,[", + /* 65 */ "!fixedColumnOrder!3,>,},]", + // U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK + // U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK + // U+2264: "≤" LESS-THAN OR EQUAL TO + // U+2265: "≥" GREATER-THAN EQUAL TO + // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK + // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK + /* 66 */ "!fixedColumnOrder!3,\u2039,\u2264,\u00AB", + /* 67 */ "!fixedColumnOrder!3,\u203A,\u2265,\u00BB", + /* 68 */ EMPTY, + /* 69 */ "1", + /* 70 */ "2", + /* 71 */ "3", + /* 72 */ "4", + /* 73 */ "5", + /* 74 */ "6", + /* 75 */ "7", + /* 76 */ "8", + /* 77 */ "9", + /* 78 */ "0", + // Label for "switch to symbols" key. + /* 79 */ "?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. + /* 80 */ "123", + /* 81~ */ + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, + /* ~90 */ + // 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 + /* 91 */ "\u00B9,\u00BD,\u2153,\u00BC,\u215B", + // U+00B2: "²" SUPERSCRIPT TWO + // U+2154: "⅔" VULGAR FRACTION TWO THIRDS + /* 92 */ "\u00B2,\u2154", + // U+00B3: "³" SUPERSCRIPT THREE + // U+00BE: "¾" VULGAR FRACTION THREE QUARTERS + // U+215C: "⅜" VULGAR FRACTION THREE EIGHTHS + /* 93 */ "\u00B3,\u00BE,\u215C", + // U+2074: "⁴" SUPERSCRIPT FOUR + /* 94 */ "\u2074", + // U+215D: "⅝" VULGAR FRACTION FIVE EIGHTHS + /* 95 */ "\u215D", + /* 96 */ EMPTY, + // U+215E: "⅞" VULGAR FRACTION SEVEN EIGHTHS + /* 97 */ "\u215E", + /* 98 */ EMPTY, + /* 99 */ EMPTY, + // U+207F: "ⁿ" SUPERSCRIPT LATIN SMALL LETTER N + // U+2205: "∅" EMPTY SET + /* 100 */ "\u207F,\u2205", + // Comma key + /* 101 */ ",", + /* 102 */ EMPTY, + /* 103 */ ",", + /* 104 */ EMPTY, + /* 105 */ EMPTY, + // Period key + /* 106 */ ".", + /* 107 */ EMPTY, + /* 108 */ "!text/more_keys_for_punctuation", + /* 109 */ ".", + /* 110 */ EMPTY, + /* 111 */ "!text/more_keys_for_tablet_punctuation", + /* 112 */ "?", + /* 113 */ ";", + /* 114 */ "%", + // U+00A1: "¡" INVERTED EXCLAMATION MARK + /* 115 */ "\u00A1", + // U+00BF: "¿" INVERTED QUESTION MARK + /* 116 */ "\u00BF", + /* 117 */ EMPTY, + // U+2030: "‰" PER MILLE SIGN + /* 118 */ "\u2030", + /* 119 */ EMPTY, + /* 120 */ EMPTY, + /* 121 */ "q", + /* 122 */ "w", + /* 123 */ "y", + /* 124 */ "x", + // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE + /* 125 */ "\u00F1", + /* 126 */ "!fixedColumnOrder!2,!hasLabels!,!text/label_time_am,!text/label_time_pm", + /* 127 */ "!icon/settings_key|!code/key_settings", + /* 128 */ "!icon/shortcut_key|!code/key_shortcut", + /* 129 */ "!hasLabels!,!text/label_next_key|!code/key_action_next", + /* 130 */ "!hasLabels!,!text/label_previous_key|!code/key_action_previous", + // Label for "switch to more symbol" modifier key ("= \ <"). Must be short to fit on key! + /* 131 */ "= \\\\ <", + // Label for "switch to more symbol" modifier key on tablets. Must be short to fit on key! + /* 132 */ "~ [ <", + // Label for "Tab" key. Must be short to fit on key! + /* 133 */ "Tab", + // Label for "switch to phone numeric" key. Must be short to fit on key! + /* 134 */ "123", + // Label for "switch to phone symbols" key. Must be short to fit on key! + // U+FF0A: "*" FULLWIDTH ASTERISK + // U+FF03: "#" FULLWIDTH NUMBER SIGN + /* 135 */ "\uFF0A\uFF03", + // Key label for "ante meridiem" + /* 136 */ "AM", + // Key label for "post meridiem" + /* 137 */ "PM", + /* 138 */ ".com", + // popular web domains for the locale - most popular, displayed on the keyboard + /* 139 */ "!hasLabels!,.net,.org,.gov,.edu", + // U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK + // U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK + // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK + // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK + // The following characters don't need BIDI mirroring. + // U+2018: "‘" LEFT SINGLE QUOTATION MARK + // U+2019: "’" RIGHT SINGLE QUOTATION MARK + // U+201A: "‚" SINGLE LOW-9 QUOTATION MARK + // U+201C: "“" LEFT DOUBLE QUOTATION MARK + // U+201D: "”" RIGHT DOUBLE QUOTATION MARK + // U+201E: "„" DOUBLE LOW-9 QUOTATION MARK + // Abbreviations are: + // laqm: LEFT-POINTING ANGLE QUOTATION MARK + // raqm: RIGHT-POINTING ANGLE QUOTATION MARK + // rtl: Right-To-Left script order + // lqm: LEFT QUOTATION MARK + // rqm: RIGHT QUOTATION MARK + // 9qm: LOW-9 QUOTATION MARK + // The following each quotation mark pair consist of + // <opening quotation mark>, <closing quotation mark> + // and is named after (single|double)_<opening quotation mark>_<closing quotation mark>. + /* 140 */ "\u2039,\u203A", + /* 141 */ "\u2039|\u203A,\u203A|\u2039", + /* 142 */ "\u203A,\u2039", + /* 143 */ "\u00AB,\u00BB", + /* 144 */ "\u00AB|\u00BB,\u00BB|\u00AB", + /* 145 */ "\u00BB,\u00AB", + // The following each quotation mark triplet consists of + // <another quotation mark>, <opening quotation mark>, <closing quotation mark> + // and is named after (single|double)_<opening quotation mark>_<closing quotation mark>. + /* 146 */ "\u201A,\u2018,\u2019", + /* 147 */ "\u2019,\u201A,\u2018", + /* 148 */ "\u2018,\u201A,\u2019", + /* 149 */ "\u201E,\u201C,\u201D", + /* 150 */ "\u201D,\u201E,\u201C", + /* 151 */ "\u201C,\u201E,\u201D", + /* 152 */ "!fixedColumnOrder!5,!text/single_quotes,!text/single_angle_quotes", + /* 153 */ "!fixedColumnOrder!5,!text/double_quotes,!text/double_angle_quotes", + /* 154 */ "!fixedColumnOrder!6,!text/double_quotes,!text/single_quotes,!text/double_angle_quotes,!text/single_angle_quotes", + /* 155 */ "!icon/emoji_key|!code/key_emoji", + }; + + /* Language af: Afrikaans */ + private static final String[] LANGUAGE_af = { + // This is the same as Dutch except more keys of y and demoting vowels with diaeresis. + // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE + // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX + // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS + // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE + // U+00E6: "æ" LATIN SMALL LETTER AE + // 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 + /* 0 */ "\u00E1,\u00E2,\u00E4,\u00E0,\u00E6,\u00E3,\u00E5,\u0101", + // 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 + // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE + // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON + /* 1 */ "\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 + // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX + // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK + // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON + // U+0133: "ij" LATIN SMALL LIGATURE IJ + /* 2 */ "\u00ED,\u00EC,\u00EF,\u00EE,\u012F,\u012B,\u0133", + // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE + // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX + // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS + // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE + // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE + // U+0153: "œ" LATIN SMALL LIGATURE OE + // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE + // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON + /* 3 */ "\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 + /* 4 */ "\u00FA,\u00FB,\u00FC,\u00F9,\u016B", + /* 5 */ null, + // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE + // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE + /* 6 */ "\u00F1,\u0144", + /* 7 */ null, + // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE + // U+0133: "ij" LATIN SMALL LIGATURE IJ + /* 8 */ "\u00FD,\u0133", + }; + + /* Language ar: Arabic */ + private static final String[] LANGUAGE_ar = { + /* 0~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, + /* ~50 */ + // Label for "switch to alphabetic" key. + // U+0623: "ا" ARABIC LETTER ALEF + // U+200C: ZERO WIDTH NON-JOINER + // U+0628: "ب" ARABIC LETTER BEH + // U+062C: "پ" ARABIC LETTER PEH + /* 51 */ "\u0623\u200C\u0628\u200C\u062C", + /* 52 */ null, + /* 53 */ null, + /* 54 */ "!text/single_laqm_raqm_rtl", + /* 55 */ "!text/double_laqm_raqm_rtl", + /* 56~ */ + null, null, null, + /* ~58 */ + /* 59 */ "!fixedColumnOrder!8,\",\',#,-,:,!,\u060C,\u061F,@,&,\\%,+,\u061B,/,(|),)|(", + /* 60 */ null, + // U+2605: "★" BLACK STAR + // U+066D: "٭" ARABIC FIVE POINTED STAR + /* 61 */ "\u2605,\u066D", + // U+266A: "♪" EIGHTH NOTE + /* 62 */ "\u266A", + /* 63 */ null, + // The all letters need to be mirrored are found at + // http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt + // U+FD3E: "﴾" ORNATE LEFT PARENTHESIS + // U+FD3F: "﴿" ORNATE RIGHT PARENTHESIS + /* 64 */ "!fixedColumnOrder!4,\uFD3E|\uFD3F,<|>,{|},[|]", + /* 65 */ "!fixedColumnOrder!4,\uFD3F|\uFD3E,>|<,}|{,]|[", + // U+2264: "≤" LESS-THAN OR EQUAL TO + // U+2265: "≥" GREATER-THAN EQUAL TO + // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK + // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK + // U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK + // U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK + /* 66 */ "!fixedColumnOrder!3,\u2039|\u203A,\u2264|\u2265,\u00AB|\u00BB", + /* 67 */ "!fixedColumnOrder!3,\u203A|\u2039,\u2265|\u2264,\u00BB|\u00AB", + // U+0655: "ٕ" ARABIC HAMZA BELOW + // U+0654: "ٔ" ARABIC HAMZA ABOVE + // U+0652: "ْ" ARABIC SUKUN + // U+064D: "ٍ" ARABIC KASRATAN + // U+064C: "ٌ" ARABIC DAMMATAN + // U+064B: "ً" ARABIC FATHATAN + // U+0651: "ّ" ARABIC SHADDA + // U+0656: "ٖ" ARABIC SUBSCRIPT ALEF + // U+0670: "ٰ" ARABIC LETTER SUPERSCRIPT ALEF + // U+0653: "ٓ" ARABIC MADDAH ABOVE + // U+0650: "ِ" ARABIC KASRA + // U+064F: "ُ" ARABIC DAMMA + // U+064E: "َ" ARABIC FATHA + // U+0640: "ـ" ARABIC TATWEEL + // In order to make Tatweel easily distinguishable from other punctuations, we use consecutive Tatweels only for its displayed label. + // Note: The space character is needed as a preceding letter to draw Arabic diacritics characters correctly. + /* 68 */ "!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+0661: "١" ARABIC-INDIC DIGIT ONE + /* 69 */ "\u0661", + // U+0662: "٢" ARABIC-INDIC DIGIT TWO + /* 70 */ "\u0662", + // U+0663: "٣" ARABIC-INDIC DIGIT THREE + /* 71 */ "\u0663", + // U+0664: "٤" ARABIC-INDIC DIGIT FOUR + /* 72 */ "\u0664", + // U+0665: "٥" ARABIC-INDIC DIGIT FIVE + /* 73 */ "\u0665", + // U+0666: "٦" ARABIC-INDIC DIGIT SIX + /* 74 */ "\u0666", + // U+0667: "٧" ARABIC-INDIC DIGIT SEVEN + /* 75 */ "\u0667", + // U+0668: "٨" ARABIC-INDIC DIGIT EIGHT + /* 76 */ "\u0668", + // U+0669: "٩" ARABIC-INDIC DIGIT NINE + /* 77 */ "\u0669", + // U+0660: "٠" ARABIC-INDIC DIGIT ZERO + /* 78 */ "\u0660", + // Label for "switch to symbols" key. + // U+061F: "؟" ARABIC QUESTION MARK + /* 79 */ "\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. + /* 80 */ "\u0663\u0662\u0661", + /* 81 */ "1", + /* 82 */ "2", + /* 83 */ "3", + /* 84 */ "4", + /* 85 */ "5", + /* 86 */ "6", + /* 87 */ "7", + /* 88 */ "8", + /* 89 */ "9", + // U+066B: "٫" ARABIC DECIMAL SEPARATOR + // U+066C: "٬" ARABIC THOUSANDS SEPARATOR + /* 90 */ "0,\u066B,\u066C", + /* 91~ */ + null, null, null, null, null, null, null, null, null, null, + /* ~100 */ + // U+060C: "،" ARABIC COMMA + /* 101 */ "\u060C", + /* 102 */ "\\,", + // U+061F: "؟" ARABIC QUESTION MARK + // U+060C: "،" ARABIC COMMA + // U+061B: "؛" ARABIC SEMICOLON + /* 103 */ "\u060C", + /* 104 */ "\u061F", + /* 105 */ "!fixedColumnOrder!4,:,!,\u061F,\u061B,-,/,\",\'", + /* 106 */ null, + // U+0651: "ّ" ARABIC SHADDA + /* 107 */ "\u0651", + /* 108 */ "!text/more_keys_for_arabic_diacritics", + /* 109 */ null, + /* 110 */ "\u0651", + /* 111 */ "!text/more_keys_for_arabic_diacritics", + /* 112 */ "\u061F", + /* 113 */ "\u061B", + // U+066A: "٪" ARABIC PERCENT SIGN + /* 114 */ "\u066A", + /* 115 */ null, + // U+00BF: "¿" INVERTED QUESTION MARK + /* 116 */ "?,\u00BF", + /* 117 */ ";", + // U+2030: "‰" PER MILLE SIGN + /* 118 */ "\\%,\u2030", + }; + + /* Language az_AZ: Azerbaijani (Azerbaijan) */ + private static final String[] LANGUAGE_az_AZ = { + // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX + /* 0 */ "\u00E2", + // U+0259: "ə" LATIN SMALL LETTER SCHWA + /* 1 */ "\u0259", + // U+0131: "ı" LATIN SMALL LETTER DOTLESS I + // 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 + /* 2 */ "\u0131,\u00EE,\u00EF,\u00EC,\u00ED,\u012F,\u012B", + // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS + // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX + // U+0153: "œ" LATIN SMALL LIGATURE OE + // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE + // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE + // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE + // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE + // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON + /* 3 */ "\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 + /* 4 */ "\u00FC,\u00FB,\u00F9,\u00FA,\u016B", + // 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 + /* 5 */ "\u015F,\u00DF,\u015B,\u0161", + /* 6 */ null, + // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA + // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE + // U+010D: "č" LATIN SMALL LETTER C WITH CARON + /* 7 */ "\u00E7,\u0107,\u010D", + /* 8~ */ + null, null, null, null, null, null, null, + /* ~14 */ + // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE + /* 15 */ "\u011F", + }; + + /* Language be_BY: Belarusian (Belarus) */ + private static final String[] LANGUAGE_be_BY = { + /* 0~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, + /* ~24 */ + // U+045E: "ў" CYRILLIC SMALL LETTER SHORT U + /* 25 */ "\u045E", + // U+0451: "ё" CYRILLIC SMALL LETTER IO + /* 26 */ "\u0451", + // U+044B: "ы" CYRILLIC SMALL LETTER YERU + /* 27 */ "\u044B", + // U+044D: "э" CYRILLIC SMALL LETTER E + /* 28 */ "\u044D", + // U+0456: "і" CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I + /* 29 */ "\u0456", + /* 30~ */ + null, null, null, null, null, null, null, + /* ~36 */ + // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN + /* 37 */ "\u044A", + /* 38~ */ + null, null, null, null, null, + /* ~42 */ + // U+0451: "ё" CYRILLIC SMALL LETTER IO + /* 43 */ "\u0451", + /* 44~ */ + null, null, null, null, null, null, null, + /* ~50 */ + // Label for "switch to alphabetic" key. + // U+0410: "А" CYRILLIC CAPITAL LETTER A + // U+0411: "Б" CYRILLIC CAPITAL LETTER BE + // U+0412: "В" CYRILLIC CAPITAL LETTER VE + /* 51 */ "\u0410\u0411\u0412", + /* 52 */ "!text/single_9qm_lqm", + /* 53 */ "!text/double_9qm_lqm", + }; + + /* Language bg: Bulgarian */ + private static final String[] LANGUAGE_bg = { + /* 0~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, + /* ~50 */ + // Label for "switch to alphabetic" key. + // U+0410: "А" CYRILLIC CAPITAL LETTER A + // U+0411: "Б" CYRILLIC CAPITAL LETTER BE + // U+0412: "В" CYRILLIC CAPITAL LETTER VE + /* 51 */ "\u0410\u0411\u0412", + /* 52 */ null, + // single_quotes of Bulgarian is default single_quotes_right_left. + /* 53 */ "!text/double_9qm_lqm", + }; + + /* Language ca: Catalan */ + private static final String[] LANGUAGE_ca = { + // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE + // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE + // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS + // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX + // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE + // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE + // U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK + // U+00E6: "æ" LATIN SMALL LETTER AE + // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON + // U+00AA: "ª" FEMININE ORDINAL INDICATOR + /* 0 */ "\u00E0,\u00E1,\u00E4,\u00E2,\u00E3,\u00E5,\u0105,\u00E6,\u0101,\u00AA", + // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE + // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE + // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS + // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX + // 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 + /* 1 */ "\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 + /* 2 */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B", + // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE + // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE + // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS + // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX + // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE + // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE + // U+0153: "œ" LATIN SMALL LIGATURE OE + // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON + // U+00BA: "º" MASCULINE ORDINAL INDICATOR + /* 3 */ "\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 + /* 4 */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B", + /* 5 */ null, + // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE + // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE + /* 6 */ "\u00F1,\u0144", + // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA + // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE + // U+010D: "č" LATIN SMALL LETTER C WITH CARON + /* 7 */ "\u00E7,\u0107,\u010D", + /* 8~ */ + null, null, null, null, null, null, + /* ~13 */ + // U+00B7: "·" MIDDLE DOT + // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE + /* 14 */ "l\u00B7l,\u0142", + /* 15~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, + /* ~58 */ + // U+00B7: "·" MIDDLE DOT + /* 59 */ "!fixedColumnOrder!9,;,/,(,),#,\u00B7,!,\\,,?,&,\\%,+,\",-,:,',@", + /* 60 */ "!fixedColumnOrder!8,;,/,(,),#,\u00B7,',\\,,&,\\%,+,\",-,:,@", + /* 61~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, + /* ~124 */ + // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA + /* 125 */ "\u00E7", + }; + + /* Language cs: Czech */ + private static final String[] LANGUAGE_cs = { + // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE + // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE + // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX + // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS + // U+00E6: "æ" LATIN SMALL LETTER AE + // 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 + /* 0 */ "\u00E1,\u00E0,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101", + // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE + // U+011B: "ě" LATIN SMALL LETTER E WITH CARON + // 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 + // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE + // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON + /* 1 */ "\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 + /* 2 */ "\u00ED,\u00EE,\u00EF,\u00EC,\u012F,\u012B", + // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE + // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS + // 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+00F8: "ø" LATIN SMALL LETTER O WITH STROKE + // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON + /* 3 */ "\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 + /* 4 */ "\u00FA,\u016F,\u00FB,\u00FC,\u00F9,\u016B", + // U+0161: "š" LATIN SMALL LETTER S WITH CARON + // U+00DF: "ß" LATIN SMALL LETTER SHARP S + // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE + /* 5 */ "\u0161,\u00DF,\u015B", + // U+0148: "ň" LATIN SMALL LETTER N WITH CARON + // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE + // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE + /* 6 */ "\u0148,\u00F1,\u0144", + // U+010D: "č" LATIN SMALL LETTER C WITH CARON + // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA + // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE + /* 7 */ "\u010D,\u00E7,\u0107", + // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE + // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS + /* 8 */ "\u00FD,\u00FF", + // U+010F: "ď" LATIN SMALL LETTER D WITH CARON + /* 9 */ "\u010F", + // U+0159: "ř" LATIN SMALL LETTER R WITH CARON + /* 10 */ "\u0159", + // U+0165: "ť" LATIN SMALL LETTER T WITH CARON + /* 11 */ "\u0165", + // 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 + /* 12 */ "\u017E,\u017A,\u017C", + /* 13~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, + /* ~51 */ + /* 52 */ "!text/single_9qm_lqm", + /* 53 */ "!text/double_9qm_lqm", + /* 54 */ "!text/single_raqm_laqm", + /* 55 */ "!text/double_raqm_laqm", + }; + + /* Language da: Danish */ + private static final String[] LANGUAGE_da = { + // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE + // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS + // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE + // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX + // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE + // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON + /* 0 */ "\u00E1,\u00E4,\u00E0,\u00E2,\u00E3,\u0101", + // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE + // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS + /* 1 */ "\u00E9,\u00EB", + // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE + // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS + /* 2 */ "\u00ED,\u00EF", + // 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 + /* 3 */ "\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 + /* 4 */ "\u00FA,\u00FC,\u00FB,\u00F9,\u016B", + // U+00DF: "ß" LATIN SMALL LETTER SHARP S + // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE + // U+0161: "š" LATIN SMALL LETTER S WITH CARON + /* 5 */ "\u00DF,\u015B,\u0161", + // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE + // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE + /* 6 */ "\u00F1,\u0144", + /* 7 */ null, + // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE + // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS + /* 8 */ "\u00FD,\u00FF", + // U+00F0: "ð" LATIN SMALL LETTER ETH + /* 9 */ "\u00F0", + /* 10~ */ + null, null, null, null, + /* ~13 */ + // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE + /* 14 */ "\u0142", + /* 15~ */ + null, null, null, null, null, + /* ~19 */ + // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE + /* 20 */ "\u00E5", + // U+00E6: "æ" LATIN SMALL LETTER AE + /* 21 */ "\u00E6", + // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE + /* 22 */ "\u00F8", + // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS + /* 23 */ "\u00E4", + // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS + /* 24 */ "\u00F6", + /* 25~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, + /* ~51 */ + /* 52 */ "!text/single_9qm_lqm", + /* 53 */ "!text/double_9qm_lqm", + /* 54 */ "!text/single_raqm_laqm", + /* 55 */ "!text/double_raqm_laqm", + }; + + /* Language de: German */ + private static final String[] LANGUAGE_de = { + // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS + // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX + // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE + // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE + // U+00E6: "æ" LATIN SMALL LETTER AE + // 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 + /* 0 */ "\u00E4,\u00E2,\u00E0,\u00E1,\u00E6,\u00E3,\u00E5,\u0101", + // 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 + /* 1 */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0117", + /* 2 */ null, + // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS + // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX + // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE + // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE + // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE + // U+0153: "œ" LATIN SMALL LIGATURE OE + // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE + // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON + /* 3 */ "\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 + /* 4 */ "\u00FC,\u00FB,\u00F9,\u00FA,\u016B", + // U+00DF: "ß" LATIN SMALL LETTER SHARP S + // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE + // U+0161: "š" LATIN SMALL LETTER S WITH CARON + /* 5 */ "\u00DF,\u015B,\u0161", + // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE + // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE + /* 6 */ "\u00F1,\u0144", + /* 7~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, + /* ~44 */ + // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS + /* 45 */ "\u00FC", + // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS + /* 46 */ "\u00F6", + // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS + /* 47 */ "\u00E4", + // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE + /* 48 */ "\u00E8", + // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE + /* 49 */ "\u00E9", + // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE + /* 50 */ "\u00E0", + /* 51 */ null, + /* 52 */ "!text/single_9qm_lqm", + /* 53 */ "!text/double_9qm_lqm", + /* 54 */ "!text/single_raqm_laqm", + /* 55 */ "!text/double_raqm_laqm", + }; + + /* Language el: Greek */ + private static final String[] LANGUAGE_el = { + /* 0~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, + /* ~50 */ + // Label for "switch to alphabetic" key. + // U+0391: "Α" GREEK CAPITAL LETTER ALPHA + // U+0392: "Β" GREEK CAPITAL LETTER BETA + // U+0393: "Γ" GREEK CAPITAL LETTER GAMMA + /* 51 */ "\u0391\u0392\u0393", + }; + + /* Language en: English */ + private static final String[] LANGUAGE_en = { + // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE + // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE + // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX + // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS + // U+00E6: "æ" LATIN SMALL LETTER AE + // 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 + /* 0 */ "\u00E0,\u00E1,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101", + // 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 + /* 1 */ "\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 + /* 2 */ "\u00EE,\u00EF,\u00ED,\u012B,\u00EC", + // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX + // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS + // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE + // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE + // U+0153: "œ" LATIN SMALL LIGATURE OE + // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE + // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON + // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE + /* 3 */ "\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 + /* 4 */ "\u00FB,\u00FC,\u00F9,\u00FA,\u016B", + // U+00DF: "ß" LATIN SMALL LETTER SHARP S + /* 5 */ "\u00DF", + // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE + /* 6 */ "\u00F1", + // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA + /* 7 */ "\u00E7", + }; + + /* Language eo: Esperanto */ + private static final String[] LANGUAGE_eo = { + // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE + // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE + // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX + // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS + // U+00E6: "æ" LATIN SMALL LETTER AE + // 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 + // U+0103: "ă" LATIN SMALL LETTER A WITH BREVE + // U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK + // U+00AA: "ª" FEMININE ORDINAL INDICATOR + /* 0 */ "\u00E1,\u00E0,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101,\u0103,\u0105,\u00AA", + // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE + // U+011B: "ě" LATIN SMALL LETTER E WITH CARON + // 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 + // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE + // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON + /* 1 */ "\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+0129: "ĩ" LATIN SMALL LETTER I WITH TILDE + // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE + // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK + // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON + // U+0131: "ı" LATIN SMALL LETTER DOTLESS I + // U+0133: "ij" LATIN SMALL LIGATURE IJ + /* 2 */ "\u00ED,\u00EE,\u00EF,\u0129,\u00EC,\u012F,\u012B,\u0131,\u0133", + // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE + // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS + // 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+00F8: "ø" LATIN SMALL LETTER O WITH STROKE + // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON + // U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE + // U+00BA: "º" MASCULINE ORDINAL INDICATOR + /* 3 */ "\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 + // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS + // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE + // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON + // U+0169: "ũ" LATIN SMALL LETTER U WITH TILDE + // U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE + // U+0173: "ų" LATIN SMALL LETTER U WITH OGONEK + // U+00B5: "µ" MICRO SIGN + /* 4 */ "\u00FA,\u016F,\u00FB,\u00FC,\u00F9,\u016B,\u0169,\u0171,\u0173,\u00B5", + // 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 + /* 5 */ "\u00DF,\u0161,\u015B,\u0219,\u015F", + // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE + // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE + // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA + // U+0148: "ň" LATIN SMALL LETTER N WITH CARON + // U+0149: "ʼn" LATIN SMALL LETTER N PRECEDED BY APOSTROPHE + // U+014B: "ŋ" LATIN SMALL LETTER ENG + /* 6 */ "\u00F1,\u0144,\u0146,\u0148,\u0149,\u014B", + // 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 + /* 7 */ "\u0107,\u010D,\u00E7,\u010B", + // 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 + /* 8 */ "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 + /* 9 */ "\u00F0,\u010F,\u0111", + // U+0159: "ř" LATIN SMALL LETTER R WITH CARON + // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE + // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA + /* 10 */ "\u0159,\u0155,\u0157", + // 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 + /* 11 */ "\u0165,\u021B,\u0163,\u0167", + // 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 + /* 12 */ "\u017A,\u017C,\u017E", + // U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA + // U+0138: "ĸ" LATIN SMALL LETTER KRA + /* 13 */ "\u0137,\u0138", + // 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 + /* 14 */ "\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 + /* 15 */ "\u011F,\u0121,\u0123", + // U+0175: "ŵ" LATIN SMALL LETTER W WITH CIRCUMFLEX + /* 16 */ "w,\u0175", + // U+0125: "ĥ" LATIN SMALL LETTER H WITH CIRCUMFLEX + // U+0127: "ħ" LATIN SMALL LETTER H WITH STROKE + /* 17 */ "\u0125,\u0127", + /* 18 */ null, + // U+0175: "ŵ" LATIN SMALL LETTER W WITH CIRCUMFLEX + /* 19 */ "w,\u0175", + /* 20~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, + /* ~118 */ + /* 119 */ "q", + /* 120 */ "x", + // U+015D: "ŝ" LATIN SMALL LETTER S WITH CIRCUMFLEX + /* 121 */ "\u015D", + // U+011D: "ĝ" LATIN SMALL LETTER G WITH CIRCUMFLEX + /* 122 */ "\u011D", + // U+016D: "ŭ" LATIN SMALL LETTER U WITH BREVE + /* 123 */ "\u016D", + // U+0109: "ĉ" LATIN SMALL LETTER C WITH CIRCUMFLEX + /* 124 */ "\u0109", + // U+0135: "ĵ" LATIN SMALL LETTER J WITH CIRCUMFLEX + /* 125 */ "\u0135", + }; + + /* Language es: Spanish */ + private static final String[] LANGUAGE_es = { + // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE + // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE + // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS + // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX + // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE + // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE + // U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK + // U+00E6: "æ" LATIN SMALL LETTER AE + // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON + // U+00AA: "ª" FEMININE ORDINAL INDICATOR + /* 0 */ "\u00E1,\u00E0,\u00E4,\u00E2,\u00E3,\u00E5,\u0105,\u00E6,\u0101,\u00AA", + // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE + // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE + // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS + // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX + // 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 + /* 1 */ "\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 + /* 2 */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B", + // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE + // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE + // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS + // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX + // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE + // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE + // U+0153: "œ" LATIN SMALL LIGATURE OE + // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON + // U+00BA: "º" MASCULINE ORDINAL INDICATOR + /* 3 */ "\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 + /* 4 */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B", + /* 5 */ null, + // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE + // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE + /* 6 */ "\u00F1,\u0144", + // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA + // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE + // U+010D: "č" LATIN SMALL LETTER C WITH CARON + /* 7 */ "\u00E7,\u0107,\u010D", + /* 8~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, + /* ~58 */ + // U+00A1: "¡" INVERTED EXCLAMATION MARK + // U+00BF: "¿" INVERTED QUESTION MARK + /* 59 */ "!fixedColumnOrder!9,\u00A1,;,/,(,),#,!,\\,,?,\u00BF,&,\\%,+,\",-,:,',@", + }; + + /* Language et_EE: Estonian (Estonia) */ + private static final String[] LANGUAGE_et_EE = { + // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS + // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON + // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE + // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE + // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX + // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE + // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE + // U+00E6: "æ" LATIN SMALL LETTER AE + // U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK + /* 0 */ "\u00E4,\u0101,\u00E0,\u00E1,\u00E2,\u00E3,\u00E5,\u00E6,\u0105", + // 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 + // 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+0119: "ę" LATIN SMALL LETTER E WITH OGONEK + // U+011B: "ě" LATIN SMALL LETTER E WITH CARON + /* 1 */ "\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 + // 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+0131: "ı" LATIN SMALL LETTER DOTLESS I + /* 2 */ "\u012B,\u00EC,\u012F,\u00ED,\u00EE,\u00EF,\u0131", + // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS + // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE + // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE + // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE + // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX + // U+0153: "œ" LATIN SMALL LIGATURE OE + // U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE + // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE + /* 3 */ "\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 + // 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+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE + // U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE + /* 4 */ "\u00FC,\u016B,\u0173,\u00F9,\u00FA,\u00FB,\u016F,\u0171", + // 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 + /* 5 */ "\u0161,\u00DF,\u015B,\u015F", + // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA + // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE + // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE + // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE + /* 6 */ "\u0146,\u00F1,\u0144,\u0144", + // U+010D: "č" LATIN SMALL LETTER C WITH CARON + // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA + // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE + /* 7 */ "\u010D,\u00E7,\u0107", + // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE + // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS + /* 8 */ "\u00FD,\u00FF", + // U+010F: "ď" LATIN SMALL LETTER D WITH CARON + /* 9 */ "\u010F", + // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA + // U+0159: "ř" LATIN SMALL LETTER R WITH CARON + // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE + /* 10 */ "\u0157,\u0159,\u0155", + // U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA + // U+0165: "ť" LATIN SMALL LETTER T WITH CARON + /* 11 */ "\u0163,\u0165", + // 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 + /* 12 */ "\u017E,\u017C,\u017A", + // U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA + /* 13 */ "\u0137", + // 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 + /* 14 */ "\u013C,\u0142,\u013A,\u013E", + // U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA + // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE + /* 15 */ "\u0123,\u011F", + /* 16~ */ + null, null, null, null, + /* ~19 */ + // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS + /* 20 */ "\u00FC", + // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS + /* 21 */ "\u00F6", + // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS + /* 22 */ "\u00E4", + // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE + /* 23 */ "\u00F5", + /* 24~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, + /* ~51 */ + /* 52 */ "!text/single_9qm_lqm", + /* 53 */ "!text/double_9qm_lqm", + }; + + /* Language fa: Persian */ + private static final String[] LANGUAGE_fa = { + /* 0~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, + /* ~50 */ + // Label for "switch to alphabetic" key. + // U+0627: "ا" ARABIC LETTER ALEF + // U+200C: ZERO WIDTH NON-JOINER + // U+0628: "ب" ARABIC LETTER BEH + // U+067E: "پ" ARABIC LETTER PEH + /* 51 */ "\u0627\u200C\u0628\u200C\u067E", + /* 52 */ null, + /* 53 */ null, + /* 54 */ "!text/single_laqm_raqm_rtl", + /* 55 */ "!text/double_laqm_raqm_rtl", + /* 56 */ null, + // U+FDFC: "﷼" RIAL SIGN + /* 57 */ "\uFDFC", + /* 58 */ null, + // U+061F: "؟" ARABIC QUESTION MARK + // U+060C: "،" ARABIC COMMA + // U+061B: "؛" ARABIC SEMICOLON + /* 59 */ "!fixedColumnOrder!8,\",\',#,-,:,!,\u060C,\u061F,@,&,\\%,+,\u061B,/,(|),)|(", + /* 60 */ null, + // U+2605: "★" BLACK STAR + // U+066D: "٭" ARABIC FIVE POINTED STAR + /* 61 */ "\u2605,\u066D", + // U+266A: "♪" EIGHTH NOTE + /* 62 */ "\u266A", + /* 63 */ null, + // The all letters need to be mirrored are found at + // http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt + // U+FD3E: "﴾" ORNATE LEFT PARENTHESIS + // U+FD3F: "﴿" ORNATE RIGHT PARENTHESIS + /* 64 */ "!fixedColumnOrder!4,\uFD3E|\uFD3F,<|>,{|},[|]", + /* 65 */ "!fixedColumnOrder!4,\uFD3F|\uFD3E,>|<,}|{,]|[", + // U+2264: "≤" LESS-THAN OR EQUAL TO + // U+2265: "≥" GREATER-THAN EQUAL TO + // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK + // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK + // U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK + // U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK + /* 66 */ "!fixedColumnOrder!3,\u2039|\u203A,\u2264|\u2265,<|>", + /* 67 */ "!fixedColumnOrder!3,\u203A|\u2039,\u2265|\u2264,>|<", + // U+0655: "ٕ" ARABIC HAMZA BELOW + // U+0652: "ْ" ARABIC SUKUN + // U+0651: "ّ" ARABIC SHADDA + // U+064C: "ٌ" ARABIC DAMMATAN + // U+064D: "ٍ" ARABIC KASRATAN + // U+064B: "ً" ARABIC FATHATAN + // U+0654: "ٔ" ARABIC HAMZA ABOVE + // U+0656: "ٖ" ARABIC SUBSCRIPT ALEF + // U+0670: "ٰ" ARABIC LETTER SUPERSCRIPT ALEF + // U+0653: "ٓ" ARABIC MADDAH ABOVE + // U+064F: "ُ" ARABIC DAMMA + // U+0650: "ِ" ARABIC KASRA + // U+064E: "َ" ARABIC FATHA + // U+0640: "ـ" ARABIC TATWEEL + // In order to make Tatweel easily distinguishable from other punctuations, we use consecutive Tatweels only for its displayed label. + // Note: The space character is needed as a preceding letter to draw Arabic diacritics characters correctly. + /* 68 */ "!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+06F1: "۱" EXTENDED ARABIC-INDIC DIGIT ONE + /* 69 */ "\u06F1", + // U+06F2: "۲" EXTENDED ARABIC-INDIC DIGIT TWO + /* 70 */ "\u06F2", + // U+06F3: "۳" EXTENDED ARABIC-INDIC DIGIT THREE + /* 71 */ "\u06F3", + // U+06F4: "۴" EXTENDED ARABIC-INDIC DIGIT FOUR + /* 72 */ "\u06F4", + // U+06F5: "۵" EXTENDED ARABIC-INDIC DIGIT FIVE + /* 73 */ "\u06F5", + // U+06F6: "۶" EXTENDED ARABIC-INDIC DIGIT SIX + /* 74 */ "\u06F6", + // U+06F7: "۷" EXTENDED ARABIC-INDIC DIGIT SEVEN + /* 75 */ "\u06F7", + // U+06F8: "۸" EXTENDED ARABIC-INDIC DIGIT EIGHT + /* 76 */ "\u06F8", + // U+06F9: "۹" EXTENDED ARABIC-INDIC DIGIT NINE + /* 77 */ "\u06F9", + // U+06F0: "۰" EXTENDED ARABIC-INDIC DIGIT ZERO + /* 78 */ "\u06F0", + // Label for "switch to symbols" key. + // U+061F: "؟" ARABIC QUESTION MARK + /* 79 */ "\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. + /* 80 */ "\u06F3\u06F2\u06F1", + /* 81 */ "1", + /* 82 */ "2", + /* 83 */ "3", + /* 84 */ "4", + /* 85 */ "5", + /* 86 */ "6", + /* 87 */ "7", + /* 88 */ "8", + /* 89 */ "9", + // U+066B: "٫" ARABIC DECIMAL SEPARATOR + // U+066C: "٬" ARABIC THOUSANDS SEPARATOR + /* 90 */ "0,\u066B,\u066C", + /* 91~ */ + null, null, null, null, null, null, null, null, null, null, + /* ~100 */ + // U+060C: "،" ARABIC COMMA + /* 101 */ "\u060C", + /* 102 */ "\\,", + // U+060C: "،" ARABIC COMMA + // U+061B: "؛" ARABIC SEMICOLON + // U+061F: "؟" ARABIC QUESTION MARK + // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK + // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK + /* 103 */ "\u060C", + /* 104 */ "\u061F", + /* 105 */ "!fixedColumnOrder!4,:,!,\u061F,\u061B,-,/,\u00AB|\u00BB,\u00BB|\u00AB", + /* 106 */ null, + // U+064B: "ً" ARABIC FATHATAN + /* 107 */ "\u064B", + /* 108 */ "!text/more_keys_for_arabic_diacritics", + /* 109 */ null, + /* 110 */ "\u064B", + /* 111 */ "!text/more_keys_for_arabic_diacritics", + /* 112 */ "\u061F", + /* 113 */ "\u061B", + // U+066A: "٪" ARABIC PERCENT SIGN + /* 114 */ "\u066A", + /* 115 */ null, + // U+00BF: "¿" INVERTED QUESTION MARK + /* 116 */ "?,\u00BF", + /* 117 */ ";", + // U+2030: "‰" PER MILLE SIGN + /* 118 */ "\\%,\u2030", + }; + + /* Language fi: Finnish */ + private static final String[] LANGUAGE_fi = { + // U+00E6: "æ" LATIN SMALL LETTER AE + // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE + // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE + // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX + // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE + // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON + /* 0 */ "\u00E6,\u00E0,\u00E1,\u00E2,\u00E3,\u0101", + /* 1 */ null, + /* 2 */ null, + // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE + // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX + // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE + // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE + // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE + // U+0153: "œ" LATIN SMALL LIGATURE OE + // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON + /* 3 */ "\u00F8,\u00F4,\u00F2,\u00F3,\u00F5,\u0153,\u014D", + // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS + /* 4 */ "\u00FC", + // U+0161: "š" LATIN SMALL LETTER S WITH CARON + // U+00DF: "ß" LATIN SMALL LETTER SHARP S + // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE + /* 5 */ "\u0161,\u00DF,\u015B", + /* 6~ */ + null, null, null, null, null, null, + /* ~11 */ + // 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 + /* 12 */ "\u017E,\u017A,\u017C", + /* 13~ */ + null, null, null, null, null, null, null, + /* ~19 */ + // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE + /* 20 */ "\u00E5", + // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS + /* 21 */ "\u00F6", + // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS + /* 22 */ "\u00E4", + // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE + /* 23 */ "\u00F8", + // U+00E6: "æ" LATIN SMALL LETTER AE + /* 24 */ "\u00E6", + }; + + /* Language fr: French */ + private static final String[] LANGUAGE_fr = { + // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE + // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX + // U+00E6: "æ" LATIN SMALL LETTER AE + // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE + // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS + // 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 + // U+00AA: "ª" FEMININE ORDINAL INDICATOR + /* 0 */ "\u00E0,\u00E2,%,\u00E6,\u00E1,\u00E4,\u00E3,\u00E5,\u0101,\u00AA", + // 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 + // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE + // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON + /* 1 */ "\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 + /* 2 */ "\u00EE,%,\u00EF,\u00EC,\u00ED,\u012F,\u012B", + // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX + // U+0153: "œ" LATIN SMALL LIGATURE OE + // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS + // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE + // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE + // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE + // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE + // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON + // U+00BA: "º" MASCULINE ORDINAL INDICATOR + /* 3 */ "\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 + /* 4 */ "\u00F9,\u00FB,%,\u00FC,\u00FA,\u016B", + /* 5 */ null, + /* 6 */ null, + // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA + // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE + // U+010D: "č" LATIN SMALL LETTER C WITH CARON + /* 7 */ "\u00E7,\u0107,\u010D", + // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS + /* 8 */ "%,\u00FF", + /* 9~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, + /* ~44 */ + // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE + /* 45 */ "\u00E8", + // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE + /* 46 */ "\u00E9", + // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE + /* 47 */ "\u00E0", + // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS + /* 48 */ "\u00FC", + // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS + /* 49 */ "\u00F6", + // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS + /* 50 */ "\u00E4", + }; + + /* Language hi: Hindi */ + private static final String[] LANGUAGE_hi = { + /* 0~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, + /* ~50 */ + // Label for "switch to alphabetic" key. + // U+0915: "क" DEVANAGARI LETTER KA + // U+0916: "ख" DEVANAGARI LETTER KHA + // U+0917: "ग" DEVANAGARI LETTER GA + /* 51 */ "\u0915\u0916\u0917", + /* 52~ */ + null, null, null, null, null, + /* ~56 */ + // U+20B9: "₹" INDIAN RUPEE SIGN + /* 57 */ "\u20B9", + /* 58~ */ + null, null, null, null, null, null, null, null, null, null, null, + /* ~68 */ + // U+0967: "१" DEVANAGARI DIGIT ONE + /* 69 */ "\u0967", + // U+0968: "२" DEVANAGARI DIGIT TWO + /* 70 */ "\u0968", + // U+0969: "३" DEVANAGARI DIGIT THREE + /* 71 */ "\u0969", + // U+096A: "४" DEVANAGARI DIGIT FOUR + /* 72 */ "\u096A", + // U+096B: "५" DEVANAGARI DIGIT FIVE + /* 73 */ "\u096B", + // U+096C: "६" DEVANAGARI DIGIT SIX + /* 74 */ "\u096C", + // U+096D: "७" DEVANAGARI DIGIT SEVEN + /* 75 */ "\u096D", + // U+096E: "८" DEVANAGARI DIGIT EIGHT + /* 76 */ "\u096E", + // U+096F: "९" DEVANAGARI DIGIT NINE + /* 77 */ "\u096F", + // U+0966: "०" DEVANAGARI DIGIT ZERO + /* 78 */ "\u0966", + // Label for "switch to symbols" key. + /* 79 */ "?\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. + /* 80 */ "\u0967\u0968\u0969", + /* 81 */ "1", + /* 82 */ "2", + /* 83 */ "3", + /* 84 */ "4", + /* 85 */ "5", + /* 86 */ "6", + /* 87 */ "7", + /* 88 */ "8", + /* 89 */ "9", + /* 90 */ "0", + }; + + /* Language hr: Croatian */ + private static final String[] LANGUAGE_hr = { + /* 0~ */ + null, null, null, null, null, + /* ~4 */ + // U+0161: "š" LATIN SMALL LETTER S WITH CARON + // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE + // U+00DF: "ß" LATIN SMALL LETTER SHARP S + /* 5 */ "\u0161,\u015B,\u00DF", + // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE + // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE + /* 6 */ "\u00F1,\u0144", + // U+010D: "č" LATIN SMALL LETTER C WITH CARON + // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE + // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA + /* 7 */ "\u010D,\u0107,\u00E7", + /* 8 */ null, + // U+0111: "đ" LATIN SMALL LETTER D WITH STROKE + /* 9 */ "\u0111", + /* 10 */ null, + /* 11 */ 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 + /* 12 */ "\u017E,\u017A,\u017C", + /* 13~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, + /* ~51 */ + /* 52 */ "!text/single_9qm_rqm", + /* 53 */ "!text/double_9qm_rqm", + /* 54 */ "!text/single_raqm_laqm", + /* 55 */ "!text/double_raqm_laqm", + }; + + /* Language hu: Hungarian */ + private static final String[] LANGUAGE_hu = { + // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE + // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE + // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX + // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS + // U+00E6: "æ" LATIN SMALL LETTER AE + // 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 + /* 0 */ "\u00E1,\u00E0,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101", + // 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 + // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE + // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON + /* 1 */ "\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 + /* 2 */ "\u00ED,\u00EE,\u00EF,\u00EC,\u012F,\u012B", + // 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 + // 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+00F8: "ø" LATIN SMALL LETTER O WITH STROKE + // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON + /* 3 */ "\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 + /* 4 */ "\u00FA,\u00FC,\u0171,\u00FB,\u00F9,\u016B", + /* 5~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, + /* ~51 */ + /* 52 */ "!text/single_9qm_rqm", + /* 53 */ "!text/double_9qm_rqm", + /* 54 */ "!text/single_raqm_laqm", + /* 55 */ "!text/double_raqm_laqm", + }; + + /* Language hy_AM: Armenian (Armenia) */ + private static final String[] LANGUAGE_hy_AM = { + /* 0~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, + /* ~58 */ + // U+058A: "֊" ARMENIAN HYPHEN + // U+055C: "՜" ARMENIAN EXCLAMATION MARK + // U+055D: "՝" ARMENIAN COMMA + // U+055E: "՞" ARMENIAN QUESTION MARK + // U+0559: "ՙ" ARMENIAN MODIFIER LETTER LEFT HALF RING + // U+055A: "՚" ARMENIAN APOSTROPHE + // U+055B: "՛" ARMENIAN EMPHASIS MARK + // U+055F: "՟" ARMENIAN ABBREVIATION MARK + /* 59 */ "!fixedColumnOrder!8,!,?,\u0559,\u055A,.,\u055C,\\,,\u055E,:,;,\u055F,\u00AB,\u00BB,\u058A,\u055D,\u055B", + /* 60~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, + /* ~102 */ + // U+058F: "֏" ARMENIAN DRAM SIGN + // TODO: Enable this when we have glyph for the following letter + // <string name="keylabel_for_currency">֏</string> + // + // U+055D: "՝" ARMENIAN COMMA + /* 103 */ "\u055D", + /* 104 */ null, + /* 105 */ null, + // U+0589: "։" ARMENIAN FULL STOP + /* 106 */ "\u0589", + /* 107 */ null, + /* 108 */ null, + /* 109 */ "\u0589", + /* 110 */ null, + /* 111 */ "!text/more_keys_for_punctuation", + /* 112~ */ + null, null, null, + /* ~114 */ + // U+055C: "՜" ARMENIAN EXCLAMATION MARK + // U+00A1: "¡" INVERTED EXCLAMATION MARK + /* 115 */ "\u055C,\u00A1", + // U+055E: "՞" ARMENIAN QUESTION MARK + // U+00BF: "¿" INVERTED QUESTION MARK + /* 116 */ "\u055E,\u00BF", + }; + + /* Language is: Icelandic */ + private static final String[] LANGUAGE_is = { + // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE + // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS + // U+00E6: "æ" LATIN SMALL LETTER AE + // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE + // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE + // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX + // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE + // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON + /* 0 */ "\u00E1,\u00E4,\u00E6,\u00E5,\u00E0,\u00E2,\u00E3,\u0101", + // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE + // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS + // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE + // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX + // 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 + /* 1 */ "\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 + /* 2 */ "\u00ED,\u00EF,\u00EE,\u00EC,\u012F,\u012B", + // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE + // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS + // 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+00F8: "ø" LATIN SMALL LETTER O WITH STROKE + // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON + /* 3 */ "\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 + /* 4 */ "\u00FA,\u00FC,\u00FB,\u00F9,\u016B", + /* 5~ */ + null, null, null, + /* ~7 */ + // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE + // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS + /* 8 */ "\u00FD,\u00FF", + // U+00F0: "ð" LATIN SMALL LETTER ETH + /* 9 */ "\u00F0", + /* 10 */ null, + // U+00FE: "þ" LATIN SMALL LETTER THORN + /* 11 */ "\u00FE", + /* 12~ */ + null, null, null, null, null, null, null, null, + /* ~19 */ + // U+00F0: "ð" LATIN SMALL LETTER ETH + /* 20 */ "\u00F0", + // U+00E6: "æ" LATIN SMALL LETTER AE + /* 21 */ "\u00E6", + // U+00FE: "þ" LATIN SMALL LETTER THORN + /* 22 */ "\u00FE", + /* 23~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, + /* ~51 */ + /* 52 */ "!text/single_9qm_lqm", + /* 53 */ "!text/double_9qm_lqm", + }; + + /* Language it: Italian */ + private static final String[] LANGUAGE_it = { + // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE + // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE + // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX + // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS + // U+00E6: "æ" LATIN SMALL LETTER AE + // 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 + // U+00AA: "ª" FEMININE ORDINAL INDICATOR + /* 0 */ "\u00E0,\u00E1,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101,\u00AA", + // 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+0119: "ę" LATIN SMALL LETTER E WITH OGONEK + // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE + // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON + /* 1 */ "\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 + /* 2 */ "\u00EC,\u00ED,\u00EE,\u00EF,\u012F,\u012B", + // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE + // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE + // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX + // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS + // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE + // U+0153: "œ" LATIN SMALL LIGATURE OE + // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE + // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON + // U+00BA: "º" MASCULINE ORDINAL INDICATOR + /* 3 */ "\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 + /* 4 */ "\u00F9,\u00FA,\u00FB,\u00FC,\u016B", + }; + + /* Language iw: Hebrew */ + private static final String[] LANGUAGE_iw = { + /* 0~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, + /* ~50 */ + // Label for "switch to alphabetic" key. + // U+05D0: "א" HEBREW LETTER ALEF + // U+05D1: "ב" HEBREW LETTER BET + // U+05D2: "ג" HEBREW LETTER GIMEL + /* 51 */ "\u05D0\u05D1\u05D2", + // The following characters don't need BIDI mirroring. + // U+2018: "‘" LEFT SINGLE QUOTATION MARK + // U+2019: "’" RIGHT SINGLE QUOTATION MARK + // U+201A: "‚" SINGLE LOW-9 QUOTATION MARK + // U+201C: "“" LEFT DOUBLE QUOTATION MARK + // U+201D: "”" RIGHT DOUBLE QUOTATION MARK + // U+201E: "„" DOUBLE LOW-9 QUOTATION MARK + /* 52 */ "\u2018,\u2019,\u201A", + /* 53 */ "\u201C,\u201D,\u201E", + /* 54 */ "!text/single_laqm_raqm_rtl", + /* 55 */ "!text/double_laqm_raqm_rtl", + /* 56 */ null, + // U+20AA: "₪" NEW SHEQEL SIGN + /* 57 */ "\u20AA", + /* 58 */ null, + /* 59 */ "!fixedColumnOrder!8,;,/,(|),)|(,#,!,\\,,?,&,\\%,+,\",-,:,',@", + /* 60 */ "!fixedColumnOrder!7,;,/,(|),)|(,#,',\\,,&,\\%,+,\",-,:,@", + // U+2605: "★" BLACK STAR + /* 61 */ "\u2605", + /* 62 */ null, + // U+00B1: "±" PLUS-MINUS SIGN + // U+FB29: "﬩" HEBREW LETTER ALTERNATIVE PLUS SIGN + /* 63 */ "\u00B1,\uFB29", + // The all letters need to be mirrored are found at + // http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt + /* 64 */ "!fixedColumnOrder!3,<|>,{|},[|]", + /* 65 */ "!fixedColumnOrder!3,>|<,}|{,]|[", + // 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 + /* 66 */ "!fixedColumnOrder!3,\u2039|\u203A,\u2264|\u2265,\u00AB|\u00BB", + /* 67 */ "!fixedColumnOrder!3,\u203A|\u2039,\u2265|\u2264,\u00BB|\u00AB", + }; + + /* Language ka_GE: Georgian (Georgia) */ + private static final String[] LANGUAGE_ka_GE = { + /* 0~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, + /* ~50 */ + // Label for "switch to alphabetic" key. + // U+10D0: "ა" GEORGIAN LETTER AN + // U+10D1: "ბ" GEORGIAN LETTER BAN + // U+10D2: "გ" GEORGIAN LETTER GAN + /* 51 */ "\u10D0\u10D1\u10D2", + /* 52 */ "!text/single_9qm_lqm", + /* 53 */ "!text/double_9qm_lqm", + }; + + /* Language kk: Kazakh */ + private static final String[] LANGUAGE_kk = { + /* 0~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, + /* ~24 */ + // U+0449: "щ" CYRILLIC SMALL LETTER SHCHA + /* 25 */ "\u0449", + // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN + /* 26 */ "\u044A", + // U+044B: "ы" CYRILLIC SMALL LETTER YERU + /* 27 */ "\u044B", + // U+044D: "э" CYRILLIC SMALL LETTER E + /* 28 */ "\u044D", + // U+0438: "и" CYRILLIC SMALL LETTER I + /* 29 */ "\u0438", + // U+04AF: "ү" CYRILLIC SMALL LETTER STRAIGHT U + // U+04B1: "ұ" CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE + /* 30 */ "\u04AF,\u04B1", + // U+049B: "қ" CYRILLIC SMALL LETTER KA WITH DESCENDER + /* 31 */ "\u049B", + // U+04A3: "ң" CYRILLIC SMALL LETTER EN WITH DESCENDER + /* 32 */ "\u04A3", + // U+0493: "ғ" CYRILLIC SMALL LETTER GHE WITH STROKE + /* 33 */ "\u0493", + // U+0456: "і" CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I + /* 34 */ "\u0456", + // U+04D9: "ә" CYRILLIC SMALL LETTER SCHWA + /* 35 */ "\u04D9", + // U+04E9: "ө" CYRILLIC SMALL LETTER BARRED O + /* 36 */ "\u04E9", + // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN + /* 37 */ "\u044A", + // U+04BB: "һ" CYRILLIC SMALL LETTER SHHA + /* 38 */ "\u04BB", + /* 39~ */ + null, null, null, null, + /* ~42 */ + // U+0451: "ё" CYRILLIC SMALL LETTER IO + /* 43 */ "\u0451", + /* 44~ */ + null, null, null, null, null, null, null, + /* ~50 */ + // Label for "switch to alphabetic" key. + // U+0410: "А" CYRILLIC CAPITAL LETTER A + // U+0411: "Б" CYRILLIC CAPITAL LETTER BE + // U+0412: "В" CYRILLIC CAPITAL LETTER VE + /* 51 */ "\u0410\u0411\u0412", + }; + + /* Language km_KH: Khmer (Cambodia) */ + private static final String[] LANGUAGE_km_KH = { + /* 0~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, + /* ~50 */ + // Label for "switch to alphabetic" key. + // U+1780: "ក" KHMER LETTER KA + // U+1781: "ខ" KHMER LETTER KHA + // U+1782: "គ" KHMER LETTER KO + /* 51 */ "\u1780\u1781\u1782", + /* 52~ */ + null, null, null, null, + /* ~55 */ + // U+17DB: "៛" KHMER CURRENCY SYMBOL RIEL + /* 56 */ "\u17DB,\u00A2,\u00A3,\u20AC,\u00A5,\u20B1", + }; + + /* Language ky: Kirghiz */ + private static final String[] LANGUAGE_ky = { + /* 0~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, + /* ~24 */ + // U+0449: "щ" CYRILLIC SMALL LETTER SHCHA + /* 25 */ "\u0449", + // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN + /* 26 */ "\u044A", + // U+044B: "ы" CYRILLIC SMALL LETTER YERU + /* 27 */ "\u044B", + // U+044D: "э" CYRILLIC SMALL LETTER E + /* 28 */ "\u044D", + // U+0438: "и" CYRILLIC SMALL LETTER I + /* 29 */ "\u0438", + // U+04AF: "ү" CYRILLIC SMALL LETTER STRAIGHT U + /* 30 */ "\u04AF", + /* 31 */ null, + // U+04A3: "ң" CYRILLIC SMALL LETTER EN WITH DESCENDER + /* 32 */ "\u04A3", + /* 33~ */ + null, null, null, + /* ~35 */ + // U+04E9: "ө" CYRILLIC SMALL LETTER BARRED O + /* 36 */ "\u04E9", + // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN + /* 37 */ "\u044A", + /* 38~ */ + null, null, null, null, null, + /* ~42 */ + // U+0451: "ё" CYRILLIC SMALL LETTER IO + /* 43 */ "\u0451", + /* 44~ */ + null, null, null, null, null, null, null, + /* ~50 */ + // Label for "switch to alphabetic" key. + // U+0410: "А" CYRILLIC CAPITAL LETTER A + // U+0411: "Б" CYRILLIC CAPITAL LETTER BE + // U+0412: "В" CYRILLIC CAPITAL LETTER VE + /* 51 */ "\u0410\u0411\u0412", + }; + + /* Language lo_LA: Lao (Laos) */ + private static final String[] LANGUAGE_lo_LA = { + /* 0~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, + /* ~50 */ + // Label for "switch to alphabetic" key. + // U+0E81: "ກ" LAO LETTER KO + // U+0E82: "ຂ" LAO LETTER KHO SUNG + // U+0E84: "ຄ" LAO LETTER KHO TAM + /* 51 */ "\u0E81\u0E82\u0E84", + /* 52~ */ + null, null, null, null, null, + /* ~56 */ + // U+20AD: "₭" KIP SIGN + /* 57 */ "\u20AD", + }; + + /* Language lt: Lithuanian */ + private static final String[] LANGUAGE_lt = { + // U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK + // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS + // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON + // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE + // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE + // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX + // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE + // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE + // U+00E6: "æ" LATIN SMALL LETTER AE + /* 0 */ "\u0105,\u00E4,\u0101,\u00E0,\u00E1,\u00E2,\u00E3,\u00E5,\u00E6", + // 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 + // 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+011B: "ě" LATIN SMALL LETTER E WITH CARON + /* 1 */ "\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 + // 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+0131: "ı" LATIN SMALL LETTER DOTLESS I + /* 2 */ "\u012F,\u012B,\u00EC,\u00ED,\u00EE,\u00EF,\u0131", + // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS + // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE + // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE + // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE + // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX + // U+0153: "œ" LATIN SMALL LIGATURE OE + // U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE + // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE + /* 3 */ "\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 + // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON + // 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+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE + // U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE + /* 4 */ "\u016B,\u0173,\u00FC,\u016B,\u00F9,\u00FA,\u00FB,\u016F,\u0171", + // 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 + /* 5 */ "\u0161,\u00DF,\u015B,\u015F", + // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA + // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE + // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE + // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE + /* 6 */ "\u0146,\u00F1,\u0144,\u0144", + // U+010D: "č" LATIN SMALL LETTER C WITH CARON + // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA + // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE + /* 7 */ "\u010D,\u00E7,\u0107", + // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE + // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS + /* 8 */ "\u00FD,\u00FF", + // U+010F: "ď" LATIN SMALL LETTER D WITH CARON + /* 9 */ "\u010F", + // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA + // U+0159: "ř" LATIN SMALL LETTER R WITH CARON + // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE + /* 10 */ "\u0157,\u0159,\u0155", + // U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA + // U+0165: "ť" LATIN SMALL LETTER T WITH CARON + /* 11 */ "\u0163,\u0165", + // 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 + /* 12 */ "\u017E,\u017C,\u017A", + // U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA + /* 13 */ "\u0137", + // 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 + /* 14 */ "\u013C,\u0142,\u013A,\u013E", + // U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA + // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE + /* 15 */ "\u0123,\u011F", + /* 16~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, + /* ~51 */ + /* 52 */ "!text/single_9qm_lqm", + /* 53 */ "!text/double_9qm_lqm", + }; + + /* Language lv: Latvian */ + private static final String[] LANGUAGE_lv = { + // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON + // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE + // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE + // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX + // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE + // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS + // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE + // U+00E6: "æ" LATIN SMALL LETTER AE + // U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK + /* 0 */ "\u0101,\u00E0,\u00E1,\u00E2,\u00E3,\u00E4,\u00E5,\u00E6,\u0105", + // 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 + // 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+0119: "ę" LATIN SMALL LETTER E WITH OGONEK + // U+011B: "ě" LATIN SMALL LETTER E WITH CARON + /* 1 */ "\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 + // 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+0131: "ı" LATIN SMALL LETTER DOTLESS I + /* 2 */ "\u012B,\u012F,\u00EC,\u00ED,\u00EE,\u00EF,\u0131", + // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE + // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE + // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX + // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE + // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS + // U+0153: "œ" LATIN SMALL LIGATURE OE + // U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE + // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE + /* 3 */ "\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 + // 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+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE + // U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE + /* 4 */ "\u016B,\u0173,\u00F9,\u00FA,\u00FB,\u00FC,\u016F,\u0171", + // 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 + /* 5 */ "\u0161,\u00DF,\u015B,\u015F", + // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA + // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE + // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE + // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE + /* 6 */ "\u0146,\u00F1,\u0144,\u0144", + // U+010D: "č" LATIN SMALL LETTER C WITH CARON + // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA + // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE + /* 7 */ "\u010D,\u00E7,\u0107", + // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE + // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS + /* 8 */ "\u00FD,\u00FF", + // U+010F: "ď" LATIN SMALL LETTER D WITH CARON + /* 9 */ "\u010F", + // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA + // U+0159: "ř" LATIN SMALL LETTER R WITH CARON + // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE + /* 10 */ "\u0157,\u0159,\u0155", + // U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA + // U+0165: "ť" LATIN SMALL LETTER T WITH CARON + /* 11 */ "\u0163,\u0165", + // 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 + /* 12 */ "\u017E,\u017C,\u017A", + // U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA + /* 13 */ "\u0137", + // 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 + /* 14 */ "\u013C,\u0142,\u013A,\u013E", + // U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA + // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE + /* 15 */ "\u0123,\u011F", + /* 16~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, + /* ~51 */ + /* 52 */ "!text/single_9qm_lqm", + /* 53 */ "!text/double_9qm_lqm", + }; + + /* Language mk: Macedonian */ + private static final String[] LANGUAGE_mk = { + /* 0~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, + /* ~38 */ + // U+0455: "ѕ" CYRILLIC SMALL LETTER DZE + /* 39 */ "\u0455", + // U+045C: "ќ" CYRILLIC SMALL LETTER KJE + /* 40 */ "\u045C", + // U+0437: "з" CYRILLIC SMALL LETTER ZE + /* 41 */ "\u0437", + // U+0453: "ѓ" CYRILLIC SMALL LETTER GJE + /* 42 */ "\u0453", + // U+0450: "ѐ" CYRILLIC SMALL LETTER IE WITH GRAVE + /* 43 */ "\u0450", + // U+045D: "ѝ" CYRILLIC SMALL LETTER I WITH GRAVE + /* 44 */ "\u045D", + /* 45~ */ + null, null, null, null, null, null, + /* ~50 */ + // Label for "switch to alphabetic" key. + // U+0410: "А" CYRILLIC CAPITAL LETTER A + // U+0411: "Б" CYRILLIC CAPITAL LETTER BE + // U+0412: "В" CYRILLIC CAPITAL LETTER VE + /* 51 */ "\u0410\u0411\u0412", + /* 52 */ "!text/single_9qm_lqm", + /* 53 */ "!text/double_9qm_lqm", + }; + + /* Language mn_MN: Mongolian (Mongolia) */ + private static final String[] LANGUAGE_mn_MN = { + /* 0~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, + /* ~50 */ + // Label for "switch to alphabetic" key. + // U+0410: "А" CYRILLIC CAPITAL LETTER A + // U+0411: "Б" CYRILLIC CAPITAL LETTER BE + // U+0412: "В" CYRILLIC CAPITAL LETTER VE + /* 51 */ "\u0410\u0411\u0412", + /* 52~ */ + null, null, null, null, null, + /* ~56 */ + // U+20AE: "₮" TUGRIK SIGN + /* 57 */ "\u20AE", + }; + + /* Language nb: Norwegian Bokmål */ + private static final String[] LANGUAGE_nb = { + // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE + // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS + // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE + // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX + // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE + // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON + /* 0 */ "\u00E0,\u00E4,\u00E1,\u00E2,\u00E3,\u0101", + // 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 + // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE + // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON + /* 1 */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0119,\u0117,\u0113", + /* 2 */ null, + // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX + // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE + // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE + // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS + // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE + // U+0153: "œ" LATIN SMALL LIGATURE OE + // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON + /* 3 */ "\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 + /* 4 */ "\u00FC,\u00FB,\u00F9,\u00FA,\u016B", + /* 5~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + /* ~19 */ + // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE + /* 20 */ "\u00E5", + // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE + /* 21 */ "\u00F8", + // U+00E6: "æ" LATIN SMALL LETTER AE + /* 22 */ "\u00E6", + // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS + /* 23 */ "\u00F6", + // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS + /* 24 */ "\u00E4", + /* 25~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, + /* ~51 */ + /* 52 */ "!text/single_9qm_rqm", + /* 53 */ "!text/double_9qm_rqm", + }; + + /* Language ne_NP: Nepali (Nepal) */ + private static final String[] LANGUAGE_ne_NP = { + /* 0~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, + /* ~50 */ + // Label for "switch to alphabetic" key. + // U+0915: "क" DEVANAGARI LETTER KA + // U+0916: "ख" DEVANAGARI LETTER KHA + // U+0917: "ग" DEVANAGARI LETTER GA + /* 51 */ "\u0915\u0916\u0917", + /* 52~ */ + null, null, null, null, null, + /* ~56 */ + // U+0930/U+0941/U+002E "रु." NEPALESE RUPEE SIGN + /* 57 */ "\u0930\u0941.", + /* 58~ */ + null, null, null, null, null, null, null, null, null, null, null, + /* ~68 */ + // U+0967: "१" DEVANAGARI DIGIT ONE + /* 69 */ "\u0967", + // U+0968: "२" DEVANAGARI DIGIT TWO + /* 70 */ "\u0968", + // U+0969: "३" DEVANAGARI DIGIT THREE + /* 71 */ "\u0969", + // U+096A: "४" DEVANAGARI DIGIT FOUR + /* 72 */ "\u096A", + // U+096B: "५" DEVANAGARI DIGIT FIVE + /* 73 */ "\u096B", + // U+096C: "६" DEVANAGARI DIGIT SIX + /* 74 */ "\u096C", + // U+096D: "७" DEVANAGARI DIGIT SEVEN + /* 75 */ "\u096D", + // U+096E: "८" DEVANAGARI DIGIT EIGHT + /* 76 */ "\u096E", + // U+096F: "९" DEVANAGARI DIGIT NINE + /* 77 */ "\u096F", + // U+0966: "०" DEVANAGARI DIGIT ZERO + /* 78 */ "\u0966", + // Label for "switch to symbols" key. + /* 79 */ "?\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. + /* 80 */ "\u0967\u0968\u0969", + /* 81 */ "1", + /* 82 */ "2", + /* 83 */ "3", + /* 84 */ "4", + /* 85 */ "5", + /* 86 */ "6", + /* 87 */ "7", + /* 88 */ "8", + /* 89 */ "9", + /* 90 */ "0", + }; + + /* Language nl: Dutch */ + private static final String[] LANGUAGE_nl = { + // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE + // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS + // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX + // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE + // U+00E6: "æ" LATIN SMALL LETTER AE + // 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 + /* 0 */ "\u00E1,\u00E4,\u00E2,\u00E0,\u00E6,\u00E3,\u00E5,\u0101", + // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE + // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS + // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX + // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE + // 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 + /* 1 */ "\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 + // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX + // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK + // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON + // U+0133: "ij" LATIN SMALL LIGATURE IJ + /* 2 */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B,\u0133", + // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE + // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS + // 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+00F8: "ø" LATIN SMALL LETTER O WITH STROKE + // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON + /* 3 */ "\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 + /* 4 */ "\u00FA,\u00FC,\u00FB,\u00F9,\u016B", + /* 5 */ null, + // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE + // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE + /* 6 */ "\u00F1,\u0144", + /* 7 */ null, + // U+0133: "ij" LATIN SMALL LIGATURE IJ + /* 8 */ "\u0133", + /* 9~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, + /* ~51 */ + /* 52 */ "!text/single_9qm_rqm", + /* 53 */ "!text/double_9qm_rqm", + }; + + /* Language pl: Polish */ + private static final String[] LANGUAGE_pl = { + // U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK + // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE + // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE + // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX + // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS + // U+00E6: "æ" LATIN SMALL LETTER AE + // 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 + /* 0 */ "\u0105,\u00E1,\u00E0,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101", + // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK + // 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+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE + // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON + /* 1 */ "\u0119,\u00E8,\u00E9,\u00EA,\u00EB,\u0117,\u0113", + /* 2 */ null, + // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE + // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS + // 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+00F8: "ø" LATIN SMALL LETTER O WITH STROKE + // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON + /* 3 */ "\u00F3,\u00F6,\u00F4,\u00F2,\u00F5,\u0153,\u00F8,\u014D", + /* 4 */ null, + // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE + // U+00DF: "ß" LATIN SMALL LETTER SHARP S + // U+0161: "š" LATIN SMALL LETTER S WITH CARON + /* 5 */ "\u015B,\u00DF,\u0161", + // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE + // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE + /* 6 */ "\u0144,\u00F1", + // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE + // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA + // U+010D: "č" LATIN SMALL LETTER C WITH CARON + /* 7 */ "\u0107,\u00E7,\u010D", + /* 8~ */ + null, null, null, null, + /* ~11 */ + // 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 + /* 12 */ "\u017C,\u017A,\u017E", + /* 13 */ null, + // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE + /* 14 */ "\u0142", + /* 15~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, + /* ~51 */ + /* 52 */ "!text/single_9qm_rqm", + /* 53 */ "!text/double_9qm_rqm", + }; + + /* Language pt: Portuguese */ + private static final String[] LANGUAGE_pt = { + // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE + // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE + // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE + // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX + // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS + // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE + // U+00E6: "æ" LATIN SMALL LETTER AE + // U+00AA: "ª" FEMININE ORDINAL INDICATOR + /* 0 */ "\u00E1,\u00E3,\u00E0,\u00E2,\u00E4,\u00E5,\u00E6,\u00AA", + // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE + // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX + // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE + // 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 + // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS + /* 1 */ "\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 + /* 2 */ "\u00ED,\u00EE,\u00EC,\u00EF,\u012F,\u012B", + // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE + // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE + // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX + // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE + // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS + // U+0153: "œ" LATIN SMALL LIGATURE OE + // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE + // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON + // U+00BA: "º" MASCULINE ORDINAL INDICATOR + /* 3 */ "\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 + /* 4 */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B", + /* 5 */ null, + /* 6 */ null, + // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA + // U+010D: "č" LATIN SMALL LETTER C WITH CARON + // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE + /* 7 */ "\u00E7,\u010D,\u0107", + }; + + /* Language rm: Raeto-Romance */ + private static final String[] LANGUAGE_rm = { + /* 0~ */ + null, null, null, + /* ~2 */ + // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE + // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE + // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS + // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX + // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE + // U+0153: "œ" LATIN SMALL LIGATURE OE + // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE + /* 3 */ "\u00F2,\u00F3,\u00F6,\u00F4,\u00F5,\u0153,\u00F8", + }; + + /* Language ro: Romanian */ + private static final String[] LANGUAGE_ro = { + // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX + // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE + // U+0103: "ă" LATIN SMALL LETTER A WITH BREVE + // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE + // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE + // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS + // U+00E6: "æ" LATIN SMALL LETTER AE + // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE + // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON + /* 0 */ "\u00E2,\u00E3,\u0103,\u00E0,\u00E1,\u00E4,\u00E6,\u00E5,\u0101", + /* 1 */ null, + // 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 + /* 2 */ "\u00EE,\u00EF,\u00EC,\u00ED,\u012F,\u012B", + /* 3 */ null, + /* 4 */ 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 + /* 5 */ "\u0219,\u00DF,\u015B,\u0161", + /* 6~ */ + null, null, null, null, null, + /* ~10 */ + // U+021B: "ț" LATIN SMALL LETTER T WITH COMMA BELOW + /* 11 */ "\u021B", + /* 12~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, + /* ~51 */ + /* 52 */ "!text/single_9qm_rqm", + /* 53 */ "!text/double_9qm_rqm", + }; + + /* Language ru: Russian */ + private static final String[] LANGUAGE_ru = { + /* 0~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, + /* ~24 */ + // U+0449: "щ" CYRILLIC SMALL LETTER SHCHA + /* 25 */ "\u0449", + // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN + /* 26 */ "\u044A", + // U+044B: "ы" CYRILLIC SMALL LETTER YERU + /* 27 */ "\u044B", + // U+044D: "э" CYRILLIC SMALL LETTER E + /* 28 */ "\u044D", + // U+0438: "и" CYRILLIC SMALL LETTER I + /* 29 */ "\u0438", + /* 30~ */ + null, null, null, null, null, null, null, + /* ~36 */ + // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN + /* 37 */ "\u044A", + /* 38~ */ + null, null, null, null, null, + /* ~42 */ + // U+0451: "ё" CYRILLIC SMALL LETTER IO + /* 43 */ "\u0451", + /* 44~ */ + null, null, null, null, null, null, null, + /* ~50 */ + // Label for "switch to alphabetic" key. + // U+0410: "А" CYRILLIC CAPITAL LETTER A + // U+0411: "Б" CYRILLIC CAPITAL LETTER BE + // U+0412: "В" CYRILLIC CAPITAL LETTER VE + /* 51 */ "\u0410\u0411\u0412", + /* 52 */ "!text/single_9qm_lqm", + /* 53 */ "!text/double_9qm_lqm", + }; + + /* Language sk: Slovak */ + private static final String[] LANGUAGE_sk = { + // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE + // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS + // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON + // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE + // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX + // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE + // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE + // U+00E6: "æ" LATIN SMALL LETTER AE + // U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK + /* 0 */ "\u00E1,\u00E4,\u0101,\u00E0,\u00E2,\u00E3,\u00E5,\u00E6,\u0105", + // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE + // U+011B: "ě" LATIN SMALL LETTER E WITH CARON + // 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 + // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX + // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS + // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK + /* 1 */ "\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 + // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE + // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX + // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS + // U+0131: "ı" LATIN SMALL LETTER DOTLESS I + /* 2 */ "\u00ED,\u012B,\u012F,\u00EC,\u00EE,\u00EF,\u0131", + // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX + // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE + // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS + // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE + // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE + // U+0153: "œ" LATIN SMALL LIGATURE OE + // U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE + // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE + /* 3 */ "\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 + // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON + // U+0173: "ų" LATIN SMALL LETTER U WITH OGONEK + // 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 + /* 4 */ "\u00FA,\u016F,\u00FC,\u016B,\u0173,\u00F9,\u00FB,\u0171", + // 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 + /* 5 */ "\u0161,\u00DF,\u015B,\u015F", + // 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 + // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE + /* 6 */ "\u0148,\u0146,\u00F1,\u0144,\u0144", + // U+010D: "č" LATIN SMALL LETTER C WITH CARON + // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA + // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE + /* 7 */ "\u010D,\u00E7,\u0107", + // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE + // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS + /* 8 */ "\u00FD,\u00FF", + // U+010F: "ď" LATIN SMALL LETTER D WITH CARON + /* 9 */ "\u010F", + // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE + // U+0159: "ř" LATIN SMALL LETTER R WITH CARON + // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA + /* 10 */ "\u0155,\u0159,\u0157", + // U+0165: "ť" LATIN SMALL LETTER T WITH CARON + // U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA + /* 11 */ "\u0165,\u0163", + // 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 + /* 12 */ "\u017E,\u017C,\u017A", + // U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA + /* 13 */ "\u0137", + // 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 + /* 14 */ "\u013E,\u013A,\u013C,\u0142", + // U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA + // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE + /* 15 */ "\u0123,\u011F", + /* 16~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, + /* ~51 */ + /* 52 */ "!text/single_9qm_lqm", + /* 53 */ "!text/double_9qm_lqm", + /* 54 */ "!text/single_raqm_laqm", + /* 55 */ "!text/double_raqm_laqm", + }; + + /* Language sl: Slovenian */ + private static final String[] LANGUAGE_sl = { + /* 0~ */ + null, null, null, null, null, + /* ~4 */ + // U+0161: "š" LATIN SMALL LETTER S WITH CARON + /* 5 */ "\u0161", + /* 6 */ null, + // U+010D: "č" LATIN SMALL LETTER C WITH CARON + // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE + /* 7 */ "\u010D,\u0107", + /* 8 */ null, + // U+0111: "đ" LATIN SMALL LETTER D WITH STROKE + /* 9 */ "\u0111", + /* 10 */ null, + /* 11 */ null, + // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON + /* 12 */ "\u017E", + /* 13~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, + /* ~51 */ + /* 52 */ "!text/single_9qm_lqm", + /* 53 */ "!text/double_9qm_lqm", + /* 54 */ "!text/single_raqm_laqm", + /* 55 */ "!text/double_raqm_laqm", + }; + + /* Language sr: Serbian */ + private static final String[] LANGUAGE_sr = { + /* 0~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, + /* ~38 */ + // 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> + // 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> + // U+010F: "ď" LATIN SMALL LETTER D WITH CARON + // <string name="more_keys_for_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> + // END: More keys definitions for Serbian (Latin) + // BEGIN: More keys definitions for Serbian (Cyrillic) + // U+0437: "з" CYRILLIC SMALL LETTER ZE + /* 39 */ "\u0437", + // U+045B: "ћ" CYRILLIC SMALL LETTER TSHE + /* 40 */ "\u045B", + // U+0455: "ѕ" CYRILLIC SMALL LETTER DZE + /* 41 */ "\u0455", + // U+0452: "ђ" CYRILLIC SMALL LETTER DJE + /* 42 */ "\u0452", + // U+0450: "ѐ" CYRILLIC SMALL LETTER IE WITH GRAVE + /* 43 */ "\u0450", + // U+045D: "ѝ" CYRILLIC SMALL LETTER I WITH GRAVE + /* 44 */ "\u045D", + /* 45~ */ + null, null, null, null, null, null, + /* ~50 */ + // 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 + /* 51 */ "\u0410\u0411\u0412", + /* 52 */ "!text/single_9qm_lqm", + /* 53 */ "!text/double_9qm_lqm", + /* 54 */ "!text/single_raqm_laqm", + /* 55 */ "!text/double_raqm_laqm", + }; + + /* Language sv: Swedish */ + private static final String[] LANGUAGE_sv = { + // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE + // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE + // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX + // U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK + // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE + /* 0 */ "\u00E1,\u00E0,\u00E2,\u0105,\u00E3", + // 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 + /* 1 */ "\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 + /* 2 */ "\u00ED,\u00EC,\u00EE,\u00EF", + // 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 + /* 3 */ "\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 + /* 4 */ "\u00FC,\u00FA,\u00F9,\u00FB,\u016B", + // 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 + /* 5 */ "\u015B,\u0161,\u015F,\u00DF", + // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE + // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE + // U+0148: "ň" LATIN SMALL LETTER N WITH CARON + /* 6 */ "\u0144,\u00F1,\u0148", + // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA + // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE + // U+010D: "č" LATIN SMALL LETTER C WITH CARON + /* 7 */ "\u00E7,\u0107,\u010D", + // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE + // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS + // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS + /* 8 */ "\u00FD,\u00FF,\u00FC", + // U+00F0: "ð" LATIN SMALL LETTER ETH + // U+010F: "ď" LATIN SMALL LETTER D WITH CARON + /* 9 */ "\u00F0,\u010F", + // U+0159: "ř" LATIN SMALL LETTER R WITH CARON + /* 10 */ "\u0159", + // U+0165: "ť" LATIN SMALL LETTER T WITH CARON + // U+00FE: "þ" LATIN SMALL LETTER THORN + /* 11 */ "\u0165,\u00FE", + // 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 + /* 12 */ "\u017A,\u017E,\u017C", + /* 13 */ null, + // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE + /* 14 */ "\u0142", + /* 15~ */ + null, null, null, null, null, + /* ~19 */ + // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE + /* 20 */ "\u00E5", + // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS + /* 21 */ "\u00F6", + // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS + /* 22 */ "\u00E4", + // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE + // U+0153: "œ" LATIN SMALL LIGATURE OE + /* 23 */ "\u00F8,\u0153", + // U+00E6: "æ" LATIN SMALL LETTER AE + /* 24 */ "\u00E6", + /* 25~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, + /* ~53 */ + /* 54 */ "!text/single_raqm_laqm", + /* 55 */ "!text/double_raqm_laqm", + }; + + /* Language sw: Swahili */ + private static final String[] LANGUAGE_sw = { + // This is the same as English except more_keys_for_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 + // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS + // U+00E6: "æ" LATIN SMALL LETTER AE + // 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 + /* 0 */ "\u00E0,\u00E1,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101", + // 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 + /* 1 */ "\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 + /* 2 */ "\u00EE,\u00EF,\u00ED,\u012B,\u00EC", + // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX + // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS + // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE + // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE + // U+0153: "œ" LATIN SMALL LIGATURE OE + // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE + // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON + // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE + /* 3 */ "\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 + /* 4 */ "\u00FB,\u00FC,\u00F9,\u00FA,\u016B", + // U+00DF: "ß" LATIN SMALL LETTER SHARP S + /* 5 */ "\u00DF", + // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE + /* 6 */ "\u00F1", + // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA + /* 7 */ "\u00E7", + /* 8~ */ + null, null, null, null, null, null, null, + /* ~14 */ + /* 15 */ "g\'", + }; + + /* Language th: Thai */ + private static final String[] LANGUAGE_th = { + /* 0~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, + /* ~50 */ + // Label for "switch to alphabetic" key. + // U+0E01: "ก" THAI CHARACTER KO KAI + // U+0E02: "ข" THAI CHARACTER KHO KHAI + // U+0E04: "ค" THAI CHARACTER KHO KHWAI + /* 51 */ "\u0E01\u0E02\u0E04", + /* 52~ */ + null, null, null, null, null, + /* ~56 */ + // U+0E3F: "฿" THAI CURRENCY SYMBOL BAHT + /* 57 */ "\u0E3F", + }; + + /* Language tl: Tagalog */ + private static final String[] LANGUAGE_tl = { + // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE + // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE + // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS + // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX + // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE + // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE + // U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK + // U+00E6: "æ" LATIN SMALL LETTER AE + // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON + // U+00AA: "ª" FEMININE ORDINAL INDICATOR + /* 0 */ "\u00E1,\u00E0,\u00E4,\u00E2,\u00E3,\u00E5,\u0105,\u00E6,\u0101,\u00AA", + // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE + // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE + // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS + // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX + // 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 + /* 1 */ "\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 + /* 2 */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B", + // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE + // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE + // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS + // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX + // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE + // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE + // U+0153: "œ" LATIN SMALL LIGATURE OE + // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON + // U+00BA: "º" MASCULINE ORDINAL INDICATOR + /* 3 */ "\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 + /* 4 */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B", + /* 5 */ null, + // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE + // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE + /* 6 */ "\u00F1,\u0144", + // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA + // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE + // U+010D: "č" LATIN SMALL LETTER C WITH CARON + /* 7 */ "\u00E7,\u0107,\u010D", + }; + + /* Language tr: Turkish */ + private static final String[] LANGUAGE_tr = { + // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX + /* 0 */ "\u00E2", + /* 1 */ null, + // U+0131: "ı" LATIN SMALL LETTER DOTLESS I + // 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 + /* 2 */ "\u0131,\u00EE,\u00EF,\u00EC,\u00ED,\u012F,\u012B", + // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS + // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX + // U+0153: "œ" LATIN SMALL LIGATURE OE + // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE + // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE + // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE + // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE + // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON + /* 3 */ "\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 + /* 4 */ "\u00FC,\u00FB,\u00F9,\u00FA,\u016B", + // 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 + /* 5 */ "\u015F,\u00DF,\u015B,\u0161", + /* 6 */ null, + // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA + // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE + // U+010D: "č" LATIN SMALL LETTER C WITH CARON + /* 7 */ "\u00E7,\u0107,\u010D", + /* 8~ */ + null, null, null, null, null, null, null, + /* ~14 */ + // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE + /* 15 */ "\u011F", + }; + + /* Language uk: Ukrainian */ + private static final String[] LANGUAGE_uk = { + /* 0~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, + /* ~24 */ + // U+0449: "щ" CYRILLIC SMALL LETTER SHCHA + /* 25 */ "\u0449", + // U+0457: "ї" CYRILLIC SMALL LETTER YI + /* 26 */ "\u0457", + // U+0456: "і" CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I + /* 27 */ "\u0456", + // U+0454: "є" CYRILLIC SMALL LETTER UKRAINIAN IE + /* 28 */ "\u0454", + // U+0438: "и" CYRILLIC SMALL LETTER I + /* 29 */ "\u0438", + /* 30~ */ + null, null, null, + /* ~32 */ + // U+0491: "ґ" CYRILLIC SMALL LETTER GHE WITH UPTURN + /* 33 */ "\u0491", + // U+0457: "ї" CYRILLIC SMALL LETTER YI + /* 34 */ "\u0457", + /* 35 */ null, + /* 36 */ null, + // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN + /* 37 */ "\u044A", + /* 38~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, + /* ~50 */ + // Label for "switch to alphabetic" key. + // U+0410: "А" CYRILLIC CAPITAL LETTER A + // U+0411: "Б" CYRILLIC CAPITAL LETTER BE + // U+0412: "В" CYRILLIC CAPITAL LETTER VE + /* 51 */ "\u0410\u0411\u0412", + /* 52 */ "!text/single_9qm_lqm", + /* 53 */ "!text/double_9qm_lqm", + /* 54~ */ + null, null, null, + /* ~56 */ + // U+20B4: "₴" HRYVNIA SIGN + /* 57 */ "\u20B4", + }; + + /* Language vi: Vietnamese */ + private static final String[] LANGUAGE_vi = { + // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE + // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE + // U+1EA3: "ả" LATIN SMALL LETTER A WITH HOOK ABOVE + // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE + // U+1EA1: "ạ" LATIN SMALL LETTER A WITH DOT BELOW + // U+0103: "ă" LATIN SMALL LETTER A WITH BREVE + // U+1EB1: "ằ" LATIN SMALL LETTER A WITH BREVE AND GRAVE + // U+1EAF: "ắ" LATIN SMALL LETTER A WITH BREVE AND ACUTE + // U+1EB3: "ẳ" LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE + // U+1EB5: "ẵ" LATIN SMALL LETTER A WITH BREVE AND TILDE + // U+1EB7: "ặ" LATIN SMALL LETTER A WITH BREVE AND DOT BELOW + // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX + // U+1EA7: "ầ" LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE + // U+1EA5: "ấ" LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE + // 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 + /* 0 */ "\u00E0,\u00E1,\u1EA3,\u00E3,\u1EA1,\u0103,\u1EB1,\u1EAF,\u1EB3,\u1EB5,\u1EB7,\u00E2,\u1EA7,\u1EA5,\u1EA9,\u1EAB,\u1EAD", + // 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 + // U+1EBD: "ẽ" LATIN SMALL LETTER E WITH TILDE + // U+1EB9: "ẹ" LATIN SMALL LETTER E WITH DOT BELOW + // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX + // U+1EC1: "ề" LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE + // U+1EBF: "ế" LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE + // 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 + /* 1 */ "\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 + /* 2 */ "\u00EC,\u00ED,\u1EC9,\u0129,\u1ECB", + // 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 + // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE + // U+1ECD: "ọ" LATIN SMALL LETTER O WITH DOT BELOW + // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX + // U+1ED3: "ồ" LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE + // U+1ED1: "ố" LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE + // U+1ED5: "ổ" LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE + // U+1ED7: "ỗ" LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE + // U+1ED9: "ộ" LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW + // U+01A1: "ơ" LATIN SMALL LETTER O WITH HORN + // U+1EDD: "ờ" LATIN SMALL LETTER O WITH HORN AND GRAVE + // U+1EDB: "ớ" LATIN SMALL LETTER O WITH HORN AND ACUTE + // 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 + /* 3 */ "\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 + // U+0169: "ũ" LATIN SMALL LETTER U WITH TILDE + // U+1EE5: "ụ" LATIN SMALL LETTER U WITH DOT BELOW + // U+01B0: "ư" LATIN SMALL LETTER U WITH HORN + // U+1EEB: "ừ" LATIN SMALL LETTER U WITH HORN AND GRAVE + // U+1EE9: "ứ" LATIN SMALL LETTER U WITH HORN AND ACUTE + // 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 + /* 4 */ "\u00F9,\u00FA,\u1EE7,\u0169,\u1EE5,\u01B0,\u1EEB,\u1EE9,\u1EED,\u1EEF,\u1EF1", + /* 5~ */ + null, null, null, + /* ~7 */ + // 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 + /* 8 */ "\u1EF3,\u00FD,\u1EF7,\u1EF9,\u1EF5", + // U+0111: "đ" LATIN SMALL LETTER D WITH STROKE + /* 9 */ "\u0111", + /* 10~ */ + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, + /* ~56 */ + // U+20AB: "₫" DONG SIGN + /* 57 */ "\u20AB", + }; + + /* Language zu: Zulu */ + private static final String[] LANGUAGE_zu = { + // This is the same as English + // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE + // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE + // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX + // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS + // U+00E6: "æ" LATIN SMALL LETTER AE + // 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 + /* 0 */ "\u00E0,\u00E1,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101", + // 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 + /* 1 */ "\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 + /* 2 */ "\u00EE,\u00EF,\u00ED,\u012B,\u00EC", + // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX + // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS + // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE + // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE + // U+0153: "œ" LATIN SMALL LIGATURE OE + // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE + // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON + // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE + /* 3 */ "\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 + /* 4 */ "\u00FB,\u00FC,\u00F9,\u00FA,\u016B", + // U+00DF: "ß" LATIN SMALL LETTER SHARP S + /* 5 */ "\u00DF", + // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE + /* 6 */ "\u00F1", + // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA + /* 7 */ "\u00E7", + }; + + /* Language zz: Alphabet */ + private static final String[] LANGUAGE_zz = { + // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE + // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE + // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX + // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE + // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS + // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE + // U+00E6: "æ" LATIN SMALL LETTER AE + // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON + // U+0103: "ă" LATIN SMALL LETTER A WITH BREVE + // U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK + // U+00AA: "ª" FEMININE ORDINAL INDICATOR + /* 0 */ "\u00E0,\u00E1,\u00E2,\u00E3,\u00E4,\u00E5,\u00E6,\u00E3,\u00E5,\u0101,\u0103,\u0105,\u00AA", + // 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 + // U+0115: "ĕ" LATIN SMALL LETTER E WITH BREVE + // 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 + /* 1 */ "\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 + // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS + // U+0129: "ĩ" LATIN SMALL LETTER I WITH TILDE + // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON + // U+012D: "ĭ" LATIN SMALL LETTER I WITH BREVE + // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK + // U+0131: "ı" LATIN SMALL LETTER DOTLESS I + // U+0133: "ij" LATIN SMALL LIGATURE IJ + /* 2 */ "\u00EC,\u00ED,\u00EE,\u00EF,\u0129,\u012B,\u012D,\u012F,\u0131,\u0133", + // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE + // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE + // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX + // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE + // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS + // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE + // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON + // U+014F: "ŏ" LATIN SMALL LETTER O WITH BREVE + // U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE + // U+0153: "œ" LATIN SMALL LIGATURE OE + // U+00BA: "º" MASCULINE ORDINAL INDICATOR + /* 3 */ "\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 + // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS + // U+0169: "ũ" LATIN SMALL LETTER U WITH TILDE + // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON + // U+016D: "ŭ" LATIN SMALL LETTER U WITH BREVE + // 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 + /* 4 */ "\u00F9,\u00FA,\u00FB,\u00FC,\u0169,\u016B,\u016D,\u016F,\u0171,\u0173", + // 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 + /* 5 */ "\u00DF,\u015B,\u015D,\u015F,\u0161,\u017F", + // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE + // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE + // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA + // U+0148: "ň" LATIN SMALL LETTER N WITH CARON + // U+0149: "ʼn" LATIN SMALL LETTER N PRECEDED BY APOSTROPHE + // U+014B: "ŋ" LATIN SMALL LETTER ENG + /* 6 */ "\u00F1,\u0144,\u0146,\u0148,\u0149,\u014B", + // 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 + /* 7 */ "\u00E7,\u0107,\u0109,\u010B,\u010D", + // 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 + /* 8 */ "\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 + /* 9 */ "\u010F,\u0111,\u00F0", + // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE + // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA + // U+0159: "ř" LATIN SMALL LETTER R WITH CARON + /* 10 */ "\u0155,\u0157,\u0159", + // 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 + /* 11 */ "\u00FE,\u0163,\u0165,\u0167", + // 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 + /* 12 */ "\u017A,\u017C,\u017E", + // U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA + // U+0138: "ĸ" LATIN SMALL LETTER KRA + /* 13 */ "\u0137,\u0138", + // 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 + /* 14 */ "\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 + /* 15 */ "\u011D,\u011F,\u0121,\u0123", + /* 16 */ null, + // U+0125: "ĥ" LATIN SMALL LETTER H WITH CIRCUMFLEX + /* 17 */ "\u0125", + // U+0135: "ĵ" LATIN SMALL LETTER J WITH CIRCUMFLEX + /* 18 */ "\u0135", + // U+0175: "ŵ" LATIN SMALL LETTER W WITH CIRCUMFLEX + /* 19 */ "\u0175", + }; + + // 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 = { + "DEFAULT", LANGUAGE_DEFAULT, /* default */ + "af", LANGUAGE_af, /* Afrikaans */ + "ar", LANGUAGE_ar, /* Arabic */ + "az" /* "az_AZ" */, LANGUAGE_az_AZ, /* Azerbaijani (Azerbaijan) */ + "be" /* "be_BY" */, LANGUAGE_be_BY, /* Belarusian (Belarus) */ + "bg", LANGUAGE_bg, /* Bulgarian */ + "ca", LANGUAGE_ca, /* Catalan */ + "cs", LANGUAGE_cs, /* Czech */ + "da", LANGUAGE_da, /* Danish */ + "de", LANGUAGE_de, /* German */ + "el", LANGUAGE_el, /* Greek */ + "en", LANGUAGE_en, /* English */ + "eo", LANGUAGE_eo, /* Esperanto */ + "es", LANGUAGE_es, /* Spanish */ + "et" /* "et_EE" */, LANGUAGE_et_EE, /* Estonian (Estonia) */ + "fa", LANGUAGE_fa, /* Persian */ + "fi", LANGUAGE_fi, /* Finnish */ + "fr", LANGUAGE_fr, /* French */ + "hi", LANGUAGE_hi, /* Hindi */ + "hr", LANGUAGE_hr, /* Croatian */ + "hu", LANGUAGE_hu, /* Hungarian */ + "hy" /* "hy_AM" */, LANGUAGE_hy_AM, /* Armenian (Armenia) */ + "is", LANGUAGE_is, /* Icelandic */ + "it", LANGUAGE_it, /* Italian */ + "iw", LANGUAGE_iw, /* Hebrew */ + "ka" /* "ka_GE" */, LANGUAGE_ka_GE, /* Georgian (Georgia) */ + "kk", LANGUAGE_kk, /* Kazakh */ + "km" /* "km_KH" */, LANGUAGE_km_KH, /* Khmer (Cambodia) */ + "ky", LANGUAGE_ky, /* Kirghiz */ + "lo" /* "lo_LA" */, LANGUAGE_lo_LA, /* Lao (Laos) */ + "lt", LANGUAGE_lt, /* Lithuanian */ + "lv", LANGUAGE_lv, /* Latvian */ + "mk", LANGUAGE_mk, /* Macedonian */ + "mn" /* "mn_MN" */, LANGUAGE_mn_MN, /* Mongolian (Mongolia) */ + "nb", LANGUAGE_nb, /* Norwegian Bokmål */ + "ne" /* "ne_NP" */, LANGUAGE_ne_NP, /* Nepali (Nepal) */ + "nl", LANGUAGE_nl, /* Dutch */ + "pl", LANGUAGE_pl, /* Polish */ + "pt", LANGUAGE_pt, /* Portuguese */ + "rm", LANGUAGE_rm, /* Raeto-Romance */ + "ro", LANGUAGE_ro, /* Romanian */ + "ru", LANGUAGE_ru, /* Russian */ + "sk", LANGUAGE_sk, /* Slovak */ + "sl", LANGUAGE_sl, /* Slovenian */ + "sr", LANGUAGE_sr, /* Serbian */ + "sv", LANGUAGE_sv, /* Swedish */ + "sw", LANGUAGE_sw, /* Swahili */ + "th", LANGUAGE_th, /* Thai */ + "tl", LANGUAGE_tl, /* Tagalog */ + "tr", LANGUAGE_tr, /* Turkish */ + "uk", LANGUAGE_uk, /* Ukrainian */ + "vi", LANGUAGE_vi, /* Vietnamese */ + "zu", LANGUAGE_zu, /* Zulu */ + "zz", LANGUAGE_zz, /* Alphabet */ + }; + + static { + for (int index = 0; index < NAMES.length; index++) { + sNameToIndexesMap.put(NAMES[index], index); + } + + for (int i = 0; i < LANGUAGES_AND_TEXTS.length; i += 2) { + final String language = (String)LANGUAGES_AND_TEXTS[i]; + final String[] texts = (String[])LANGUAGES_AND_TEXTS[i + 1]; + sLanguageToTextsMap.put(language, texts); + } + } +} diff --git a/java/src/com/android/inputmethod/keyboard/internal/MoreKeySpec.java b/java/src/com/android/inputmethod/keyboard/internal/MoreKeySpec.java index 0551e9e98..319bf8921 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/MoreKeySpec.java +++ b/java/src/com/android/inputmethod/keyboard/internal/MoreKeySpec.java @@ -18,6 +18,7 @@ package com.android.inputmethod.keyboard.internal; import android.text.TextUtils; +import com.android.inputmethod.keyboard.Key; import com.android.inputmethod.latin.Constants; import com.android.inputmethod.latin.LatinImeLogger; import com.android.inputmethod.latin.utils.CollectionUtils; @@ -38,6 +39,7 @@ import java.util.Locale; * Note that the '\' is also parsed by XML parser and {@link MoreKeySpec#splitKeySpecs(String)} * as well. */ +// TODO: Should extend the key specification object. public final class MoreKeySpec { public final int mCode; public final String mLabel; @@ -66,6 +68,13 @@ public final class MoreKeySpec { mIconId = KeySpecParser.getIconId(moreKeySpec); } + public Key buildKey(final int x, final int y, final int labelFlags, + final KeyboardParams params) { + return new Key(mLabel, mIconId, mCode, mOutputText, null /* hintLabel */, labelFlags, + Key.BACKGROUND_TYPE_NORMAL, x, y, params.mDefaultKeyWidth, params.mDefaultRowHeight, + params.mHorizontalGap, params.mVerticalGap); + } + @Override public int hashCode() { int hashCode = 1; diff --git a/java/src/com/android/inputmethod/latin/DictionaryWriter.java b/java/src/com/android/inputmethod/latin/DictionaryWriter.java index 84898680e..b931c66d1 100644 --- a/java/src/com/android/inputmethod/latin/DictionaryWriter.java +++ b/java/src/com/android/inputmethod/latin/DictionaryWriter.java @@ -21,6 +21,7 @@ import com.android.inputmethod.latin.makedict.FormatSpec; import com.android.inputmethod.latin.makedict.FusionDictionary; import com.android.inputmethod.latin.makedict.FusionDictionary.PtNodeArray; import com.android.inputmethod.latin.makedict.FusionDictionary.WeightedString; +import com.android.inputmethod.latin.makedict.ProbabilityInfo; import com.android.inputmethod.latin.makedict.UnsupportedFormatException; import com.android.inputmethod.latin.utils.CollectionUtils; @@ -56,22 +57,23 @@ public class DictionaryWriter extends AbstractDictionaryWriter { // TODO: Create "cache dictionary" to cache fresh words for frequently updated dictionaries, // considering performance regression. @Override - public void addUnigramWord(final String word, final String shortcutTarget, final int frequency, - final int shortcutFreq, final boolean isNotAWord) { + public void addUnigramWord(final String word, final String shortcutTarget, + final int probability, final int shortcutProbability, final boolean isNotAWord) { if (shortcutTarget == null) { - mFusionDictionary.add(word, frequency, null, isNotAWord); + mFusionDictionary.add(word, new ProbabilityInfo(probability), null, isNotAWord); } else { // TODO: Do this in the subclass, with this class taking an arraylist. final ArrayList<WeightedString> shortcutTargets = CollectionUtils.newArrayList(); - shortcutTargets.add(new WeightedString(shortcutTarget, shortcutFreq)); - mFusionDictionary.add(word, frequency, shortcutTargets, isNotAWord); + shortcutTargets.add(new WeightedString(shortcutTarget, shortcutProbability)); + mFusionDictionary.add(word, new ProbabilityInfo(probability), shortcutTargets, + isNotAWord); } } @Override - public void addBigramWords(final String word0, final String word1, final int frequency, + public void addBigramWords(final String word0, final String word1, final int probability, final boolean isValid, final long lastModifiedTime) { - mFusionDictionary.setBigram(word0, word1, frequency); + mFusionDictionary.setBigram(word0, word1, new ProbabilityInfo(probability)); } @Override diff --git a/java/src/com/android/inputmethod/latin/makedict/AbstractDictDecoder.java b/java/src/com/android/inputmethod/latin/makedict/AbstractDictDecoder.java index e7d1c98a9..1bc322724 100644 --- a/java/src/com/android/inputmethod/latin/makedict/AbstractDictDecoder.java +++ b/java/src/com/android/inputmethod/latin/makedict/AbstractDictDecoder.java @@ -20,7 +20,6 @@ import com.android.inputmethod.annotations.UsedForTesting; import com.android.inputmethod.latin.makedict.BinaryDictDecoderUtils.CharEncoding; import com.android.inputmethod.latin.makedict.BinaryDictDecoderUtils.DictBuffer; import com.android.inputmethod.latin.makedict.FormatSpec.FormatOptions; -import com.android.inputmethod.latin.makedict.FusionDictionary.WeightedString; import java.io.FileNotFoundException; import java.io.IOException; @@ -117,94 +116,6 @@ public abstract class AbstractDictDecoder implements DictDecoder { } /** - * A utility class for reading a PtNode. - */ - protected static class PtNodeReader { - protected static int readPtNodeOptionFlags(final DictBuffer dictBuffer) { - return dictBuffer.readUnsignedByte(); - } - - protected static int readParentAddress(final DictBuffer dictBuffer, - final FormatOptions formatOptions) { - if (BinaryDictIOUtils.supportsDynamicUpdate(formatOptions)) { - return BinaryDictDecoderUtils.readSInt24(dictBuffer); - } else { - return FormatSpec.NO_PARENT_ADDRESS; - } - } - - protected static int readChildrenAddress(final DictBuffer dictBuffer, final int optionFlags, - final FormatOptions formatOptions) { - if (BinaryDictIOUtils.supportsDynamicUpdate(formatOptions)) { - final int address = BinaryDictDecoderUtils.readSInt24(dictBuffer); - if (address == 0) return FormatSpec.NO_CHILDREN_ADDRESS; - return address; - } else { - switch (optionFlags & FormatSpec.MASK_CHILDREN_ADDRESS_TYPE) { - case FormatSpec.FLAG_CHILDREN_ADDRESS_TYPE_ONEBYTE: - return dictBuffer.readUnsignedByte(); - case FormatSpec.FLAG_CHILDREN_ADDRESS_TYPE_TWOBYTES: - return dictBuffer.readUnsignedShort(); - case FormatSpec.FLAG_CHILDREN_ADDRESS_TYPE_THREEBYTES: - return dictBuffer.readUnsignedInt24(); - case FormatSpec.FLAG_CHILDREN_ADDRESS_TYPE_NOADDRESS: - default: - return FormatSpec.NO_CHILDREN_ADDRESS; - } - } - } - - // Reads shortcuts and returns the read length. - protected static int readShortcut(final DictBuffer dictBuffer, - final ArrayList<WeightedString> shortcutTargets) { - final int pointerBefore = dictBuffer.position(); - dictBuffer.readUnsignedShort(); // skip the size - while (true) { - final int targetFlags = dictBuffer.readUnsignedByte(); - final String word = CharEncoding.readString(dictBuffer); - shortcutTargets.add(new WeightedString(word, - targetFlags & FormatSpec.FLAG_BIGRAM_SHORTCUT_ATTR_FREQUENCY)); - if (0 == (targetFlags & FormatSpec.FLAG_BIGRAM_SHORTCUT_ATTR_HAS_NEXT)) break; - } - return dictBuffer.position() - pointerBefore; - } - - protected static int readBigramAddresses(final DictBuffer dictBuffer, - final ArrayList<PendingAttribute> bigrams, final int baseAddress) { - int readLength = 0; - int bigramCount = 0; - while (bigramCount++ < FormatSpec.MAX_BIGRAMS_IN_A_PTNODE) { - final int bigramFlags = dictBuffer.readUnsignedByte(); - ++readLength; - final int sign = 0 == (bigramFlags & FormatSpec.FLAG_BIGRAM_ATTR_OFFSET_NEGATIVE) - ? 1 : -1; - int bigramAddress = baseAddress + readLength; - switch (bigramFlags & FormatSpec.MASK_BIGRAM_ATTR_ADDRESS_TYPE) { - case FormatSpec.FLAG_BIGRAM_ATTR_ADDRESS_TYPE_ONEBYTE: - bigramAddress += sign * dictBuffer.readUnsignedByte(); - readLength += 1; - break; - case FormatSpec.FLAG_BIGRAM_ATTR_ADDRESS_TYPE_TWOBYTES: - bigramAddress += sign * dictBuffer.readUnsignedShort(); - readLength += 2; - break; - case FormatSpec.FLAG_BIGRAM_ATTR_ADDRESS_TYPE_THREEBYTES: - bigramAddress += sign * dictBuffer.readUnsignedInt24(); - readLength += 3; - break; - default: - throw new RuntimeException("Has bigrams with no address"); - } - bigrams.add(new PendingAttribute( - bigramFlags & FormatSpec.FLAG_BIGRAM_SHORTCUT_ATTR_FREQUENCY, - bigramAddress)); - if (0 == (bigramFlags & FormatSpec.FLAG_BIGRAM_SHORTCUT_ATTR_HAS_NEXT)) break; - } - return readLength; - } - } - - /** * Check whether the header contains the expected information. This is a no-error method, * that will return an error code and never throw a checked exception. * @return an error code, either ERROR_* or SUCCESS. @@ -264,9 +175,4 @@ public abstract class AbstractDictDecoder implements DictDecoder { public boolean hasNextPtNodeArray() { return false; } - - @Override - @UsedForTesting - public void skipPtNode(final FormatOptions formatOptions) { - } } diff --git a/java/src/com/android/inputmethod/latin/makedict/BinaryDictDecoderUtils.java b/java/src/com/android/inputmethod/latin/makedict/BinaryDictDecoderUtils.java index 782ada3f4..fc5788de9 100644 --- a/java/src/com/android/inputmethod/latin/makedict/BinaryDictDecoderUtils.java +++ b/java/src/com/android/inputmethod/latin/makedict/BinaryDictDecoderUtils.java @@ -166,15 +166,6 @@ public final class BinaryDictDecoderUtils { return size; } - @UsedForTesting - static int getCharArraySize(final int[] chars, final int start, final int end) { - int size = 0; - for (int i = start; i < end; ++i) { - size += getCharSize(chars[i]); - } - return size; - } - /** * Writes a char array to a byte buffer. * @@ -253,41 +244,6 @@ public final class BinaryDictDecoderUtils { } /** - * Writes an array of code points with our character format to an OutputStream. - * - * This will also write the terminator byte. - * - * @param stream the OutputStream to write to. - * @param codePoints the array of code points - * @return the size written, in bytes. - */ - // TODO: Merge this method with writeCharArray and rename the various write* methods to - // make the difference clear. - @UsedForTesting - static int writeCodePoints(final OutputStream stream, final int[] codePoints, - final int startIndex, final int endIndex) - throws IOException { - int written = 0; - for (int i = startIndex; i < endIndex; ++i) { - final int codePoint = codePoints[i]; - final int charSize = getCharSize(codePoint); - if (1 == charSize) { - stream.write((byte) codePoint); - } else { - stream.write((byte) (0xFF & (codePoint >> 16))); - stream.write((byte) (0xFF & (codePoint >> 8))); - stream.write((byte) (0xFF & codePoint)); - } - written += charSize; - } - if (endIndex - startIndex > 1) { - stream.write(FormatSpec.PTNODE_CHARACTERS_TERMINATOR); - written += FormatSpec.PTNODE_TERMINATOR_SIZE; - } - return written; - } - - /** * Reads a string from a DictBuffer. This is the converse of the above method. */ static String readString(final DictBuffer dictBuffer) { @@ -321,50 +277,6 @@ public final class BinaryDictDecoderUtils { } } - // Input methods: Read a binary dictionary to memory. - // readDictionaryBinary is the public entry point for them. - - static int readSInt24(final DictBuffer dictBuffer) { - final int retval = dictBuffer.readUnsignedInt24(); - final int sign = ((retval & FormatSpec.MSB24) != 0) ? -1 : 1; - return sign * (retval & FormatSpec.SINT24_MAX); - } - - static int readChildrenAddress(final DictBuffer dictBuffer, - final int optionFlags, final FormatOptions options) { - if (options.supportsDynamicUpdate()) { - final int address = dictBuffer.readUnsignedInt24(); - if (address == 0) return FormatSpec.NO_CHILDREN_ADDRESS; - if ((address & FormatSpec.MSB24) != 0) { - return -(address & FormatSpec.SINT24_MAX); - } else { - return address; - } - } - switch (optionFlags & FormatSpec.MASK_CHILDREN_ADDRESS_TYPE) { - case FormatSpec.FLAG_CHILDREN_ADDRESS_TYPE_ONEBYTE: - return dictBuffer.readUnsignedByte(); - case FormatSpec.FLAG_CHILDREN_ADDRESS_TYPE_TWOBYTES: - return dictBuffer.readUnsignedShort(); - case FormatSpec.FLAG_CHILDREN_ADDRESS_TYPE_THREEBYTES: - return dictBuffer.readUnsignedInt24(); - case FormatSpec.FLAG_CHILDREN_ADDRESS_TYPE_NOADDRESS: - default: - return FormatSpec.NO_CHILDREN_ADDRESS; - } - } - - static int readParentAddress(final DictBuffer dictBuffer, - final FormatOptions formatOptions) { - if (BinaryDictIOUtils.supportsDynamicUpdate(formatOptions)) { - final int parentAddress = dictBuffer.readUnsignedInt24(); - final int sign = ((parentAddress & FormatSpec.MSB24) != 0) ? -1 : 1; - return sign * (parentAddress & FormatSpec.SINT24_MAX); - } else { - return FormatSpec.NO_PARENT_ADDRESS; - } - } - /** * Reads and returns the PtNode count out of a buffer and forwards the pointer. */ @@ -408,7 +320,7 @@ public final class BinaryDictDecoderUtils { private static WeightedString getWordAtPositionWithParentAddress(final DictDecoder dictDecoder, final int pos, final FormatOptions options) { int currentPos = pos; - int frequency = Integer.MIN_VALUE; + ProbabilityInfo probabilityInfo = null; final StringBuilder builder = new StringBuilder(); // the length of the path from the root to the leaf is limited by MAX_WORD_LENGTH for (int count = 0; count < FormatSpec.MAX_WORD_LENGTH; ++count) { @@ -424,13 +336,15 @@ public final class BinaryDictDecoderUtils { MakedictLog.d("Too many jumps - probably a bug"); } } while (BinaryDictIOUtils.isMovedPtNode(currentInfo.mFlags, options)); - if (Integer.MIN_VALUE == frequency) frequency = currentInfo.mFrequency; + if (probabilityInfo == null) { + probabilityInfo = currentInfo.mProbabilityInfo; + } builder.insert(0, new String(currentInfo.mCharacters, 0, currentInfo.mCharacters.length)); if (currentInfo.mParentAddress == FormatSpec.NO_PARENT_ADDRESS) break; currentPos = currentInfo.mParentAddress + currentInfo.mOriginalAddress; } - return new WeightedString(builder.toString(), frequency); + return new WeightedString(builder.toString(), probabilityInfo); } private static WeightedString getWordAtPositionWithoutParentAddress( @@ -448,7 +362,7 @@ public final class BinaryDictDecoderUtils { groupPos = info.mEndAddress; if (info.mOriginalAddress == pos) { builder.append(new String(info.mCharacters, 0, info.mCharacters.length)); - result = new WeightedString(builder.toString(), info.mFrequency); + result = new WeightedString(builder.toString(), info.mProbabilityInfo); break; // and return } if (BinaryDictIOUtils.hasChildrenAddress(info.mChildrenAddress)) { @@ -527,13 +441,13 @@ public final class BinaryDictDecoderUtils { } nodeArrayContents.add( new PtNode(info.mCharacters, shortcutTargets, bigrams, - info.mFrequency, + info.mProbabilityInfo, 0 != (info.mFlags & FormatSpec.FLAG_IS_NOT_A_WORD), 0 != (info.mFlags & FormatSpec.FLAG_IS_BLACKLISTED), children)); } else { nodeArrayContents.add( new PtNode(info.mCharacters, shortcutTargets, bigrams, - info.mFrequency, + info.mProbabilityInfo, 0 != (info.mFlags & FormatSpec.FLAG_IS_NOT_A_WORD), 0 != (info.mFlags & FormatSpec.FLAG_IS_BLACKLISTED))); } @@ -611,7 +525,7 @@ public final class BinaryDictDecoderUtils { newDict.addBlacklistEntry(wordProperty.mWord, wordProperty.mShortcutTargets, wordProperty.mIsNotAWord); } else { - newDict.add(wordProperty.mWord, wordProperty.getProbability(), + newDict.add(wordProperty.mWord, wordProperty.mProbabilityInfo, wordProperty.mShortcutTargets, wordProperty.mIsNotAWord); } } @@ -620,7 +534,7 @@ public final class BinaryDictDecoderUtils { // words that are not also registered as unigrams so we don't have to avoid // them explicitly here. for (final WeightedString bigram : wordProperty.mBigrams) { - newDict.setBigram(wordProperty.mWord, bigram.mWord, bigram.getProbability()); + newDict.setBigram(wordProperty.mWord, bigram.mWord, bigram.mProbabilityInfo); } } } diff --git a/java/src/com/android/inputmethod/latin/makedict/BinaryDictEncoderUtils.java b/java/src/com/android/inputmethod/latin/makedict/BinaryDictEncoderUtils.java index eff8fc375..9c5d1b9d7 100644 --- a/java/src/com/android/inputmethod/latin/makedict/BinaryDictEncoderUtils.java +++ b/java/src/com/android/inputmethod/latin/makedict/BinaryDictEncoderUtils.java @@ -673,7 +673,7 @@ public class BinaryDictEncoderUtils { /* package */ static byte makePtNodeFlags(final PtNode node, final int childrenOffset, final FormatOptions formatOptions) { - return (byte) makePtNodeFlags(node.mChars.length > 1, node.mFrequency >= 0, + return (byte) makePtNodeFlags(node.mChars.length > 1, node.isTerminal(), getByteSize(childrenOffset), node.mShortcutTargets != null && !node.mShortcutTargets.isEmpty(), node.mBigrams != null, node.mIsNotAWord, node.mIsBlacklistEntry, formatOptions); @@ -833,10 +833,10 @@ public class BinaryDictEncoderUtils { + ptNode.mCachedAddressAfterUpdate); } // Sanity checks. - if (DBG && ptNode.mFrequency > FormatSpec.MAX_TERMINAL_FREQUENCY) { + if (DBG && ptNode.getProbability() > FormatSpec.MAX_TERMINAL_FREQUENCY) { throw new RuntimeException("A node has a frequency > " + FormatSpec.MAX_TERMINAL_FREQUENCY - + " : " + ptNode.mFrequency); + + " : " + ptNode.mProbabilityInfo.toString()); } dictEncoder.writePtNode(ptNode, parentPosition, formatOptions, dict); } @@ -871,7 +871,7 @@ public class BinaryDictEncoderUtils { for (final PtNode ptNode : ptNodeArray.mData) { ++ptNodes; if (ptNode.mChars.length > maxRuns) maxRuns = ptNode.mChars.length; - if (ptNode.mFrequency >= 0) { + if (ptNode.isTerminal()) { if (ptNodeArray.mCachedAddressAfterUpdate < firstTerminalAddress) firstTerminalAddress = ptNodeArray.mCachedAddressAfterUpdate; if (ptNodeArray.mCachedAddressAfterUpdate > lastTerminalAddress) diff --git a/java/src/com/android/inputmethod/latin/makedict/BinaryDictIOUtils.java b/java/src/com/android/inputmethod/latin/makedict/BinaryDictIOUtils.java index dea9f2e28..54446df49 100644 --- a/java/src/com/android/inputmethod/latin/makedict/BinaryDictIOUtils.java +++ b/java/src/com/android/inputmethod/latin/makedict/BinaryDictIOUtils.java @@ -21,7 +21,6 @@ import com.android.inputmethod.latin.Constants; import com.android.inputmethod.latin.makedict.BinaryDictDecoderUtils.CharEncoding; import com.android.inputmethod.latin.makedict.BinaryDictDecoderUtils.DictBuffer; import com.android.inputmethod.latin.makedict.FormatSpec.FormatOptions; -import com.android.inputmethod.latin.makedict.FusionDictionary.PtNode; import com.android.inputmethod.latin.utils.ByteArrayDictBuffer; import java.io.File; @@ -91,21 +90,23 @@ public final class BinaryDictIOUtils { stack.pop(); continue; } - PtNodeInfo info = dictDecoder.readPtNode(p.mAddress, formatOptions); - for (int i = 0; i < info.mCharacters.length; ++i) { - pushedChars[index++] = info.mCharacters[i]; + final PtNodeInfo ptNodeInfo = dictDecoder.readPtNode(p.mAddress, formatOptions); + for (int i = 0; i < ptNodeInfo.mCharacters.length; ++i) { + pushedChars[index++] = ptNodeInfo.mCharacters[i]; } p.mPosition++; - final boolean isMovedPtNode = isMovedPtNode(info.mFlags, + final boolean isMovedPtNode = isMovedPtNode(ptNodeInfo.mFlags, formatOptions); - final boolean isDeletedPtNode = isDeletedPtNode(info.mFlags, + final boolean isDeletedPtNode = isDeletedPtNode(ptNodeInfo.mFlags, formatOptions); - if (!isMovedPtNode && !isDeletedPtNode - && info.mFrequency != FusionDictionary.PtNode.NOT_A_TERMINAL) {// found word - words.put(info.mOriginalAddress, new String(pushedChars, 0, index)); - frequencies.put(info.mOriginalAddress, info.mFrequency); - if (info.mBigrams != null) bigrams.put(info.mOriginalAddress, info.mBigrams); + if (!isMovedPtNode && !isDeletedPtNode && ptNodeInfo.isTerminal()) {// found word + words.put(ptNodeInfo.mOriginalAddress, new String(pushedChars, 0, index)); + frequencies.put( + ptNodeInfo.mOriginalAddress, ptNodeInfo.mProbabilityInfo.mProbability); + if (ptNodeInfo.mBigrams != null) { + bigrams.put(ptNodeInfo.mOriginalAddress, ptNodeInfo.mBigrams); + } } if (p.mPosition == p.mNumOfPtNode) { @@ -127,8 +128,8 @@ public final class BinaryDictIOUtils { p.mAddress = dictDecoder.getPosition(); } - if (!isMovedPtNode && hasChildrenAddress(info.mChildrenAddress)) { - final Position childrenPos = new Position(info.mChildrenAddress, index); + if (!isMovedPtNode && hasChildrenAddress(ptNodeInfo.mChildrenAddress)) { + final Position childrenPos = new Position(ptNodeInfo.mChildrenAddress, index); stack.push(childrenPos); } } @@ -203,8 +204,7 @@ public final class BinaryDictIOUtils { if (same) { // found the PtNode matches the word. if (wordPos + currentInfo.mCharacters.length == wordLen) { - if (currentInfo.mFrequency == PtNode.NOT_A_TERMINAL - || isDeletedNode) { + if (!currentInfo.isTerminal() || isDeletedNode) { return FormatSpec.NOT_VALID_WORD; } else { return ptNodePos; diff --git a/java/src/com/android/inputmethod/latin/makedict/DictDecoder.java b/java/src/com/android/inputmethod/latin/makedict/DictDecoder.java index bba1d434f..a93a8bbad 100644 --- a/java/src/com/android/inputmethod/latin/makedict/DictDecoder.java +++ b/java/src/com/android/inputmethod/latin/makedict/DictDecoder.java @@ -228,8 +228,6 @@ public interface DictDecoder { } } - public void skipPtNode(final FormatOptions formatOptions); - /** * @return whether this decoder has a valid binary dictionary that it can decode. */ diff --git a/java/src/com/android/inputmethod/latin/makedict/FusionDictionary.java b/java/src/com/android/inputmethod/latin/makedict/FusionDictionary.java index ca4a2e9bb..8f73b27b5 100644 --- a/java/src/com/android/inputmethod/latin/makedict/FusionDictionary.java +++ b/java/src/com/android/inputmethod/latin/makedict/FusionDictionary.java @@ -107,24 +107,26 @@ public final class FusionDictionary implements Iterable<WordProperty> { } /** - * PtNode is a group of characters, with a frequency, shortcut targets, bigrams, and children - * (Pt means Patricia Trie). + * PtNode is a group of characters, with probability information, shortcut targets, bigrams, + * and children (Pt means Patricia Trie). * * This is the central class of the in-memory representation. A PtNode is what can * be seen as a traditional "trie node", except it can hold several characters at the * same time. A PtNode essentially represents one or several characters in the middle * of the trie tree; as such, it can be a terminal, and it can have children. * In this in-memory representation, whether the PtNode is a terminal or not is represented - * in the frequency, where NOT_A_TERMINAL (= -1) means this is not a terminal and any other - * value is the frequency of this terminal. A terminal may have non-null shortcuts and/or - * bigrams, but a non-terminal may not. Moreover, children, if present, are null. + * by mProbabilityInfo. The PtNode is a terminal when the mProbabilityInfo is not null and the + * PtNode is not a terminal when the mProbabilityInfo is null. A terminal may have non-null + * shortcuts and/or bigrams, but a non-terminal may not. Moreover, children, if present, + * are non-null. */ public static final class PtNode { - public static final int NOT_A_TERMINAL = -1; + private static final int NOT_A_TERMINAL = -1; final int mChars[]; ArrayList<WeightedString> mShortcutTargets; ArrayList<WeightedString> mBigrams; - int mFrequency; // NOT_A_TERMINAL == mFrequency indicates this is not a terminal. + // null == mProbabilityInfo indicates this is not a terminal. + ProbabilityInfo mProbabilityInfo; int mTerminalId; // NOT_A_TERMINAL == mTerminalId indicates this is not a terminal. PtNodeArray mChildren; boolean mIsNotAWord; // Only a shortcut @@ -140,11 +142,11 @@ public final class FusionDictionary implements Iterable<WordProperty> { int mCachedAddressAfterUpdate; // The address of this PtNode (after update) public PtNode(final int[] chars, final ArrayList<WeightedString> shortcutTargets, - final ArrayList<WeightedString> bigrams, final int frequency, + final ArrayList<WeightedString> bigrams, final ProbabilityInfo probabilityInfo, final boolean isNotAWord, final boolean isBlacklistEntry) { mChars = chars; - mFrequency = frequency; - mTerminalId = frequency; + mProbabilityInfo = probabilityInfo; + mTerminalId = probabilityInfo == null ? NOT_A_TERMINAL : probabilityInfo.mProbability; mShortcutTargets = shortcutTargets; mBigrams = bigrams; mChildren = null; @@ -153,11 +155,11 @@ public final class FusionDictionary implements Iterable<WordProperty> { } public PtNode(final int[] chars, final ArrayList<WeightedString> shortcutTargets, - final ArrayList<WeightedString> bigrams, final int frequency, + final ArrayList<WeightedString> bigrams, final ProbabilityInfo probabilityInfo, final boolean isNotAWord, final boolean isBlacklistEntry, final PtNodeArray children) { mChars = chars; - mFrequency = frequency; + mProbabilityInfo = probabilityInfo; mShortcutTargets = shortcutTargets; mBigrams = bigrams; mChildren = children; @@ -177,11 +179,15 @@ public final class FusionDictionary implements Iterable<WordProperty> { } public boolean isTerminal() { - return NOT_A_TERMINAL != mFrequency; + return mProbabilityInfo != null; } - public int getFrequency() { - return mFrequency; + public int getProbability() { + if (isTerminal()) { + return mProbabilityInfo.mProbability; + } else { + return NOT_A_TERMINAL; + } } public boolean getIsNotAWord() { @@ -213,18 +219,18 @@ public final class FusionDictionary implements Iterable<WordProperty> { } /** - * Adds a word to the bigram list. Updates the probability if the word already + * Adds a word to the bigram list. Updates the probability information if the word already * exists. */ - public void addBigram(final String word, final int probability) { + public void addBigram(final String word, final ProbabilityInfo probabilityInfo) { if (mBigrams == null) { mBigrams = new ArrayList<WeightedString>(); } WeightedString bigram = getBigram(word); if (bigram != null) { - bigram.setProbability(probability); + bigram.mProbabilityInfo = probabilityInfo; } else { - bigram = new WeightedString(word, probability); + bigram = new WeightedString(word, probabilityInfo); mBigrams.add(bigram); } } @@ -270,12 +276,11 @@ public final class FusionDictionary implements Iterable<WordProperty> { * the existing ones if any. Note: unigram, bigram, and shortcut frequencies are only * updated if they are higher than the existing ones. */ - public void update(final int frequency, final ArrayList<WeightedString> shortcutTargets, + private void update(final ProbabilityInfo probabilityInfo, + final ArrayList<WeightedString> shortcutTargets, final ArrayList<WeightedString> bigrams, final boolean isNotAWord, final boolean isBlacklistEntry) { - if (frequency > mFrequency) { - mFrequency = frequency; - } + mProbabilityInfo = ProbabilityInfo.max(mProbabilityInfo, probabilityInfo); if (shortcutTargets != null) { if (mShortcutTargets == null) { mShortcutTargets = shortcutTargets; @@ -286,8 +291,9 @@ public final class FusionDictionary implements Iterable<WordProperty> { final WeightedString existingShortcut = getShortcut(shortcut.mWord); if (existingShortcut == null) { mShortcutTargets.add(shortcut); - } else if (existingShortcut.getProbability() < shortcut.getProbability()) { - existingShortcut.setProbability(shortcut.getProbability()); + } else { + existingShortcut.mProbabilityInfo = ProbabilityInfo.max( + existingShortcut.mProbabilityInfo, shortcut.mProbabilityInfo); } } } @@ -302,8 +308,9 @@ public final class FusionDictionary implements Iterable<WordProperty> { final WeightedString existingBigram = getBigram(bigram.mWord); if (existingBigram == null) { mBigrams.add(bigram); - } else if (existingBigram.getProbability() < bigram.getProbability()) { - existingBigram.setProbability(bigram.getProbability()); + } else { + existingBigram.mProbabilityInfo = ProbabilityInfo.max( + existingBigram.mProbabilityInfo, bigram.mProbabilityInfo); } } } @@ -393,13 +400,13 @@ public final class FusionDictionary implements Iterable<WordProperty> { * they will be added to the dictionary as necessary. * * @param word the word to add. - * @param frequency the frequency of the word, in the range [0..255]. + * @param probabilityInfo probability information of the word. * @param shortcutTargets a list of shortcut targets for this word, or null. * @param isNotAWord true if this should not be considered a word (e.g. shortcut only) */ - public void add(final String word, final int frequency, + public void add(final String word, final ProbabilityInfo probabilityInfo, final ArrayList<WeightedString> shortcutTargets, final boolean isNotAWord) { - add(getCodePoints(word), frequency, shortcutTargets, isNotAWord, + add(getCodePoints(word), probabilityInfo, shortcutTargets, isNotAWord, false /* isBlacklistEntry */); } @@ -412,7 +419,8 @@ public final class FusionDictionary implements Iterable<WordProperty> { */ public void addBlacklistEntry(final String word, final ArrayList<WeightedString> shortcutTargets, final boolean isNotAWord) { - add(getCodePoints(word), 0, shortcutTargets, isNotAWord, true /* isBlacklistEntry */); + add(getCodePoints(word), new ProbabilityInfo(0), shortcutTargets, isNotAWord, + true /* isBlacklistEntry */); } /** @@ -438,21 +446,22 @@ public final class FusionDictionary implements Iterable<WordProperty> { * * @param word0 the previous word of the context * @param word1 the next word of the context - * @param frequency the bigram frequency + * @param probabilityInfo the bigram probability info */ - public void setBigram(final String word0, final String word1, final int frequency) { + public void setBigram(final String word0, final String word1, + final ProbabilityInfo probabilityInfo) { PtNode ptNode0 = findWordInTree(mRootNodeArray, word0); if (ptNode0 != null) { final PtNode ptNode1 = findWordInTree(mRootNodeArray, word1); if (ptNode1 == null) { - add(getCodePoints(word1), 0, null, false /* isNotAWord */, + add(getCodePoints(word1), new ProbabilityInfo(0), null, false /* isNotAWord */, false /* isBlacklistEntry */); // The PtNode for the first word may have moved by the above insertion, // if word1 and word2 share a common stem that happens not to have been // a cutting point until now. In this case, we need to refresh ptNode. ptNode0 = findWordInTree(mRootNodeArray, word0); } - ptNode0.addBigram(word1, frequency); + ptNode0.addBigram(word1, probabilityInfo); } else { throw new RuntimeException("First word of bigram not found " + word0); } @@ -465,15 +474,15 @@ public final class FusionDictionary implements Iterable<WordProperty> { * an exception is thrown. * * @param word the word, as an int array. - * @param frequency the frequency of the word, in the range [0..255]. + * @param probabilityInfo the probability information of the word. * @param shortcutTargets an optional list of shortcut targets for this word (null if none). * @param isNotAWord true if this is not a word for spellcheking purposes (shortcut only or so) * @param isBlacklistEntry true if this is a blacklisted word, false otherwise */ - private void add(final int[] word, final int frequency, + private void add(final int[] word, final ProbabilityInfo probabilityInfo, final ArrayList<WeightedString> shortcutTargets, final boolean isNotAWord, final boolean isBlacklistEntry) { - assert(frequency >= 0 && frequency <= 255); + assert(probabilityInfo.mProbability <= FormatSpec.MAX_TERMINAL_FREQUENCY); if (word.length >= Constants.DICTIONARY_MAX_WORD_LENGTH) { MakedictLog.w("Ignoring a word that is too long: word.length = " + word.length); return; @@ -501,7 +510,8 @@ public final class FusionDictionary implements Iterable<WordProperty> { // No node at this point to accept the word. Create one. final int insertionIndex = findInsertionIndex(currentNodeArray, word[charIndex]); final PtNode newPtNode = new PtNode(Arrays.copyOfRange(word, charIndex, word.length), - shortcutTargets, null /* bigrams */, frequency, isNotAWord, isBlacklistEntry); + shortcutTargets, null /* bigrams */, probabilityInfo, isNotAWord, + isBlacklistEntry); currentNodeArray.mData.add(insertionIndex, newPtNode); if (DBG) checkStack(currentNodeArray); } else { @@ -511,15 +521,15 @@ public final class FusionDictionary implements Iterable<WordProperty> { // The new word is a prefix of an existing word, but the node on which it // should end already exists as is. Since the old PtNode was not a terminal, // make it one by filling in its frequency and other attributes - currentPtNode.update(frequency, shortcutTargets, null, isNotAWord, + currentPtNode.update(probabilityInfo, shortcutTargets, null, isNotAWord, isBlacklistEntry); } else { // The new word matches the full old word and extends past it. // We only have to create a new node and add it to the end of this. final PtNode newNode = new PtNode( Arrays.copyOfRange(word, charIndex + differentCharIndex, word.length), - shortcutTargets, null /* bigrams */, frequency, isNotAWord, - isBlacklistEntry); + shortcutTargets, null /* bigrams */, probabilityInfo, + isNotAWord, isBlacklistEntry); currentPtNode.mChildren = new PtNodeArray(); currentPtNode.mChildren.mData.add(newNode); } @@ -527,7 +537,7 @@ public final class FusionDictionary implements Iterable<WordProperty> { if (0 == differentCharIndex) { // Exact same word. Update the frequency if higher. This will also add the // new shortcuts to the existing shortcut list if it already exists. - currentPtNode.update(frequency, shortcutTargets, null, + currentPtNode.update(probabilityInfo, shortcutTargets, null, currentPtNode.mIsNotAWord && isNotAWord, currentPtNode.mIsBlacklistEntry || isBlacklistEntry); } else { @@ -537,7 +547,7 @@ public final class FusionDictionary implements Iterable<WordProperty> { final PtNode newOldWord = new PtNode( Arrays.copyOfRange(currentPtNode.mChars, differentCharIndex, currentPtNode.mChars.length), currentPtNode.mShortcutTargets, - currentPtNode.mBigrams, currentPtNode.mFrequency, + currentPtNode.mBigrams, currentPtNode.mProbabilityInfo, currentPtNode.mIsNotAWord, currentPtNode.mIsBlacklistEntry, currentPtNode.mChildren); newChildren.mData.add(newOldWord); @@ -546,16 +556,17 @@ public final class FusionDictionary implements Iterable<WordProperty> { if (charIndex + differentCharIndex >= word.length) { newParent = new PtNode( Arrays.copyOfRange(currentPtNode.mChars, 0, differentCharIndex), - shortcutTargets, null /* bigrams */, frequency, + shortcutTargets, null /* bigrams */, probabilityInfo, isNotAWord, isBlacklistEntry, newChildren); } else { newParent = new PtNode( Arrays.copyOfRange(currentPtNode.mChars, 0, differentCharIndex), - null /* shortcutTargets */, null /* bigrams */, -1, - false /* isNotAWord */, false /* isBlacklistEntry */, newChildren); + null /* shortcutTargets */, null /* bigrams */, + null /* probabilityInfo */, false /* isNotAWord */, + false /* isBlacklistEntry */, newChildren); final PtNode newWord = new PtNode(Arrays.copyOfRange(word, charIndex + differentCharIndex, word.length), - shortcutTargets, null /* bigrams */, frequency, + shortcutTargets, null /* bigrams */, probabilityInfo, isNotAWord, isBlacklistEntry); final int addIndex = word[charIndex + differentCharIndex] > currentPtNode.mChars[differentCharIndex] ? 1 : 0; @@ -617,8 +628,8 @@ public final class FusionDictionary implements Iterable<WordProperty> { private static int findInsertionIndex(final PtNodeArray nodeArray, int character) { final ArrayList<PtNode> data = nodeArray.mData; final PtNode reference = new PtNode(new int[] { character }, - null /* shortcutTargets */, null /* bigrams */, 0, false /* isNotAWord */, - false /* isBlacklistEntry */); + null /* shortcutTargets */, null /* bigrams */, null /* probabilityInfo */, + false /* isNotAWord */, false /* isBlacklistEntry */); int result = Collections.binarySearch(data, reference, PTNODE_COMPARATOR); return result >= 0 ? result : -result - 1; } @@ -752,8 +763,9 @@ public final class FusionDictionary implements Iterable<WordProperty> { currentPos.length = mCurrentString.length(); mPositions.addLast(currentPos); } - if (currentPtNode.mFrequency >= 0) { - return new WordProperty(mCurrentString.toString(), currentPtNode.mFrequency, + if (currentPtNode.isTerminal()) { + return new WordProperty(mCurrentString.toString(), + currentPtNode.mProbabilityInfo, currentPtNode.mShortcutTargets, currentPtNode.mBigrams, currentPtNode.mIsNotAWord, currentPtNode.mIsBlacklistEntry); } diff --git a/java/src/com/android/inputmethod/latin/makedict/ProbabilityInfo.java b/java/src/com/android/inputmethod/latin/makedict/ProbabilityInfo.java index dafbc04b9..9dcd63f0c 100644 --- a/java/src/com/android/inputmethod/latin/makedict/ProbabilityInfo.java +++ b/java/src/com/android/inputmethod/latin/makedict/ProbabilityInfo.java @@ -30,6 +30,21 @@ public final class ProbabilityInfo { public final int mLevel; public final int mCount; + public static ProbabilityInfo max(final ProbabilityInfo probabilityInfo1, + final ProbabilityInfo probabilityInfo2) { + if (probabilityInfo1 == null) { + return probabilityInfo2; + } + if (probabilityInfo2 == null) { + return probabilityInfo1; + } + if (probabilityInfo1.mProbability > probabilityInfo2.mProbability) { + return probabilityInfo1; + } else { + return probabilityInfo2; + } + } + public ProbabilityInfo(final int probability) { this(probability, BinaryDictionary.NOT_A_VALID_TIMESTAMP, 0, 0); } diff --git a/java/src/com/android/inputmethod/latin/makedict/PtNodeInfo.java b/java/src/com/android/inputmethod/latin/makedict/PtNodeInfo.java index 188de7a0f..4760aa8d5 100644 --- a/java/src/com/android/inputmethod/latin/makedict/PtNodeInfo.java +++ b/java/src/com/android/inputmethod/latin/makedict/PtNodeInfo.java @@ -29,24 +29,28 @@ public final class PtNodeInfo { public final int mEndAddress; public final int mFlags; public final int[] mCharacters; - public final int mFrequency; + public final ProbabilityInfo mProbabilityInfo; public final int mChildrenAddress; public final int mParentAddress; public final ArrayList<WeightedString> mShortcutTargets; public final ArrayList<PendingAttribute> mBigrams; public PtNodeInfo(final int originalAddress, final int endAddress, final int flags, - final int[] characters, final int frequency, final int parentAddress, + final int[] characters, final ProbabilityInfo probabilityInfo, final int parentAddress, final int childrenAddress, final ArrayList<WeightedString> shortcutTargets, final ArrayList<PendingAttribute> bigrams) { mOriginalAddress = originalAddress; mEndAddress = endAddress; mFlags = flags; mCharacters = characters; - mFrequency = frequency; + mProbabilityInfo = probabilityInfo; mParentAddress = parentAddress; mChildrenAddress = childrenAddress; mShortcutTargets = shortcutTargets; mBigrams = bigrams; } + + public boolean isTerminal() { + return mProbabilityInfo != null; + } } diff --git a/java/src/com/android/inputmethod/latin/makedict/Ver2DictDecoder.java b/java/src/com/android/inputmethod/latin/makedict/Ver2DictDecoder.java index d35f780cf..fd6138d41 100644 --- a/java/src/com/android/inputmethod/latin/makedict/Ver2DictDecoder.java +++ b/java/src/com/android/inputmethod/latin/makedict/Ver2DictDecoder.java @@ -20,7 +20,6 @@ import com.android.inputmethod.annotations.UsedForTesting; import com.android.inputmethod.latin.makedict.BinaryDictDecoderUtils.CharEncoding; import com.android.inputmethod.latin.makedict.BinaryDictDecoderUtils.DictBuffer; import com.android.inputmethod.latin.makedict.FormatSpec.FormatOptions; -import com.android.inputmethod.latin.makedict.FusionDictionary.PtNode; import com.android.inputmethod.latin.makedict.FusionDictionary.WeightedString; import android.util.Log; @@ -38,10 +37,82 @@ import java.util.Arrays; public class Ver2DictDecoder extends AbstractDictDecoder { private static final String TAG = Ver2DictDecoder.class.getSimpleName(); - protected static class PtNodeReader extends AbstractDictDecoder.PtNodeReader { - private static int readFrequency(final DictBuffer dictBuffer) { + /** + * A utility class for reading a PtNode. + */ + protected static class PtNodeReader { + private static ProbabilityInfo readProbabilityInfo(final DictBuffer dictBuffer) { + // Ver2 dicts don't contain historical information. + return new ProbabilityInfo(dictBuffer.readUnsignedByte()); + } + + protected static int readPtNodeOptionFlags(final DictBuffer dictBuffer) { return dictBuffer.readUnsignedByte(); } + + protected static int readChildrenAddress(final DictBuffer dictBuffer, + final int ptNodeFlags) { + switch (ptNodeFlags & FormatSpec.MASK_CHILDREN_ADDRESS_TYPE) { + case FormatSpec.FLAG_CHILDREN_ADDRESS_TYPE_ONEBYTE: + return dictBuffer.readUnsignedByte(); + case FormatSpec.FLAG_CHILDREN_ADDRESS_TYPE_TWOBYTES: + return dictBuffer.readUnsignedShort(); + case FormatSpec.FLAG_CHILDREN_ADDRESS_TYPE_THREEBYTES: + return dictBuffer.readUnsignedInt24(); + case FormatSpec.FLAG_CHILDREN_ADDRESS_TYPE_NOADDRESS: + default: + return FormatSpec.NO_CHILDREN_ADDRESS; + } + } + + // Reads shortcuts and returns the read length. + protected static int readShortcut(final DictBuffer dictBuffer, + final ArrayList<WeightedString> shortcutTargets) { + final int pointerBefore = dictBuffer.position(); + dictBuffer.readUnsignedShort(); // skip the size + while (true) { + final int targetFlags = dictBuffer.readUnsignedByte(); + final String word = CharEncoding.readString(dictBuffer); + shortcutTargets.add(new WeightedString(word, + targetFlags & FormatSpec.FLAG_BIGRAM_SHORTCUT_ATTR_FREQUENCY)); + if (0 == (targetFlags & FormatSpec.FLAG_BIGRAM_SHORTCUT_ATTR_HAS_NEXT)) break; + } + return dictBuffer.position() - pointerBefore; + } + + protected static int readBigramAddresses(final DictBuffer dictBuffer, + final ArrayList<PendingAttribute> bigrams, final int baseAddress) { + int readLength = 0; + int bigramCount = 0; + while (bigramCount++ < FormatSpec.MAX_BIGRAMS_IN_A_PTNODE) { + final int bigramFlags = dictBuffer.readUnsignedByte(); + ++readLength; + final int sign = 0 == (bigramFlags & FormatSpec.FLAG_BIGRAM_ATTR_OFFSET_NEGATIVE) + ? 1 : -1; + int bigramAddress = baseAddress + readLength; + switch (bigramFlags & FormatSpec.MASK_BIGRAM_ATTR_ADDRESS_TYPE) { + case FormatSpec.FLAG_BIGRAM_ATTR_ADDRESS_TYPE_ONEBYTE: + bigramAddress += sign * dictBuffer.readUnsignedByte(); + readLength += 1; + break; + case FormatSpec.FLAG_BIGRAM_ATTR_ADDRESS_TYPE_TWOBYTES: + bigramAddress += sign * dictBuffer.readUnsignedShort(); + readLength += 2; + break; + case FormatSpec.FLAG_BIGRAM_ATTR_ADDRESS_TYPE_THREEBYTES: + bigramAddress += sign * dictBuffer.readUnsignedInt24(); + readLength += 3; + break; + default: + throw new RuntimeException("Has bigrams with no address"); + } + bigrams.add(new PendingAttribute( + bigramFlags & FormatSpec.FLAG_BIGRAM_SHORTCUT_ATTR_FREQUENCY, + bigramAddress)); + if (0 == (bigramFlags & FormatSpec.FLAG_BIGRAM_SHORTCUT_ATTR_HAS_NEXT)) break; + } + return readLength; + } } protected final File mDictionaryBinaryFile; @@ -95,8 +166,8 @@ public class Ver2DictDecoder extends AbstractDictDecoder { } final DictionaryHeader header = super.readHeader(mDictBuffer); final int version = header.mFormatOptions.mVersion; - if (!(version >= 2 && version <= 3)) { - throw new UnsupportedFormatException("File header has a wrong version : " + version); + if (version != FormatSpec.VERSION2) { + throw new UnsupportedFormatException("File header has a wrong version : " + version); } return header; } @@ -108,12 +179,6 @@ public class Ver2DictDecoder extends AbstractDictDecoder { int addressPointer = ptNodePos; final int flags = PtNodeReader.readPtNodeOptionFlags(mDictBuffer); addressPointer += FormatSpec.PTNODE_FLAGS_SIZE; - - final int parentAddress = PtNodeReader.readParentAddress(mDictBuffer, options); - if (BinaryDictIOUtils.supportsDynamicUpdate(options)) { - addressPointer += FormatSpec.PARENT_ADDRESS_SIZE; - } - final int characters[]; if (0 != (flags & FormatSpec.FLAG_HAS_MULTIPLE_CHARS)) { int index = 0; @@ -133,14 +198,14 @@ public class Ver2DictDecoder extends AbstractDictDecoder { addressPointer += CharEncoding.getCharSize(character); characters = new int[] { character }; } - final int frequency; + final ProbabilityInfo probabilityInfo; if (0 != (FormatSpec.FLAG_IS_TERMINAL & flags)) { - frequency = PtNodeReader.readFrequency(mDictBuffer); + probabilityInfo = PtNodeReader.readProbabilityInfo(mDictBuffer); addressPointer += FormatSpec.PTNODE_FREQUENCY_SIZE; } else { - frequency = PtNode.NOT_A_TERMINAL; + probabilityInfo = null; } - int childrenAddress = PtNodeReader.readChildrenAddress(mDictBuffer, flags, options); + int childrenAddress = PtNodeReader.readChildrenAddress(mDictBuffer, flags); if (childrenAddress != FormatSpec.NO_CHILDREN_ADDRESS) { childrenAddress += addressPointer; } @@ -166,8 +231,8 @@ public class Ver2DictDecoder extends AbstractDictDecoder { } else { bigrams = null; } - return new PtNodeInfo(ptNodePos, addressPointer, flags, characters, frequency, - parentAddress, childrenAddress, shortcutTargets, bigrams); + return new PtNodeInfo(ptNodePos, addressPointer, flags, characters, probabilityInfo, + FormatSpec.NO_PARENT_ADDRESS, childrenAddress, shortcutTargets, bigrams); } @Override @@ -223,40 +288,4 @@ public class Ver2DictDecoder extends AbstractDictDecoder { public boolean hasNextPtNodeArray() { return mDictBuffer.position() != FormatSpec.NO_FORWARD_LINK_ADDRESS; } - - @Override - public void skipPtNode(final FormatOptions formatOptions) { - final int flags = PtNodeReader.readPtNodeOptionFlags(mDictBuffer); - PtNodeReader.readParentAddress(mDictBuffer, formatOptions); - BinaryDictIOUtils.skipString(mDictBuffer, - (flags & FormatSpec.FLAG_HAS_MULTIPLE_CHARS) != 0); - PtNodeReader.readChildrenAddress(mDictBuffer, flags, formatOptions); - if ((flags & FormatSpec.FLAG_IS_TERMINAL) != 0) PtNodeReader.readFrequency(mDictBuffer); - if ((flags & FormatSpec.FLAG_HAS_SHORTCUT_TARGETS) != 0) { - final int shortcutsSize = mDictBuffer.readUnsignedShort(); - mDictBuffer.position(mDictBuffer.position() + shortcutsSize - - FormatSpec.PTNODE_SHORTCUT_LIST_SIZE_SIZE); - } - if ((flags & FormatSpec.FLAG_HAS_BIGRAMS) != 0) { - int bigramCount = 0; - while (bigramCount++ < FormatSpec.MAX_BIGRAMS_IN_A_PTNODE) { - final int bigramFlags = mDictBuffer.readUnsignedByte(); - switch (bigramFlags & FormatSpec.MASK_BIGRAM_ATTR_ADDRESS_TYPE) { - case FormatSpec.FLAG_BIGRAM_ATTR_ADDRESS_TYPE_ONEBYTE: - mDictBuffer.readUnsignedByte(); - break; - case FormatSpec.FLAG_BIGRAM_ATTR_ADDRESS_TYPE_TWOBYTES: - mDictBuffer.readUnsignedShort(); - break; - case FormatSpec.FLAG_BIGRAM_ATTR_ADDRESS_TYPE_THREEBYTES: - mDictBuffer.readUnsignedInt24(); - break; - } - if ((bigramFlags & FormatSpec.FLAG_BIGRAM_SHORTCUT_ATTR_HAS_NEXT) == 0) break; - } - if (bigramCount >= FormatSpec.MAX_BIGRAMS_IN_A_PTNODE) { - throw new RuntimeException("Too many bigrams in a PtNode."); - } - } - } } diff --git a/java/src/com/android/inputmethod/latin/makedict/Ver2DictEncoder.java b/java/src/com/android/inputmethod/latin/makedict/Ver2DictEncoder.java index 3de083ef3..634f63137 100644 --- a/java/src/com/android/inputmethod/latin/makedict/Ver2DictEncoder.java +++ b/java/src/com/android/inputmethod/latin/makedict/Ver2DictEncoder.java @@ -227,7 +227,7 @@ public class Ver2DictEncoder implements DictEncoder { final PtNode target = FusionDictionary.findWordInTree(dict.mRootNodeArray, bigram.mWord); final int addressOfBigram = target.mCachedAddressAfterUpdate; - final int unigramFrequencyForThisWord = target.mFrequency; + final int unigramFrequencyForThisWord = target.getProbability(); final int offset = addressOfBigram - (mPosition + FormatSpec.PTNODE_ATTRIBUTE_FLAGS_SIZE); final int bigramFlags = BinaryDictEncoderUtils.makeBigramFlags(bigramIterator.hasNext(), @@ -251,7 +251,7 @@ public class Ver2DictEncoder implements DictEncoder { writePtNodeFlags(ptNode, formatOptions); writeParentPosition(parentPosition, ptNode, formatOptions); writeCharacters(ptNode.mChars, ptNode.hasSeveralChars()); - writeFrequency(ptNode.mFrequency); + writeFrequency(ptNode.getProbability()); writeChildrenPosition(ptNode, formatOptions); writeShortcuts(ptNode.mShortcutTargets); writeBigrams(ptNode.mBigrams, dict); diff --git a/java/src/com/android/inputmethod/latin/makedict/Ver4DictDecoder.java b/java/src/com/android/inputmethod/latin/makedict/Ver4DictDecoder.java index 83707480d..1c74852fe 100644 --- a/java/src/com/android/inputmethod/latin/makedict/Ver4DictDecoder.java +++ b/java/src/com/android/inputmethod/latin/makedict/Ver4DictDecoder.java @@ -81,14 +81,11 @@ public class Ver4DictDecoder extends AbstractDictDecoder { // Insert unigrams to the fusion dictionary. for (final WordProperty wordProperty : wordProperties) { - // TODO: Support probability that is -1. - final int probability = wordProperty.getProbability() < 0 ? - 0 : wordProperty.getProbability(); if (wordProperty.mIsBlacklistEntry) { fusionDict.addBlacklistEntry(wordProperty.mWord, wordProperty.mShortcutTargets, wordProperty.mIsNotAWord); } else { - fusionDict.add(wordProperty.mWord, probability, + fusionDict.add(wordProperty.mWord, wordProperty.mProbabilityInfo, wordProperty.mShortcutTargets, wordProperty.mIsNotAWord); } } @@ -99,7 +96,7 @@ public class Ver4DictDecoder extends AbstractDictDecoder { } final String word0 = wordProperty.mWord; for (final WeightedString bigram : wordProperty.mBigrams) { - fusionDict.setBigram(word0, bigram.mWord, bigram.getProbability()); + fusionDict.setBigram(word0, bigram.mWord, bigram.mProbabilityInfo); } } return fusionDict; diff --git a/java/src/com/android/inputmethod/latin/makedict/WordProperty.java b/java/src/com/android/inputmethod/latin/makedict/WordProperty.java index b93a0a525..1fc61e10a 100644 --- a/java/src/com/android/inputmethod/latin/makedict/WordProperty.java +++ b/java/src/com/android/inputmethod/latin/makedict/WordProperty.java @@ -43,12 +43,12 @@ public final class WordProperty implements Comparable<WordProperty> { private int mHashCode = 0; - public WordProperty(final String word, final int probability, + public WordProperty(final String word, final ProbabilityInfo probabilityInfo, final ArrayList<WeightedString> shortcutTargets, final ArrayList<WeightedString> bigrams, final boolean isNotAWord, final boolean isBlacklistEntry) { mWord = word; - mProbabilityInfo = new ProbabilityInfo(probability); + mProbabilityInfo = probabilityInfo; mShortcutTargets = shortcutTargets; mBigrams = bigrams; mIsNotAWord = isNotAWord; diff --git a/java/src/com/android/inputmethod/latin/settings/DebugSettings.java b/java/src/com/android/inputmethod/latin/settings/DebugSettings.java index fa5ae92e7..c87dd1589 100644 --- a/java/src/com/android/inputmethod/latin/settings/DebugSettings.java +++ b/java/src/com/android/inputmethod/latin/settings/DebugSettings.java @@ -18,6 +18,7 @@ package com.android.inputmethod.latin.settings; import android.content.Intent; import android.content.SharedPreferences; +import android.content.res.Resources; import android.os.Bundle; import android.os.Process; import android.preference.CheckBoxPreference; @@ -32,6 +33,7 @@ import com.android.inputmethod.latin.LatinImeLogger; import com.android.inputmethod.latin.R; import com.android.inputmethod.latin.debug.ExternalDictionaryGetterForDebug; import com.android.inputmethod.latin.utils.ApplicationUtils; +import com.android.inputmethod.latin.utils.ResourceUtils; public final class DebugSettings extends PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener { @@ -42,6 +44,14 @@ public final class DebugSettings extends PreferenceFragment public static final String PREF_STATISTICS_LOGGING = "enable_logging"; public static final String PREF_USE_ONLY_PERSONALIZATION_DICTIONARY_FOR_DEBUG = "use_only_personalization_dictionary_for_debug"; + public static final String PREF_KEY_PREVIEW_SHOW_UP_START_SCALE = + "pref_key_preview_show_up_start_scale"; + public static final String PREF_KEY_PREVIEW_DISMISS_END_SCALE = + "pref_key_preview_dismiss_end_scale"; + public static final String PREF_KEY_PREVIEW_SHOW_UP_DURATION = + "pref_key_preview_show_up_duration"; + public static final String PREF_KEY_PREVIEW_DISMISS_DURATION = + "pref_key_preview_dismiss_duration"; private static final String PREF_READ_EXTERNAL_DICTIONARY = "read_external_dictionary"; private static final String PREF_DUMP_CONTACTS_DICT = "dump_contacts_dict"; private static final String PREF_DUMP_USER_DICT = "dump_user_dict"; @@ -101,6 +111,17 @@ public final class DebugSettings extends PreferenceFragment dictDumpPrefClickListener); findPreference(PREF_DUMP_PERSONALIZATION_DICT).setOnPreferenceClickListener( dictDumpPrefClickListener); + final Resources res = getResources(); + setupKeyPreviewAnimationDuration(prefs, res, PREF_KEY_PREVIEW_SHOW_UP_DURATION, + res.getInteger(R.integer.config_key_preview_show_up_duration)); + setupKeyPreviewAnimationDuration(prefs, res, PREF_KEY_PREVIEW_DISMISS_DURATION, + res.getInteger(R.integer.config_key_preview_dismiss_duration)); + setupKeyPreviewAnimationScale(prefs, res, PREF_KEY_PREVIEW_SHOW_UP_START_SCALE, + ResourceUtils.getFloatFromFraction( + res, R.fraction.config_key_preview_show_up_start_scale)); + setupKeyPreviewAnimationScale(prefs, res, PREF_KEY_PREVIEW_DISMISS_END_SCALE, + ResourceUtils.getFloatFromFraction( + res, R.fraction.config_key_preview_dismiss_end_scale)); mServiceNeedsRestart = false; mDebugMode = (CheckBoxPreference) findPreference(PREF_DEBUG_MODE); @@ -180,4 +201,92 @@ public final class DebugSettings extends PreferenceFragment mDebugMode.setSummary(version); } } + + private void setupKeyPreviewAnimationScale(final SharedPreferences sp, final Resources res, + final String prefKey, final float defaultValue) { + final SeekBarDialogPreference pref = (SeekBarDialogPreference)findPreference(prefKey); + if (pref == null) { + return; + } + pref.setInterface(new SeekBarDialogPreference.ValueProxy() { + private static final float PERCENTAGE_FLOAT = 100.0f; + + private float getValueFromPercentage(final int percentage) { + return percentage / PERCENTAGE_FLOAT; + } + + private int getPercentageFromValue(final float floatValue) { + return (int)(floatValue * PERCENTAGE_FLOAT); + } + + @Override + public void writeValue(final int value, final String key) { + sp.edit().putFloat(key, getValueFromPercentage(value)).apply(); + } + + @Override + public void writeDefaultValue(final String key) { + sp.edit().remove(key).apply(); + } + + @Override + public int readValue(final String key) { + return getPercentageFromValue( + Settings.readKeyPreviewAnimationScale(sp, key, defaultValue)); + } + + @Override + public int readDefaultValue(final String key) { + return getPercentageFromValue(defaultValue); + } + + @Override + public String getValueText(final int value) { + if (value < 0) { + return res.getString(R.string.settings_system_default); + } + return String.format("%d%%", value); + } + + @Override + public void feedbackValue(final int value) {} + }); + } + + private void setupKeyPreviewAnimationDuration(final SharedPreferences sp, final Resources res, + final String prefKey, final int defaultValue) { + final SeekBarDialogPreference pref = (SeekBarDialogPreference)findPreference(prefKey); + if (pref == null) { + return; + } + pref.setInterface(new SeekBarDialogPreference.ValueProxy() { + @Override + public void writeValue(final int value, final String key) { + sp.edit().putInt(key, value).apply(); + } + + @Override + public void writeDefaultValue(final String key) { + sp.edit().remove(key).apply(); + } + + @Override + public int readValue(final String key) { + return Settings.readKeyPreviewAnimationDuration(sp, key, defaultValue); + } + + @Override + public int readDefaultValue(final String key) { + return defaultValue; + } + + @Override + public String getValueText(final int value) { + return res.getString(R.string.abbreviation_unit_milliseconds, value); + } + + @Override + public void feedbackValue(final int value) {} + }); + } } diff --git a/java/src/com/android/inputmethod/latin/settings/Settings.java b/java/src/com/android/inputmethod/latin/settings/Settings.java index 9bf269b6e..45c5b733f 100644 --- a/java/src/com/android/inputmethod/latin/settings/Settings.java +++ b/java/src/com/android/inputmethod/latin/settings/Settings.java @@ -107,6 +107,9 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang public static final String PREF_EMOJI_CATEGORY_LAST_TYPED_ID = "emoji_category_last_typed_id"; public static final String PREF_LAST_SHOWN_EMOJI_CATEGORY_ID = "last_shown_emoji_category_id"; + private static final float UNDEFINED_PREFERENCE_VALUE_FLOAT = -1.0f; + private static final int UNDEFINED_PREFERENCE_VALUE_INT = -1; + private Context mContext; private Resources mRes; private SharedPreferences mPrefs; @@ -301,19 +304,27 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang public static float readKeypressSoundVolume(final SharedPreferences prefs, final Resources res) { - final float volume = prefs.getFloat(PREF_KEYPRESS_SOUND_VOLUME, -1.0f); - return (volume >= 0) ? volume : readDefaultKeypressSoundVolume(res); + final float volume = prefs.getFloat( + PREF_KEYPRESS_SOUND_VOLUME, UNDEFINED_PREFERENCE_VALUE_FLOAT); + return (volume != UNDEFINED_PREFERENCE_VALUE_FLOAT) ? volume + : readDefaultKeypressSoundVolume(res); } + // Default keypress sound volume for unknown devices. + // The negative value means system default. + private static final String DEFAULT_KEYPRESS_SOUND_VOLUME = Float.toString(-1.0f); + public static float readDefaultKeypressSoundVolume(final Resources res) { - return Float.parseFloat( - ResourceUtils.getDeviceOverrideValue(res, R.array.keypress_volumes)); + return Float.parseFloat(ResourceUtils.getDeviceOverrideValue(res, + R.array.keypress_volumes, DEFAULT_KEYPRESS_SOUND_VOLUME)); } public static int readKeyLongpressTimeout(final SharedPreferences prefs, final Resources res) { - final int ms = prefs.getInt(PREF_KEY_LONGPRESS_TIMEOUT, -1); - return (ms >= 0) ? ms : readDefaultKeyLongpressTimeout(res); + final int milliseconds = prefs.getInt( + PREF_KEY_LONGPRESS_TIMEOUT, UNDEFINED_PREFERENCE_VALUE_INT); + return (milliseconds != UNDEFINED_PREFERENCE_VALUE_INT) ? milliseconds + : readDefaultKeyLongpressTimeout(res); } public static int readDefaultKeyLongpressTimeout(final Resources res) { @@ -322,19 +333,37 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang public static int readKeypressVibrationDuration(final SharedPreferences prefs, final Resources res) { - final int ms = prefs.getInt(PREF_VIBRATION_DURATION_SETTINGS, -1); - return (ms >= 0) ? ms : readDefaultKeypressVibrationDuration(res); + final int milliseconds = prefs.getInt( + PREF_VIBRATION_DURATION_SETTINGS, UNDEFINED_PREFERENCE_VALUE_INT); + return (milliseconds != UNDEFINED_PREFERENCE_VALUE_INT) ? milliseconds + : readDefaultKeypressVibrationDuration(res); } + // Default keypress vibration duration for unknown devices. + // The negative value means system default. + private static final String DEFAULT_KEYPRESS_VIBRATION_DURATION = Integer.toString(-1); + public static int readDefaultKeypressVibrationDuration(final Resources res) { - return Integer.parseInt( - ResourceUtils.getDeviceOverrideValue(res, R.array.keypress_vibration_durations)); + return Integer.parseInt(ResourceUtils.getDeviceOverrideValue(res, + R.array.keypress_vibration_durations, DEFAULT_KEYPRESS_VIBRATION_DURATION)); } public static boolean readUsabilityStudyMode(final SharedPreferences prefs) { return prefs.getBoolean(DebugSettings.PREF_USABILITY_STUDY_MODE, true); } + public static float readKeyPreviewAnimationScale(final SharedPreferences prefs, + final String prefKey, final float defaultValue) { + final float fraction = prefs.getFloat(prefKey, UNDEFINED_PREFERENCE_VALUE_FLOAT); + return (fraction != UNDEFINED_PREFERENCE_VALUE_FLOAT) ? fraction : defaultValue; + } + + public static int readKeyPreviewAnimationDuration(final SharedPreferences prefs, + final String prefKey, final int defaultValue) { + final int milliseconds = prefs.getInt(prefKey, UNDEFINED_PREFERENCE_VALUE_INT); + return (milliseconds != UNDEFINED_PREFERENCE_VALUE_INT) ? milliseconds : defaultValue; + } + public static boolean readUseFullscreenMode(final Resources res) { return res.getBoolean(R.bool.config_use_fullscreen_mode); } diff --git a/java/src/com/android/inputmethod/latin/settings/SettingsValues.java b/java/src/com/android/inputmethod/latin/settings/SettingsValues.java index 2979544ae..90d3519a4 100644 --- a/java/src/com/android/inputmethod/latin/settings/SettingsValues.java +++ b/java/src/com/android/inputmethod/latin/settings/SettingsValues.java @@ -29,6 +29,7 @@ import com.android.inputmethod.latin.InputAttributes; import com.android.inputmethod.latin.R; import com.android.inputmethod.latin.RichInputMethodManager; import com.android.inputmethod.latin.utils.AsyncResultHolder; +import com.android.inputmethod.latin.utils.ResourceUtils; import com.android.inputmethod.latin.utils.TargetPackageInfoGetterTask; import java.util.Arrays; @@ -93,6 +94,10 @@ public final class SettingsValues { // Debug settings public final boolean mIsInternal; + public final int mKeyPreviewShowUpDuration; + public final int mKeyPreviewDismissDuration; + public final float mKeyPreviewShowUpStartScale; + public final float mKeyPreviewDismissEndScale; public SettingsValues(final Context context, final SharedPreferences prefs, final Resources res, final InputAttributes inputAttributes) { @@ -149,6 +154,20 @@ public final class SettingsValues { AdditionalFeaturesSettingUtils.readAdditionalFeaturesPreferencesIntoArray( prefs, mAdditionalFeaturesSettingValues); mIsInternal = Settings.isInternal(prefs); + mKeyPreviewShowUpDuration = Settings.readKeyPreviewAnimationDuration( + prefs, DebugSettings.PREF_KEY_PREVIEW_SHOW_UP_DURATION, + res.getInteger(R.integer.config_key_preview_show_up_duration)); + mKeyPreviewDismissDuration = Settings.readKeyPreviewAnimationDuration( + prefs, DebugSettings.PREF_KEY_PREVIEW_DISMISS_DURATION, + res.getInteger(R.integer.config_key_preview_dismiss_duration)); + mKeyPreviewShowUpStartScale = Settings.readKeyPreviewAnimationScale( + prefs, DebugSettings.PREF_KEY_PREVIEW_SHOW_UP_START_SCALE, + ResourceUtils.getFloatFromFraction( + res, R.fraction.config_key_preview_show_up_start_scale)); + mKeyPreviewDismissEndScale = Settings.readKeyPreviewAnimationScale( + prefs, DebugSettings.PREF_KEY_PREVIEW_DISMISS_END_SCALE, + ResourceUtils.getFloatFromFraction( + res, R.fraction.config_key_preview_dismiss_end_scale)); mUseOnlyPersonalizationDictionaryForDebug = prefs.getBoolean( DebugSettings.PREF_USE_ONLY_PERSONALIZATION_DICTIONARY_FOR_DEBUG, false); mDisplayOrientation = res.getConfiguration().orientation; diff --git a/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestions.java b/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestions.java index b96175f02..2f4c1839b 100644 --- a/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestions.java +++ b/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestions.java @@ -209,10 +209,10 @@ public final class MoreSuggestions extends Keyboard { final String word = mSuggestedWords.getWord(index); final String info = mSuggestedWords.getDebugString(index); final int indexInMoreSuggestions = index + SUGGESTION_CODE_BASE; - final Key key = new Key( - params, word, info, KeyboardIconsSet.ICON_UNDEFINED, indexInMoreSuggestions, - null /* outputText */, x, y, width, params.mDefaultRowHeight, - 0 /* labelFlags */, Key.BACKGROUND_TYPE_NORMAL); + final Key key = new Key(word, KeyboardIconsSet.ICON_UNDEFINED, + indexInMoreSuggestions, null /* outputText */, info, 0 /* labelFlags */, + Key.BACKGROUND_TYPE_NORMAL, x, y, width, params.mDefaultRowHeight, + params.mHorizontalGap, params.mVerticalGap); params.markAsEdgeKey(key, index); params.onAddKey(key); final int columnNumber = params.getColumnNumber(index); diff --git a/java/src/com/android/inputmethod/latin/utils/ResourceUtils.java b/java/src/com/android/inputmethod/latin/utils/ResourceUtils.java index deb28a08d..49f4929b4 100644 --- a/java/src/com/android/inputmethod/latin/utils/ResourceUtils.java +++ b/java/src/com/android/inputmethod/latin/utils/ResourceUtils.java @@ -67,7 +67,8 @@ public final class ResourceUtils { sBuildKeyValuesDebugString = "[" + TextUtils.join(" ", keyValuePairs) + "]"; } - public static String getDeviceOverrideValue(final Resources res, final int overrideResId) { + public static String getDeviceOverrideValue(final Resources res, final int overrideResId, + final String defaultValue) { final int orientation = res.getConfiguration().orientation; final String key = overrideResId + "-" + orientation; if (sDeviceOverrideValueMap.containsKey(key)) { @@ -86,23 +87,6 @@ public final class ResourceUtils { return overrideValue; } - String defaultValue = null; - try { - defaultValue = findDefaultConstant(overrideArray); - // The defaultValue might be an empty string. - if (defaultValue == null) { - Log.w(TAG, "Couldn't find override value nor default value:" - + " resource="+ res.getResourceEntryName(overrideResId) - + " build=" + sBuildKeyValuesDebugString); - } else { - Log.i(TAG, "Found default value:" - + " resource="+ res.getResourceEntryName(overrideResId) - + " build=" + sBuildKeyValuesDebugString - + " default=" + defaultValue); - } - } catch (final DeviceOverridePatternSyntaxError e) { - Log.w(TAG, "Syntax error, ignored", e); - } sDeviceOverrideValueMap.put(key, defaultValue); return defaultValue; } @@ -152,8 +136,7 @@ public final class ResourceUtils { } final String condition = conditionConstant.substring(0, posComma); if (condition.isEmpty()) { - // Default condition. The default condition should be searched by - // {@link #findConstantForDefault(String[])}. + Log.w(TAG, "Array element has no condition: " + conditionConstant); continue; } try { @@ -199,24 +182,6 @@ public final class ResourceUtils { return matchedAll; } - @UsedForTesting - static String findDefaultConstant(final String[] conditionConstantArray) - throws DeviceOverridePatternSyntaxError { - if (conditionConstantArray == null) { - return null; - } - for (final String condition : conditionConstantArray) { - final int posComma = condition.indexOf(','); - if (posComma < 0) { - throw new DeviceOverridePatternSyntaxError("Array element has no comma", condition); - } - if (posComma == 0) { // condition is empty. - return condition.substring(posComma + 1); - } - } - return null; - } - public static int getDefaultKeyboardWidth(final Resources res) { final DisplayMetrics dm = res.getDisplayMetrics(); return dm.widthPixels; @@ -224,12 +189,13 @@ public final class ResourceUtils { public static int getDefaultKeyboardHeight(final Resources res) { final DisplayMetrics dm = res.getDisplayMetrics(); - final String keyboardHeightString = getDeviceOverrideValue(res, R.array.keyboard_heights); + final String keyboardHeightInDp = getDeviceOverrideValue( + res, R.array.keyboard_heights, null /* defaultValue */); final float keyboardHeight; - if (TextUtils.isEmpty(keyboardHeightString)) { + if (TextUtils.isEmpty(keyboardHeightInDp)) { keyboardHeight = res.getDimension(R.dimen.config_default_keyboard_height); } else { - keyboardHeight = Float.parseFloat(keyboardHeightString) * dm.density; + keyboardHeight = Float.parseFloat(keyboardHeightInDp) * dm.density; } final float maxKeyboardHeight = res.getFraction( R.fraction.config_max_keyboard_height, dm.heightPixels, dm.heightPixels); @@ -260,6 +226,10 @@ public final class ResourceUtils { return dimension >= 0; } + public static float getFloatFromFraction(final Resources res, final int fractionResId) { + return res.getFraction(fractionResId, 1, 1); + } + public static float getFraction(final TypedArray a, final int index, final float defValue) { final TypedValue value = a.peekValue(index); if (value == null || !isFractionValue(value)) { |