aboutsummaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
Diffstat (limited to 'java')
-rw-r--r--java/res/values-iw-sw600dp/config-spacing-and-punctuations.xml (renamed from java/res/xml-sw600dp/key_colemak_colon.xml)18
-rw-r--r--java/res/values-iw/config-spacing-and-punctuations.xml25
-rw-r--r--java/res/values-sw600dp/config-spacing-and-punctuations.xml2
-rw-r--r--java/res/values/config-spacing-and-punctuations.xml2
-rw-r--r--java/res/values/strings.xml24
-rw-r--r--java/res/xml-sw600dp/key_styles_enter.xml2
-rw-r--r--java/res/xml-sw600dp/keys_pcqwerty2_right3.xml2
-rw-r--r--java/res/xml-sw600dp/keys_pcqwerty3_right2.xml2
-rw-r--r--java/res/xml-sw600dp/keys_pcqwerty4_right3.xml2
-rw-r--r--java/res/xml-sw600dp/row_pcqwerty5.xml39
-rw-r--r--java/res/xml-sw600dp/rowkeys_pcqwerty1.xml177
-rw-r--r--java/res/xml-sw600dp/rows_colemak.xml2
-rw-r--r--java/res/xml-sw600dp/rows_myanmar.xml73
-rw-r--r--java/res/xml-sw600dp/rows_pcqwerty.xml17
-rw-r--r--java/res/xml/kbd_myanmar.xml (renamed from java/res/xml/key_colemak_colon.xml)30
-rw-r--r--java/res/xml/key_f1.xml3
-rw-r--r--java/res/xml/key_styles_currency.xml2
-rw-r--r--java/res/xml/keyboard_layout_set_myanmar.xml58
-rw-r--r--java/res/xml/keys_comma_period_symbols.xml3
-rw-r--r--java/res/xml/keys_pcqwerty2_right3.xml2
-rw-r--r--java/res/xml/keys_pcqwerty3_right2.xml2
-rw-r--r--java/res/xml/keys_pcqwerty4_right3.xml2
-rw-r--r--java/res/xml/method.xml29
-rw-r--r--java/res/xml/row_pcqwerty5.xml23
-rw-r--r--java/res/xml/rowkeys_colemak1.xml17
-rw-r--r--java/res/xml/rowkeys_myanmar1.xml134
-rw-r--r--java/res/xml/rowkeys_myanmar2.xml120
-rw-r--r--java/res/xml/rowkeys_myanmar3.xml112
-rw-r--r--java/res/xml/rowkeys_myanmar4.xml104
-rw-r--r--java/res/xml/rowkeys_pcqwerty1.xml125
-rw-r--r--java/res/xml/rowkeys_pcqwerty1_shift.xml5
-rw-r--r--java/res/xml/rows_colemak.xml2
-rw-r--r--java/res/xml/rows_myanmar.xml57
-rw-r--r--java/res/xml/rows_pcqwerty.xml15
-rw-r--r--java/src/com/android/inputmethod/event/Combiner.java14
-rw-r--r--java/src/com/android/inputmethod/event/CombinerChain.java69
-rw-r--r--java/src/com/android/inputmethod/event/DeadKeyCombiner.java5
-rw-r--r--java/src/com/android/inputmethod/event/Event.java87
-rw-r--r--java/src/com/android/inputmethod/event/EventDecoderSpec.java26
-rw-r--r--java/src/com/android/inputmethod/event/EventInterpreter.java58
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java6
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java15
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java31
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java997
-rw-r--r--java/src/com/android/inputmethod/latin/BinaryDictionary.java8
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java54
-rw-r--r--java/src/com/android/inputmethod/latin/WordComposer.java6
-rw-r--r--java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java81
-rw-r--r--java/src/com/android/inputmethod/latin/settings/Settings.java32
-rw-r--r--java/src/com/android/inputmethod/latin/settings/SettingsValues.java4
-rw-r--r--java/src/com/android/inputmethod/latin/settings/SpacingAndPunctuations.java5
-rw-r--r--java/src/com/android/inputmethod/latin/suggestions/SuggestionStripLayoutHelper.java5
-rw-r--r--java/src/com/android/inputmethod/latin/suggestions/SuggestionStripView.java5
-rw-r--r--java/src/com/android/inputmethod/latin/utils/ImportantNoticeUtils.java13
54 files changed, 1823 insertions, 930 deletions
diff --git a/java/res/xml-sw600dp/key_colemak_colon.xml b/java/res/values-iw-sw600dp/config-spacing-and-punctuations.xml
index 25b0e52b8..b562b18db 100644
--- a/java/res/xml-sw600dp/key_colemak_colon.xml
+++ b/java/res/values-iw-sw600dp/config-spacing-and-punctuations.xml
@@ -2,7 +2,7 @@
<!--
/*
**
-** Copyright 2012, The Android Open Source Project
+** Copyright 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.
@@ -17,13 +17,9 @@
** limitations under the License.
*/
-->
-
-<merge
- xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
- <Key
- latin:keySpec=":"
- latin:keyHintLabel=";"
- latin:moreKeys=";"
- latin:keyStyle="hasShiftedLetterHintStyle" />
-</merge>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- The all letters need to be mirrored are found at
+ http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt -->
+ <!-- Symbols that are suggested between words -->
+ <string name="suggested_punctuations" translatable="false">:,;,\",(|),)|(,\',-,/,@,_</string>
+</resources>
diff --git a/java/res/values-iw/config-spacing-and-punctuations.xml b/java/res/values-iw/config-spacing-and-punctuations.xml
new file mode 100644
index 000000000..9a9e6ee7a
--- /dev/null
+++ b/java/res/values-iw/config-spacing-and-punctuations.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 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.
+*/
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- The all letters need to be mirrored are found at
+ http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt -->
+ <!-- Symbols that are suggested between words -->
+ <string name="suggested_punctuations" translatable="false">!,?,\\,,:,;,\",(|),)|(,\',-,/,@,_</string>
+</resources>
diff --git a/java/res/values-sw600dp/config-spacing-and-punctuations.xml b/java/res/values-sw600dp/config-spacing-and-punctuations.xml
index 9c12cf49a..4d19412a3 100644
--- a/java/res/values-sw600dp/config-spacing-and-punctuations.xml
+++ b/java/res/values-sw600dp/config-spacing-and-punctuations.xml
@@ -19,5 +19,5 @@
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<!-- Symbols that are suggested between words -->
- <string name="suggested_punctuations" translatable="false">:,;,\",!text/keyspec_left_parenthesis,!text/keyspec_right_parenthesis,\',-,/,@,_</string>
+ <string name="suggested_punctuations" translatable="false">:,;,\",(,),\',-,/,@,_</string>
</resources>
diff --git a/java/res/values/config-spacing-and-punctuations.xml b/java/res/values/config-spacing-and-punctuations.xml
index 1dd2e1f6b..ad5663d9b 100644
--- a/java/res/values/config-spacing-and-punctuations.xml
+++ b/java/res/values/config-spacing-and-punctuations.xml
@@ -21,7 +21,7 @@
<!-- TODO: these settings depend on the language. They should be put either in the dictionary
header, or in the subtype maybe? -->
<!-- Symbols that are suggested between words -->
- <string name="suggested_punctuations" translatable="false">!,?,\\,,:,;,\",!text/keyspec_left_parenthesis,!text/keyspec_right_parenthesis,\',-,/,@,_</string>
+ <string name="suggested_punctuations" translatable="false">!,?,\\,,:,;,\",(,),\',-,/,@,_</string>
<!-- Symbols that are normally preceded by a space (used to add an auto-space before these) -->
<string name="symbols_preceded_by_space" translatable="false">([{&amp;</string>
<!-- Symbols that are normally followed by a space (used to add an auto-space after these) -->
diff --git a/java/res/values/strings.xml b/java/res/values/strings.xml
index 5efa73362..bd18e5544 100644
--- a/java/res/values/strings.xml
+++ b/java/res/values/strings.xml
@@ -337,29 +337,39 @@
<!-- Title of the item to change the keyboard theme [CHAR LIMIT=20]-->
<string name="keyboard_layout">Keyboard theme</string>
- <!-- Description for English (United Kingdom) keyboard subtype [CHAR LIMIT=25] -->
+ <!-- Description for English (UK) keyboard subtype [CHAR LIMIT=25]
+ (UK) should be an abbreviation of United Kingdom to fit in the CHAR LIMIT. -->
<string name="subtype_en_GB">English (UK)</string>
- <!-- Description for English (United States) keyboard subtype [CHAR LIMIT=25] -->
+ <!-- Description for English (US) keyboard subtype [CHAR LIMIT=25]
+ (US) should be an abbreviation of United States to fit in the CHAR LIMIT. -->
<string name="subtype_en_US">English (US)</string>
- <!-- Description for Spanish (United States) keyboard subtype [CHAR LIMIT=25] -->
+ <!-- Description for Spanish (US) keyboard subtype [CHAR LIMIT=25]
+ (US) should be an abbreviation of United States to fit in the CHAR LIMIT. -->
<string name="subtype_es_US">Spanish (US)</string>
- <!-- Description for English (United Kingdom) keyboard subtype with explicit keyboard layout [CHAR LIMIT=25]
+ <!-- Description for English (UK) keyboard subtype with explicit keyboard layout [CHAR LIMIT=25]
+ (UK) should be an abbreviation of United Kingdom to fit in the CHAR LIMIT.
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="KEYBOARD_LAYOUT" example="QWERTY">%s</xliff:g>)</string>
- <!-- Description for English (United States) keyboard subtype with explicit keyboard layout [CHAR LIMIT=25]
+ <!-- Description for English (US) keyboard subtype with explicit keyboard layout [CHAR LIMIT=25]
+ (US) should be an abbreviation of United States to fit in the CHAR LIMIT.
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="KEYBOARD_LAYOUT" example="QWERTY">%s</xliff:g>)</string>
- <!-- Description for Spanish (United States) keyboard subtype with explicit keyboard layout [CHAR LIMIT=25]
+ <!-- Description for Spanish (US) keyboard subtype with explicit keyboard layout [CHAR LIMIT=25]
+ (US) should be an abbreviation of United Statesn to fit in the CHAR LIMIT.
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="KEYBOARD_LAYOUT" example="QWERTY">%s</xliff:g>)</string>
- <!-- Description for Nepali (Traditional) keyboard subtype [CHAR LIMIT=25] -->
+ <!-- Description for Nepali (Traditional) keyboard subtype [CHAR LIMIT=25]
+ (Traditional) can be an abbreviation to fit in the CHAR LIMIT. -->
<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]
+ (Cyrillic) can be an abbreviation to fit in the CHAR LIMIT.
<string name="subtype_serbian_cyrillic">Serbian (Cyrillic)</string>
Description for Serbian Latin keyboard subtype [CHAR LIMIT=25]
+ (Latin) can be an abbreviation to fit in the CHAR LIMIT.
<string name="subtype_serbian_latin">Serbian (Latin)</string>
Description for Serbian Latin keyboard subtype with explicit keyboard layout [CHAR LIMIT=25]
+ (Latin) can be an abbreviation to fit in the CHAR LIMIT.
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="KEYBOARD_LAYOUT" example="QWERTY">%s</xliff:g>)</string>
-->
diff --git a/java/res/xml-sw600dp/key_styles_enter.xml b/java/res/xml-sw600dp/key_styles_enter.xml
index 38a38fd45..05762ad14 100644
--- a/java/res/xml-sw600dp/key_styles_enter.xml
+++ b/java/res/xml-sw600dp/key_styles_enter.xml
@@ -112,7 +112,7 @@
>
<key-style
latin:styleName="enterKeyStyle"
- latin:keySpec="!text/label_go_key|!code/key_shift_enter"
+ latin:keySpec="!icon/enter_key|!code/key_shift_enter"
latin:parentStyle="defaultEnterKeyStyle" />
</case>
<case
diff --git a/java/res/xml-sw600dp/keys_pcqwerty2_right3.xml b/java/res/xml-sw600dp/keys_pcqwerty2_right3.xml
index ab99ec574..76ac6bbdd 100644
--- a/java/res/xml-sw600dp/keys_pcqwerty2_right3.xml
+++ b/java/res/xml-sw600dp/keys_pcqwerty2_right3.xml
@@ -23,7 +23,7 @@
>
<switch>
<case
- latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted"
+ latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted|alphabetShiftLocked"
>
<Key
latin:keySpec="["
diff --git a/java/res/xml-sw600dp/keys_pcqwerty3_right2.xml b/java/res/xml-sw600dp/keys_pcqwerty3_right2.xml
index 54433964f..f18fb507c 100644
--- a/java/res/xml-sw600dp/keys_pcqwerty3_right2.xml
+++ b/java/res/xml-sw600dp/keys_pcqwerty3_right2.xml
@@ -23,7 +23,7 @@
>
<switch>
<case
- latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted"
+ latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted|alphabetShiftLocked"
>
<Key
latin:keySpec=";"
diff --git a/java/res/xml-sw600dp/keys_pcqwerty4_right3.xml b/java/res/xml-sw600dp/keys_pcqwerty4_right3.xml
index c95ca2ee7..ff1a2c85c 100644
--- a/java/res/xml-sw600dp/keys_pcqwerty4_right3.xml
+++ b/java/res/xml-sw600dp/keys_pcqwerty4_right3.xml
@@ -23,7 +23,7 @@
>
<switch>
<case
- latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted"
+ latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted|alphabetShiftLocked"
>
<Key
latin:keySpec=","
diff --git a/java/res/xml-sw600dp/row_pcqwerty5.xml b/java/res/xml-sw600dp/row_pcqwerty5.xml
index b854f1051..52b581ae6 100644
--- a/java/res/xml-sw600dp/row_pcqwerty5.xml
+++ b/java/res/xml-sw600dp/row_pcqwerty5.xml
@@ -24,37 +24,32 @@
<Row
latin:keyWidth="7.0%p"
>
+ <include
+ latin:keyWidth="9.0%p"
+ latin:keyboardLayout="@xml/key_shortcut" />
<switch>
<case
latin:languageSwitchKeyEnabled="true"
>
<Key
latin:keyStyle="languageSwitchKeyStyle"
- latin:keyWidth="9.0%p"
- latin:backgroundType="functional" />
- </case>
- </switch>
- <Key
- latin:keyStyle="spaceKeyStyle"
- latin:keyXPos="25.5%p"
- latin:keyWidth="49.0%p" />
- <switch>
- <case
- latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted"
- >
- <include
- latin:keyXPos="-9.0%p"
- latin:keyWidth="9.0%p"
- latin:keyboardLayout="@xml/key_shortcut" />
+ latin:keyXPos="22.0%p"
+ latin:keyWidth="9.0%p" />
+ <Key
+ latin:keyStyle="spaceKeyStyle"
+ latin:keyWidth="40.0%p" />
</case>
- <!-- keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted" -->
<default>
- <include
- latin:keyXPos="-9.0%p"
- latin:keyWidth="9.0%p"
- latin:backgroundType="functional"
- latin:keyboardLayout="@xml/key_f2" />
+ <Key
+ latin:keyStyle="spaceKeyStyle"
+ latin:keyXPos="29.0%p"
+ latin:keyWidth="42.0%p" />
</default>
</switch>
+ <include
+ latin:keyXPos="-9.0%p"
+ latin:keyWidth="9.0%p"
+ latin:backgroundType="functional"
+ latin:keyboardLayout="@xml/key_f2" />
</Row>
</merge>
diff --git a/java/res/xml-sw600dp/rowkeys_pcqwerty1.xml b/java/res/xml-sw600dp/rowkeys_pcqwerty1.xml
index 5389e2201..5c7506ea6 100644
--- a/java/res/xml-sw600dp/rowkeys_pcqwerty1.xml
+++ b/java/res/xml-sw600dp/rowkeys_pcqwerty1.xml
@@ -21,87 +21,98 @@
<merge
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
>
- <Key
- latin:keySpec="`"
- latin:keyHintLabel="~"
- latin:additionalMoreKeys="~"
- latin:keyStyle="hasShiftedLetterHintStyle" />
- <Key
- 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:keySpec="2"
- latin:keyHintLabel="\@"
- latin:additionalMoreKeys="\@"
- latin:keyStyle="hasShiftedLetterHintStyle"
- latin:moreKeys="!text/more_keys_for_symbols_2" />
- <Key
- latin:keySpec="3"
- latin:keyHintLabel="\#"
- latin:additionalMoreKeys="\#"
- latin:keyStyle="hasShiftedLetterHintStyle"
- latin:moreKeys="!text/more_keys_for_symbols_3" />
- <Key
- latin:keySpec="4"
- latin:keyHintLabel="$"
- latin:additionalMoreKeys="$"
- latin:keyStyle="hasShiftedLetterHintStyle"
- latin:moreKeys="!text/more_keys_for_symbols_4" />
- <Key
- latin:keySpec="5"
- latin:keyHintLabel="%"
- latin:additionalMoreKeys="\\%"
- latin:keyStyle="hasShiftedLetterHintStyle"
- latin:moreKeys="!text/more_keys_for_symbols_5" />
- <Key
- latin:keySpec="6"
- latin:keyHintLabel="^"
- latin:additionalMoreKeys="^"
- latin:keyStyle="hasShiftedLetterHintStyle"
- latin:moreKeys="!text/more_keys_for_symbols_6" />
- <Key
- latin:keySpec="7"
- latin:keyHintLabel="&amp;"
- latin:additionalMoreKeys="&amp;"
- latin:keyStyle="hasShiftedLetterHintStyle"
- latin:moreKeys="!text/more_keys_for_symbols_7" />
- <Key
- latin:keySpec="8"
- latin:keyHintLabel="*"
- latin:additionalMoreKeys="*"
- latin:keyStyle="hasShiftedLetterHintStyle"
- latin:moreKeys="!text/more_keys_for_symbols_8" />
- <Key
- latin:keySpec="9"
- latin:keyHintLabel="("
- latin:additionalMoreKeys="("
- latin:keyStyle="hasShiftedLetterHintStyle"
- latin:moreKeys="!text/more_keys_for_symbols_9" />
- <Key
- latin:keySpec="0"
- latin:keyHintLabel=")"
- latin:additionalMoreKeys=")"
- latin:keyStyle="hasShiftedLetterHintStyle"
- latin:moreKeys="!text/more_keys_for_symbols_0" />
- <!-- U+2013: "–" EN DASH
- U+2014: "—" EM DASH
- U+00B7: "·" MIDDLE DOT -->
- <Key
- latin:keySpec="-"
- latin:keyHintLabel="_"
- latin:additionalMoreKeys="_"
- latin:keyStyle="hasShiftedLetterHintStyle"
- latin:moreKeys="&#x2013;,&#x2014;,&#x00B7;" />
- <!-- U+221E: "∞" INFINITY
- U+2260: "≠" NOT EQUAL TO
- U+2248: "≈" ALMOST EQUAL TO -->
- <Key
- latin:keySpec="="
- latin:keyHintLabel="+"
- latin:additionalMoreKeys="+"
- latin:keyStyle="hasShiftedLetterHintStyle"
- latin:moreKeys="&#x221E;,&#x2260;,&#x2248;" />
+ <switch>
+ <case
+ latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted|alphabetShiftLocked"
+ >
+ <Key
+ latin:keySpec="`"
+ latin:keyHintLabel="~"
+ latin:additionalMoreKeys="~"
+ latin:keyStyle="hasShiftedLetterHintStyle" />
+ <Key
+ 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:keySpec="2"
+ latin:keyHintLabel="\@"
+ latin:additionalMoreKeys="\@"
+ latin:keyStyle="hasShiftedLetterHintStyle"
+ latin:moreKeys="!text/more_keys_for_symbols_2" />
+ <Key
+ latin:keySpec="3"
+ latin:keyHintLabel="\#"
+ latin:additionalMoreKeys="\#"
+ latin:keyStyle="hasShiftedLetterHintStyle"
+ latin:moreKeys="!text/more_keys_for_symbols_3" />
+ <Key
+ latin:keySpec="4"
+ latin:keyHintLabel="$"
+ latin:additionalMoreKeys="$"
+ latin:keyStyle="hasShiftedLetterHintStyle"
+ latin:moreKeys="!text/more_keys_for_symbols_4" />
+ <Key
+ latin:keySpec="5"
+ latin:keyHintLabel="%"
+ latin:additionalMoreKeys="\\%"
+ latin:keyStyle="hasShiftedLetterHintStyle"
+ latin:moreKeys="!text/more_keys_for_symbols_5" />
+ <Key
+ latin:keySpec="6"
+ latin:keyHintLabel="^"
+ latin:additionalMoreKeys="^"
+ latin:keyStyle="hasShiftedLetterHintStyle"
+ latin:moreKeys="!text/more_keys_for_symbols_6" />
+ <Key
+ latin:keySpec="7"
+ latin:keyHintLabel="&amp;"
+ latin:additionalMoreKeys="&amp;"
+ latin:keyStyle="hasShiftedLetterHintStyle"
+ latin:moreKeys="!text/more_keys_for_symbols_7" />
+ <Key
+ latin:keySpec="8"
+ latin:keyHintLabel="*"
+ latin:additionalMoreKeys="*"
+ latin:keyStyle="hasShiftedLetterHintStyle"
+ latin:moreKeys="!text/more_keys_for_symbols_8" />
+ <Key
+ latin:keySpec="9"
+ latin:keyHintLabel="("
+ latin:additionalMoreKeys="("
+ latin:keyStyle="hasShiftedLetterHintStyle"
+ latin:moreKeys="!text/more_keys_for_symbols_9" />
+ <Key
+ latin:keySpec="0"
+ latin:keyHintLabel=")"
+ latin:additionalMoreKeys=")"
+ latin:keyStyle="hasShiftedLetterHintStyle"
+ latin:moreKeys="!text/more_keys_for_symbols_0" />
+ <!-- U+2013: "–" EN DASH
+ U+2014: "—" EM DASH
+ U+00B7: "·" MIDDLE DOT -->
+ <Key
+ latin:keySpec="-"
+ latin:keyHintLabel="_"
+ latin:additionalMoreKeys="_"
+ latin:keyStyle="hasShiftedLetterHintStyle"
+ latin:moreKeys="&#x2013;,&#x2014;,&#x00B7;" />
+ <!-- U+221E: "∞" INFINITY
+ U+2260: "≠" NOT EQUAL TO
+ U+2248: "≈" ALMOST EQUAL TO -->
+ <Key
+ latin:keySpec="="
+ latin:keyHintLabel="+"
+ latin:additionalMoreKeys="+"
+ latin:keyStyle="hasShiftedLetterHintStyle"
+ latin:moreKeys="&#x221E;,&#x2260;,&#x2248;" />
+ </case>
+ <!-- keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLockShifted" -->
+ <default>
+ <include
+ latin:keyboardLayout="@xml/rowkeys_pcqwerty1_shift" />
+ </default>
+ </switch>
</merge>
diff --git a/java/res/xml-sw600dp/rows_colemak.xml b/java/res/xml-sw600dp/rows_colemak.xml
index ab059da83..7559bfb96 100644
--- a/java/res/xml-sw600dp/rows_colemak.xml
+++ b/java/res/xml-sw600dp/rows_colemak.xml
@@ -28,8 +28,6 @@
>
<include
latin:keyboardLayout="@xml/rowkeys_colemak1" />
- <include
- latin:keyboardLayout="@xml/key_colemak_colon" />
<Key
latin:keyStyle="deleteKeyStyle"
latin:keyWidth="fillRight" />
diff --git a/java/res/xml-sw600dp/rows_myanmar.xml b/java/res/xml-sw600dp/rows_myanmar.xml
new file mode 100644
index 000000000..778b330af
--- /dev/null
+++ b/java/res/xml-sw600dp/rows_myanmar.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 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.
+*/
+-->
+
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <include
+ latin:keyboardLayout="@xml/key_styles_common" />
+ <Row
+ latin:keyWidth="8.1818%p"
+ >
+ <include
+ latin:keyboardLayout="@xml/rowkeys_myanmar1" />
+ <Key
+ latin:keyStyle="deleteKeyStyle"
+ latin:keyWidth="fillRight" />
+ </Row>
+ <Row
+ latin:keyWidth="8.1818%p"
+ >
+ <include
+ latin:keyboardLayout="@xml/rowkeys_myanmar2" />
+ </Row>
+ <Row
+ latin:keyWidth="8.1818%p"
+ >
+ <include
+ latin:keyXPos="4.0909%p"
+ latin:keyboardLayout="@xml/rowkeys_myanmar3" />
+ <Key
+ latin:keyStyle="enterKeyStyle"
+ latin:keyWidth="fillRight" />
+ </Row>
+ <Row
+ latin:keyWidth="8.1818%p"
+ >
+ <Key
+ latin:keyStyle="shiftKeyStyle"
+ latin:keyWidth="10.0%p" />
+ <include
+ latin:keyboardLayout="@xml/rowkeys_myanmar4" />
+ <switch>
+ <case
+ latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted"
+ >
+ <Spacer />
+ </case>
+ <default>
+ <include
+ latin:keyboardLayout="@xml/keys_exclamation_question" />
+ </default>
+ </switch>
+ </Row>
+ <include
+ latin:keyboardLayout="@xml/row_qwerty4" />
+</merge>
diff --git a/java/res/xml-sw600dp/rows_pcqwerty.xml b/java/res/xml-sw600dp/rows_pcqwerty.xml
index 8714815ef..73b7e473e 100644
--- a/java/res/xml-sw600dp/rows_pcqwerty.xml
+++ b/java/res/xml-sw600dp/rows_pcqwerty.xml
@@ -26,19 +26,8 @@
<Row
latin:keyWidth="7.0%p"
>
- <switch>
- <case
- latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted"
- >
- <include
- latin:keyboardLayout="@xml/rowkeys_pcqwerty1" />
- </case>
- <!-- keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted" -->
- <default>
- <include
- latin:keyboardLayout="@xml/rowkeys_pcqwerty1_shift" />
- </default>
- </switch>
+ <include
+ latin:keyboardLayout="@xml/rowkeys_pcqwerty1" />
<Key
latin:keyStyle="deleteKeyStyle"
latin:keyWidth="fillRight" />
@@ -56,7 +45,7 @@
latin:keyWidth="7.0%p"
>
<Spacer
- latin:keyWidth="12.0%p" />
+ latin:keyWidth="10.0%p" />
<include
latin:keyboardLayout="@xml/rowkeys_pcqwerty3" />
<Key
diff --git a/java/res/xml/key_colemak_colon.xml b/java/res/xml/kbd_myanmar.xml
index 9330be9a5..af997b1c8 100644
--- a/java/res/xml/key_colemak_colon.xml
+++ b/java/res/xml/kbd_myanmar.xml
@@ -2,7 +2,7 @@
<!--
/*
**
-** Copyright 2012, The Android Open Source Project
+** Copyright 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.
@@ -18,24 +18,14 @@
*/
-->
-<merge
+<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+ latin:rowHeight="20%p"
+ latin:verticalGap="@fraction/config_key_vertical_gap_5row"
+ latin:keyLetterSize="@fraction/config_key_letter_ratio_5row"
+ latin:keyShiftedLetterHintRatio="@fraction/config_key_shifted_letter_hint_ratio_5row"
+ latin:touchPositionCorrectionData="@array/touch_position_correction_data_default"
>
- <switch>
- <case
- latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLockShifted"
- >
- <Key
- latin:keySpec=";"
- latin:keyHintLabel="0"
- latin:additionalMoreKeys="0" />
- </case>
- <default>
- <Key
- latin:keySpec=":"
- latin:keyHintLabel="0"
- latin:additionalMoreKeys="0"
- latin:moreKeys=";" />
- </default>
- </switch>
-</merge>
+ <include
+ latin:keyboardLayout="@xml/rows_myanmar" />
+</Keyboard>
diff --git a/java/res/xml/key_f1.xml b/java/res/xml/key_f1.xml
index d3a753948..0a89fe3fb 100644
--- a/java/res/xml/key_f1.xml
+++ b/java/res/xml/key_f1.xml
@@ -42,7 +42,6 @@
<Key
latin:keySpec="!text/keylabel_for_comma"
latin:keyLabelFlags="hasPopupHint"
- latin:additionalMoreKeys="!text/more_keys_for_comma"
latin:keyStyle="f1MoreKeysStyle" />
</case>
<!-- latin:supportsSwitchingToShortcutIme="true" -->
@@ -57,7 +56,7 @@
<Key
latin:keySpec="!text/keylabel_for_comma"
latin:keyLabelFlags="hasPopupHint"
- latin:additionalMoreKeys="!text/more_keys_for_comma,!text/shortcut_as_more_key"
+ latin:additionalMoreKeys="!text/shortcut_as_more_key"
latin:keyStyle="f1MoreKeysStyle" />
</default>
</switch>
diff --git a/java/res/xml/key_styles_currency.xml b/java/res/xml/key_styles_currency.xml
index ed40ebc58..0888cc357 100644
--- a/java/res/xml/key_styles_currency.xml
+++ b/java/res/xml/key_styles_currency.xml
@@ -50,7 +50,7 @@
19. San Marino (it_SM)
20. Slovakia (sk_SK)
21. Slovenia (sl_SI)
- 22. Spain (es_ES, ca_ES)
+ 22. Spain (es_ES, ca_ES, eu_ES, gl_ES)
23. Vatican City (it_VA) -->
<case
latin:countryCode="AD|AT|BE|CY|EE|FI|FR|DE|GR|IE|IT|XK|LU|MT|MO|ME|NL|PT|SM|SK|SI|ES|VA"
diff --git a/java/res/xml/keyboard_layout_set_myanmar.xml b/java/res/xml/keyboard_layout_set_myanmar.xml
new file mode 100644
index 000000000..5c823b263
--- /dev/null
+++ b/java/res/xml/keyboard_layout_set_myanmar.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 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.
+*/
+-->
+
+<KeyboardLayoutSet
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+ <Element
+ latin:elementName="alphabet"
+ latin:elementKeyboard="@xml/kbd_myanmar"
+ latin:enableProximityCharsCorrection="true" />
+ <Element
+ latin:elementName="alphabetAutomaticShifted"
+ latin:elementKeyboard="@xml/kbd_myanmar"
+ latin:enableProximityCharsCorrection="true" />
+ <!-- On these shifted alphabet layouts the proximity characters correction should be disabled
+ because the letters on these layouts aren't the ones in different case of the above
+ unshifted layouts. -->
+ <Element
+ latin:elementName="alphabetManualShifted"
+ latin:elementKeyboard="@xml/kbd_myanmar" />
+ <Element
+ latin:elementName="alphabetShiftLocked"
+ latin:elementKeyboard="@xml/kbd_myanmar" />
+ <Element
+ latin:elementName="alphabetShiftLockShifted"
+ latin:elementKeyboard="@xml/kbd_myanmar" />
+ <Element
+ latin:elementName="symbols"
+ latin:elementKeyboard="@xml/kbd_symbols" />
+ <Element
+ latin:elementName="symbolsShifted"
+ latin:elementKeyboard="@xml/kbd_symbols_shift" />
+ <Element
+ latin:elementName="phone"
+ latin:elementKeyboard="@xml/kbd_phone" />
+ <Element
+ latin:elementName="phoneSymbols"
+ latin:elementKeyboard="@xml/kbd_phone_symbols" />
+ <Element
+ latin:elementName="number"
+ latin:elementKeyboard="@xml/kbd_number" />
+</KeyboardLayoutSet>
diff --git a/java/res/xml/keys_comma_period_symbols.xml b/java/res/xml/keys_comma_period_symbols.xml
index 5221d34e3..53c3343da 100644
--- a/java/res/xml/keys_comma_period_symbols.xml
+++ b/java/res/xml/keys_comma_period_symbols.xml
@@ -22,8 +22,7 @@
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
>
<Key
- latin:keySpec="!text/keylabel_for_comma"
- latin:moreKeys="!text/more_keys_for_comma" />
+ latin:keySpec="!text/keylabel_for_comma" />
<!-- U+2026: "…" HORIZONTAL ELLIPSIS -->
<Key
latin:keySpec="."
diff --git a/java/res/xml/keys_pcqwerty2_right3.xml b/java/res/xml/keys_pcqwerty2_right3.xml
index 9e62b09c2..b188cffab 100644
--- a/java/res/xml/keys_pcqwerty2_right3.xml
+++ b/java/res/xml/keys_pcqwerty2_right3.xml
@@ -23,7 +23,7 @@
>
<switch>
<case
- latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted"
+ latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted|alphabetShiftLocked"
>
<Key
latin:keySpec="["
diff --git a/java/res/xml/keys_pcqwerty3_right2.xml b/java/res/xml/keys_pcqwerty3_right2.xml
index d889216c0..8a1f60fae 100644
--- a/java/res/xml/keys_pcqwerty3_right2.xml
+++ b/java/res/xml/keys_pcqwerty3_right2.xml
@@ -23,7 +23,7 @@
>
<switch>
<case
- latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted"
+ latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted|alphabetShiftLocked"
>
<Key
latin:keySpec=";"
diff --git a/java/res/xml/keys_pcqwerty4_right3.xml b/java/res/xml/keys_pcqwerty4_right3.xml
index f32d80908..6beba2041 100644
--- a/java/res/xml/keys_pcqwerty4_right3.xml
+++ b/java/res/xml/keys_pcqwerty4_right3.xml
@@ -23,7 +23,7 @@
>
<switch>
<case
- latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted"
+ latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted|alphabetShiftLocked"
>
<Key
latin:keySpec=","
diff --git a/java/res/xml/method.xml b/java/res/xml/method.xml
index deef9d13d..c64b3a4e0 100644
--- a/java/res/xml/method.xml
+++ b/java/res/xml/method.xml
@@ -41,11 +41,13 @@
es_US: Spanish (United States)/spanish
(es_419: Spanish (Latin America)/qwerty)
et_EE: Estonian (Estonia)/nordic
+ eu_ES: Basque (Spain)/spanish
fa: Persian/farsi
fi: Finnish/nordic
fr: French/azerty
fr_CA: French (Canada)/qwerty
fr_CH: French (Switzerland)/swiss
+ gl_ES: Galician (Spain)/spanish
hi: Hindi/hindi
hr: Croatian/qwertz
hu: Hungarian/qwertz
@@ -64,6 +66,7 @@
mk: Macedonian/south_slavic
mn_MN: Mongolian (Mongolia)/mongolian
ms_MY: Malay (Malaysia)/qwerty
+ (my_MM: Myanmar (Myanmar)/myanmar) # This is a preliminary keyboard layout.
nb: Norwegian Bokmål/nordic
ne_NP: Nepali (Nepal) Romanized/nepali_romanized
ne_NP: Nepali (Nepal) Traditional/nepali_traditional
@@ -255,6 +258,14 @@
/>
<subtype android:icon="@drawable/ic_ime_switcher_dark"
android:label="@string/subtype_generic"
+ android:subtypeId="0x070e5c07"
+ android:imeSubtypeLocale="eu_ES"
+ android:imeSubtypeMode="keyboard"
+ android:imeSubtypeExtraValue="KeyboardLayoutSet=spanish,AsciiCapable,EmojiCapable"
+ android:isAsciiCapable="true"
+ />
+ <subtype android:icon="@drawable/ic_ime_switcher_dark"
+ android:label="@string/subtype_generic"
android:subtypeId="0xbe66c254"
android:imeSubtypeLocale="fa"
android:imeSubtypeMode="keyboard"
@@ -295,6 +306,14 @@
/>
<subtype android:icon="@drawable/ic_ime_switcher_dark"
android:label="@string/subtype_generic"
+ android:subtypeId="0xb939573c"
+ android:imeSubtypeLocale="gl_ES"
+ android:imeSubtypeMode="keyboard"
+ android:imeSubtypeExtraValue="KeyboardLayoutSet=spanish,AsciiCapable,EmojiCapable"
+ android:isAsciiCapable="true"
+ />
+ <subtype android:icon="@drawable/ic_ime_switcher_dark"
+ android:label="@string/subtype_generic"
android:subtypeId="0x39753b7f"
android:imeSubtypeLocale="hi"
android:imeSubtypeMode="keyboard"
@@ -431,6 +450,8 @@
android:imeSubtypeExtraValue="KeyboardLayoutSet=mongolian,EmojiCapable"
android:isAsciiCapable="false"
/>
+ <!-- TODO: This Myanmar keyboard is a preliminary layout.
+ This isn't based on the final specification. -->
<subtype android:icon="@drawable/ic_ime_switcher_dark"
android:label="@string/subtype_generic"
android:subtypeId="0x84c87c61"
@@ -441,6 +462,14 @@
/>
<subtype android:icon="@drawable/ic_ime_switcher_dark"
android:label="@string/subtype_generic"
+ android:subtypeId="0xea266ea4"
+ android:imeSubtypeLocale="my_MM"
+ android:imeSubtypeMode="keyboard"
+ android:imeSubtypeExtraValue="KeyboardLayoutSet=myanmar,EmojiCapable"
+ android:isAsciiCapable="false"
+ />
+ <subtype android:icon="@drawable/ic_ime_switcher_dark"
+ android:label="@string/subtype_generic"
android:subtypeId="0x3f12ee14"
android:imeSubtypeLocale="nb"
android:imeSubtypeMode="keyboard"
diff --git a/java/res/xml/row_pcqwerty5.xml b/java/res/xml/row_pcqwerty5.xml
index f6438ab0f..3782763a8 100644
--- a/java/res/xml/row_pcqwerty5.xml
+++ b/java/res/xml/row_pcqwerty5.xml
@@ -24,23 +24,21 @@
<Row
latin:keyWidth="7.692%p"
>
- <Spacer
- latin:keyWidth="11.538%p" />
<switch>
<case
- latin:supportsSwitchingToShortcutIme="true"
+ latin:hasShortcutKey="true"
>
<Key
latin:keyStyle="shortcutKeyStyle"
latin:keyWidth="11.538%p" />
- </case>
+ </case>
<case
latin:clobberSettingsKey="false"
>
<Key
latin:keyStyle="settingsKeyStyle"
latin:keyWidth="11.538%p" />
- </case>
+ </case>
</switch>
<switch>
<case
@@ -48,24 +46,23 @@
>
<Key
latin:keyStyle="languageSwitchKeyStyle"
+ latin:keyXPos="19.231%p"
latin:keyWidth="11.538%p" />
<Key
latin:keyStyle="spaceKeyStyle"
- latin:keyWidth="38.464%p" />
- </case>
+ latin:keyWidth="42.308%p" />
+ </case>
<!-- languageSwitchKeyEnabled="false" -->
<default>
<Key
latin:keyStyle="spaceKeyStyle"
- latin:keyWidth="50.002%p" />
+ latin:keyXPos="26.923%p"
+ latin:keyWidth="46.154%p" />
</default>
</switch>
<Key
- latin:keyStyle="defaultEnterKeyStyle"
- latin:keySpec="!icon/enter_key|!code/key_enter"
- latin:keyWidth="15.384%p" />
- <Key
- latin:keyStyle="emojiKeyStyle"
+ latin:keyStyle="enterKeyStyle"
+ latin:keyXPos="-19.231%p"
latin:keyWidth="fillRight" />
</Row>
</merge>
diff --git a/java/res/xml/rowkeys_colemak1.xml b/java/res/xml/rowkeys_colemak1.xml
index 819a69d2b..2f2ade4d3 100644
--- a/java/res/xml/rowkeys_colemak1.xml
+++ b/java/res/xml/rowkeys_colemak1.xml
@@ -63,4 +63,21 @@
latin:keyHintLabel="9"
latin:additionalMoreKeys="9"
latin:moreKeys="!text/more_keys_for_y" />
+ <switch>
+ <case
+ latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLockShifted"
+ >
+ <Key
+ latin:keySpec=":"
+ latin:keyHintLabel="0"
+ latin:additionalMoreKeys="0" />
+ </case>
+ <default>
+ <Key
+ latin:keySpec=";"
+ latin:keyHintLabel="0"
+ latin:additionalMoreKeys="0"
+ latin:moreKeys=":" />
+ </default>
+ </switch>
</merge>
diff --git a/java/res/xml/rowkeys_myanmar1.xml b/java/res/xml/rowkeys_myanmar1.xml
new file mode 100644
index 000000000..6460af565
--- /dev/null
+++ b/java/res/xml/rowkeys_myanmar1.xml
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 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.
+*/
+-->
+
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <switch>
+ <case
+ latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted"
+ >
+ <!-- U+100E: "ဎ" MYANMAR LETTER DDHA -->
+ <Key
+ latin:keySpec="&#x100E;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+100D: "ဍ" MYANMAR LETTER DDA -->
+ <Key
+ latin:keySpec="&#x100D;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+1052: "ၒ" MYANMAR LETTER VOCALIC R -->
+ <Key
+ latin:keySpec="&#x1052;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+100B: "ဋ" MYANMAR LETTER TTA -->
+ <Key
+ latin:keySpec="&#x100B;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+1053: "ၓ" MYANMAR LETTER VOCALIC RR -->
+ <Key
+ latin:keySpec="&#x1053;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+1054: "ၔ" MYANMAR LETTER VOCALIC L -->
+ <Key
+ latin:keySpec="&#x1054;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+1055: "ၕ" MYANMAR LETTER VOCALIC LL -->
+ <Key
+ latin:keySpec="&#x1055;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+101B: "ရ" MYANMAR LETTER RA -->
+ <Key
+ latin:keySpec="&#x101B;"
+ latin:keyLabelFlags="fontNormal" />
+ <Key
+ latin:keySpec="*" />
+ <Key
+ latin:keySpec="(" />
+ <Key
+ latin:keySpec=")" />
+ </case>
+ <default>
+ <!-- U+1050: "ၐ" MYANMAR LETTER SHA -->
+ <Key
+ latin:keySpec="&#x1050;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+1041: "၁" MYANMAR DIGIT ONE -->
+ <Key
+ latin:keySpec="&#x1041;"
+ latin:keyHintLabel="1"
+ latin:additionalMoreKeys="1"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+1042: "၂" MYANMAR DIGIT TWO -->
+ <Key
+ latin:keySpec="&#x1042;"
+ latin:keyHintLabel="2"
+ latin:additionalMoreKeys="2"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+1043: "၃" MYANMAR DIGIT THREE -->
+ <Key
+ latin:keySpec="&#x1043;"
+ latin:keyHintLabel="3"
+ latin:additionalMoreKeys="3"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+1044: "၄" MYANMAR DIGIT FOUR -->
+ <Key
+ latin:keySpec="&#x1044;"
+ latin:keyHintLabel="4"
+ latin:additionalMoreKeys="4"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+1045: "၅" MYANMAR DIGIT FIVE -->
+ <Key
+ latin:keySpec="&#x1045;"
+ latin:keyHintLabel="5"
+ latin:additionalMoreKeys="5"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+1046: "၆" MYANMAR DIGIT SIX -->
+ <Key
+ latin:keySpec="&#x1046;"
+ latin:keyHintLabel="6"
+ latin:additionalMoreKeys="6"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+1047: "၇" MYANMAR DIGIT SEVEN -->
+ <Key
+ latin:keySpec="&#x1047;"
+ latin:keyHintLabel="7"
+ latin:additionalMoreKeys="7"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+1048: "၈" MYANMAR DIGIT EIGHT -->
+ <Key
+ latin:keySpec="&#x1048;"
+ latin:keyHintLabel="8"
+ latin:additionalMoreKeys="8"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+1049: "၉" MYANMAR DIGIT NINE -->
+ <Key
+ latin:keySpec="&#x1049;"
+ latin:keyHintLabel="9"
+ latin:additionalMoreKeys="9"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+1040: "၀" MYANMAR DIGIT ZERO -->
+ <Key
+ latin:keySpec="&#x1040;"
+ latin:keyHintLabel="0"
+ latin:additionalMoreKeys="0"
+ latin:keyLabelFlags="fontNormal" />
+ </default>
+ </switch>
+</merge>
diff --git a/java/res/xml/rowkeys_myanmar2.xml b/java/res/xml/rowkeys_myanmar2.xml
new file mode 100644
index 000000000..558c38d4d
--- /dev/null
+++ b/java/res/xml/rowkeys_myanmar2.xml
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 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.
+*/
+-->
+
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <switch>
+ <case
+ latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted"
+ >
+ <!-- U+1008: "ဈ" MYANMAR LETTER JHA -->
+ <Key
+ latin:keySpec="&#x1008;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+101D: "ဝ" MYANMAR LETTER WA -->
+ <Key
+ latin:keySpec="&#x101D;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+1023: "ဣ" MYANMAR LETTER I -->
+ <Key
+ latin:keySpec="&#x1023;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+104E: "၎" MYANMAR SYMBOL AFOREMENTIONED -->
+ <Key
+ latin:keySpec="&#x104E;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+1024: "ဤ" MYANMAR LETTER II -->
+ <Key
+ latin:keySpec="&#x1024;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+104C: "၌" MYANMAR SYMBOL LOCATIVE -->
+ <Key
+ latin:keySpec="&#x104C;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+1025: "ဥ" MYANMAR LETTER U -->
+ <Key
+ latin:keySpec="&#x1025;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+104D: "၍" MYANMAR SYMBOL COMPLETED -->
+ <Key
+ latin:keySpec="&#x104D;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+103F: "ဿ" MYANMAR LETTER GREAT SA -->
+ <Key
+ latin:keySpec="&#x103F;"
+ latin:keyLabelFlags="fontNormal|autoXScale" />
+ <!-- U+100F: "ဏ" MYANMAR LETTER NNA -->
+ <Key
+ latin:keySpec="&#x100F;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+1027: "ဧ" MYANMAR LETTER E -->
+ <Key
+ latin:keySpec="&#x1027;"
+ latin:keyLabelFlags="fontNormal" />
+ </case>
+ <default>
+ <!-- U+1006: "ဆ" MYANMAR LETTER CHA -->
+ <Key
+ latin:keySpec="&#x1006;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+1010: "တ" MYANMAR LETTER TA -->
+ <Key
+ latin:keySpec="&#x1010;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+1014: "န" MYANMAR LETTER NA -->
+ <Key
+ latin:keySpec="&#x1014;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+1019: "မ" MYANMAR LETTER MA -->
+ <Key
+ latin:keySpec="&#x1019;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+1021: "အ" MYANMAR LETTER A -->
+ <Key
+ latin:keySpec="&#x1021;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+1015: "ပ" MYANMAR LETTER PA -->
+ <Key
+ latin:keySpec="&#x1015;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+1000: "က" MYANMAR LETTER KA -->
+ <Key
+ latin:keySpec="&#x1000;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+1004: "င" MYANMAR LETTER NGA -->
+ <Key
+ latin:keySpec="&#x1004;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+101E: "သ" MYANMAR LETTER SA -->
+ <Key
+ latin:keySpec="&#x101E;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+1005: "စ" MYANMAR LETTER CA -->
+ <Key
+ latin:keySpec="&#x1005;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+101F: "ဟ" MYANMAR LETTER HA -->
+ <Key
+ latin:keySpec="&#x101F;"
+ latin:keyLabelFlags="fontNormal" />
+ </default>
+ </switch>
+</merge>
diff --git a/java/res/xml/rowkeys_myanmar3.xml b/java/res/xml/rowkeys_myanmar3.xml
new file mode 100644
index 000000000..2d0d48cc7
--- /dev/null
+++ b/java/res/xml/rowkeys_myanmar3.xml
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 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.
+*/
+-->
+
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <switch>
+ <case
+ latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted"
+ >
+ <!-- U+1017: "ဗ" MYANMAR LETTER BA -->
+ <Key
+ latin:keySpec="&#x1017;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+103E: "ှ" MYANMAR CONSONANT SIGN MEDIAL HA -->
+ <Key
+ latin:keySpec="&#x103E;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+102E: "ီ" MYANMAR VOWEL SIGN II -->
+ <Key
+ latin:keySpec="&#x102E;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+1039: "္" MYANMAR SIGN VIRAMA -->
+ <Key
+ latin:keySpec="&#x1039;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+103D: "ွ" MYANMAR CONSONANT SIGN MEDIAL WA -->
+ <Key
+ latin:keySpec="&#x103D;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+1036: "ံ" MYANMAR SIGN ANUSVARA -->
+ <Key
+ latin:keySpec="&#x1036;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+1032: "ဲ" MYANMAR VOWEL SIGN AI -->
+ <Key
+ latin:keySpec="&#x1032;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+1012: "ဒ" MYANMAR LETTER DA -->
+ <Key
+ latin:keySpec="&#x1012;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+1013: "ဓ" MYANMAR LETTER DHA -->
+ <Key
+ latin:keySpec="&#x1013;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+1002: "ဂ" MYANMAR LETTER GA -->
+ <Key
+ latin:keySpec="&#x1002;"
+ latin:keyLabelFlags="fontNormal" />
+ </case>
+ <default>
+ <!-- U+1031: "ေ" MYANMAR VOWEL SIGN E -->
+ <Key
+ latin:keySpec="&#x1031;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+103B: "ျ" MYANMAR CONSONANT SIGN MEDIAL YA -->
+ <Key
+ latin:keySpec="&#x103B;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+102D: "ိ" MYANMAR VOWEL SIGN I -->
+ <Key
+ latin:keySpec="&#x102D;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+103A: "်" MYANMAR SIGN ASAT -->
+ <Key
+ latin:keySpec="&#x103A;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+102B: "ါ" MYANMAR VOWEL SIGN TALL AA -->
+ <Key
+ latin:keySpec="&#x102B;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+1037: "့" MYANMAR SIGN DOT BELOW -->
+ <Key
+ latin:keySpec="&#x1037;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+103C: "ြ" MYANMAR CONSONANT SIGN MEDIAL RA -->
+ <Key
+ latin:keySpec="&#x103C;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+102F: "ု" MYANMAR VOWEL SIGN U -->
+ <Key
+ latin:keySpec="&#x102F;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+1030: "ူ" MYANMAR VOWEL SIGN UU -->
+ <Key
+ latin:keySpec="&#x1030;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+1038: "း" MYANMAR SIGN VISARGA -->
+ <Key
+ latin:keySpec="&#x1038;"
+ latin:keyLabelFlags="fontNormal" />
+ </default>
+ </switch>
+</merge>
diff --git a/java/res/xml/rowkeys_myanmar4.xml b/java/res/xml/rowkeys_myanmar4.xml
new file mode 100644
index 000000000..cfd11123c
--- /dev/null
+++ b/java/res/xml/rowkeys_myanmar4.xml
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 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.
+*/
+-->
+
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <switch>
+ <case
+ latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted"
+ >
+ <!-- U+1007: "ဇ" MYANMAR LETTER JA -->
+ <Key
+ latin:keySpec="&#x1007;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+100C: "ဌ" MYANMAR LETTER TTHA -->
+ <Key
+ latin:keySpec="&#x100C;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+1003: "ဃ" MYANMAR LETTER GHA -->
+ <Key
+ latin:keySpec="&#x1003;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+1020: "ဠ" MYANMAR LETTER LLA -->
+ <Key
+ latin:keySpec="&#x1020;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+101A: "ယ" MYANMAR LETTER YA -->
+ <Key
+ latin:keySpec="&#x101A;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+1009: "ဉ" MYANMAR LETTER NYA -->
+ <Key
+ latin:keySpec="&#x1009;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+1026: "ဦ" MYANMAR LETTER UU -->
+ <Key
+ latin:keySpec="&#x1026;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+102A: "ဪ" MYANMAR LETTER AU -->
+ <Key
+ latin:keySpec="&#x102A;"
+ latin:keyLabelFlags="fontNormal|autoXScale" />
+ <!-- U+1051: "ၑ" MYANMAR LETTER SSA -->
+ <Key
+ latin:keySpec="&#x1051;"
+ latin:keyLabelFlags="fontNormal" />
+ </case>
+ <default>
+ <!-- U+1016: "ဖ" MYANMAR LETTER PHA -->
+ <Key
+ latin:keySpec="&#x1016;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+1011: "ထ" MYANMAR LETTER THA -->
+ <Key
+ latin:keySpec="&#x1011;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+1001: "ခ" MYANMAR LETTER KHA -->
+ <Key
+ latin:keySpec="&#x1001;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+101C: "လ" MYANMAR LETTER LA -->
+ <Key
+ latin:keySpec="&#x101C;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+1018: "ဘ" MYANMAR LETTER BHA -->
+ <Key
+ latin:keySpec="&#x1018;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+100A: "ည" MYANMAR LETTER NNYA -->
+ <Key
+ latin:keySpec="&#x100A;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+102C: "ာ" MYANMAR VOWEL SIGN AA -->
+ <Key
+ latin:keySpec="&#x102C;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+1029: "ဩ" MYANMAR LETTER O -->
+ <Key
+ latin:keySpec="&#x1029;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+104F: "၏" MYANMAR SYMBOL GENITIVE -->
+ <Key
+ latin:keySpec="&#x104F;"
+ latin:keyLabelFlags="fontNormal" />
+ </default>
+ </switch>
+</merge>
diff --git a/java/res/xml/rowkeys_pcqwerty1.xml b/java/res/xml/rowkeys_pcqwerty1.xml
index fdb50729b..36957335e 100644
--- a/java/res/xml/rowkeys_pcqwerty1.xml
+++ b/java/res/xml/rowkeys_pcqwerty1.xml
@@ -21,61 +21,72 @@
<merge
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
>
- <Key
- latin:keySpec="`"
- latin:additionalMoreKeys="~" />
- <Key
- latin:keySpec="1"
- latin:additionalMoreKeys="!,!text/more_keys_for_exclamation"
- latin:moreKeys="!text/more_keys_for_symbols_1" />
- <Key
- latin:keySpec="2"
- latin:additionalMoreKeys="\@"
- latin:moreKeys="!text/more_keys_for_symbols_2" />
- <Key
- latin:keySpec="3"
- latin:additionalMoreKeys="\#"
- latin:moreKeys="!text/more_keys_for_symbols_3" />
- <Key
- latin:keySpec="4"
- latin:additionalMoreKeys="$"
- latin:moreKeys="!text/more_keys_for_symbols_4" />
- <Key
- latin:keySpec="5"
- latin:additionalMoreKeys="\\%"
- latin:moreKeys="!text/more_keys_for_symbols_5" />
- <Key
- latin:keySpec="6"
- latin:additionalMoreKeys="^"
- latin:moreKeys="!text/more_keys_for_symbols_6" />
- <Key
- latin:keySpec="7"
- latin:additionalMoreKeys="&amp;"
- latin:moreKeys="!text/more_keys_for_symbols_7" />
- <Key
- latin:keySpec="8"
- latin:additionalMoreKeys="*"
- latin:moreKeys="!text/more_keys_for_symbols_8" />
- <Key
- latin:keySpec="9"
- latin:additionalMoreKeys="("
- latin:moreKeys="!text/more_keys_for_symbols_9" />
- <Key
- 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:keySpec="-"
- latin:additionalMoreKeys="_"
- latin:moreKeys="&#x2013;,&#x2014;,&#x00B7;" />
- <!-- U+221E: "∞" INFINITY
- U+2260: "≠" NOT EQUAL TO
- U+2248: "≈" ALMOST EQUAL TO -->
- <Key
- latin:keySpec="="
- latin:additionalMoreKeys="+"
- latin:moreKeys="!fixedColumnOrder!4,&#x221E;,&#x2260;,&#x2248;,%" />
+ <switch>
+ <case
+ latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted|alphabetShiftLocked"
+ >
+ <Key
+ latin:keySpec="`"
+ latin:additionalMoreKeys="~" />
+ <Key
+ latin:keySpec="1"
+ latin:additionalMoreKeys="!,!text/more_keys_for_exclamation"
+ latin:moreKeys="!text/more_keys_for_symbols_1" />
+ <Key
+ latin:keySpec="2"
+ latin:additionalMoreKeys="\@"
+ latin:moreKeys="!text/more_keys_for_symbols_2" />
+ <Key
+ latin:keySpec="3"
+ latin:additionalMoreKeys="\#"
+ latin:moreKeys="!text/more_keys_for_symbols_3" />
+ <Key
+ latin:keySpec="4"
+ latin:additionalMoreKeys="$"
+ latin:moreKeys="!text/more_keys_for_symbols_4" />
+ <Key
+ latin:keySpec="5"
+ latin:additionalMoreKeys="\\%"
+ latin:moreKeys="!text/more_keys_for_symbols_5" />
+ <Key
+ latin:keySpec="6"
+ latin:additionalMoreKeys="^"
+ latin:moreKeys="!text/more_keys_for_symbols_6" />
+ <Key
+ latin:keySpec="7"
+ latin:additionalMoreKeys="&amp;"
+ latin:moreKeys="!text/more_keys_for_symbols_7" />
+ <Key
+ latin:keySpec="8"
+ latin:additionalMoreKeys="*"
+ latin:moreKeys="!text/more_keys_for_symbols_8" />
+ <Key
+ latin:keySpec="9"
+ latin:additionalMoreKeys="("
+ latin:moreKeys="!text/more_keys_for_symbols_9" />
+ <Key
+ 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:keySpec="-"
+ latin:additionalMoreKeys="_"
+ latin:moreKeys="&#x2013;,&#x2014;,&#x00B7;" />
+ <!-- U+221E: "∞" INFINITY
+ U+2260: "≠" NOT EQUAL TO
+ U+2248: "≈" ALMOST EQUAL TO -->
+ <Key
+ latin:keySpec="="
+ latin:additionalMoreKeys="+"
+ latin:moreKeys="!fixedColumnOrder!4,&#x221E;,&#x2260;,&#x2248;,%" />
+ </case>
+ <!-- keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLockShifted" -->
+ <default>
+ <include
+ latin:keyboardLayout="@xml/rowkeys_pcqwerty1_shift" />
+ </default>
+ </switch>
</merge>
diff --git a/java/res/xml/rowkeys_pcqwerty1_shift.xml b/java/res/xml/rowkeys_pcqwerty1_shift.xml
index b9597c066..6a5f00c4f 100644
--- a/java/res/xml/rowkeys_pcqwerty1_shift.xml
+++ b/java/res/xml/rowkeys_pcqwerty1_shift.xml
@@ -49,12 +49,11 @@
latin:keySpec=")" />
<Key
latin:keySpec="_" />
- <!-- U+00B1: "±" PLUS-MINUS SIGN
- U+00D7: "×" MULTIPLICATION SIGN
+ <!-- U+00D7: "×" MULTIPLICATION SIGN
U+00F7: "÷" DIVISION SIGN
U+221A: "√" SQUARE ROOT -->
<Key
latin:keySpec="+"
latin:additionalMoreKeys="!text/more_keys_for_plus"
- latin:moreKeys="&#x00B1;,&#x00D7;,&#x00F7;,&#x221A;" />
+ latin:moreKeys="&#x00D7;,&#x00F7;,&#x221A;" />
</merge>
diff --git a/java/res/xml/rows_colemak.xml b/java/res/xml/rows_colemak.xml
index d74c2c9ec..ec553c244 100644
--- a/java/res/xml/rows_colemak.xml
+++ b/java/res/xml/rows_colemak.xml
@@ -28,8 +28,6 @@
>
<include
latin:keyboardLayout="@xml/rowkeys_colemak1" />
- <include
- latin:keyboardLayout="@xml/key_colemak_colon" />
</Row>
<Row
latin:keyWidth="10%p"
diff --git a/java/res/xml/rows_myanmar.xml b/java/res/xml/rows_myanmar.xml
new file mode 100644
index 000000000..32c923dec
--- /dev/null
+++ b/java/res/xml/rows_myanmar.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 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.
+*/
+-->
+
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <include
+ latin:keyboardLayout="@xml/key_styles_common" />
+ <Row
+ latin:keyWidth="9.0909%p"
+ >
+ <include
+ latin:keyboardLayout="@xml/rowkeys_myanmar1" />
+ </Row>
+ <Row
+ latin:keyWidth="9.0909%p"
+ >
+ <include
+ latin:keyboardLayout="@xml/rowkeys_myanmar2" />
+ </Row>
+ <Row
+ latin:keyWidth="9.0909%p"
+ >
+ <include
+ latin:keyXPos="4.5454%p"
+ latin:keyboardLayout="@xml/rowkeys_myanmar3" />
+ </Row>
+ <Row
+ latin:keyWidth="9.0909%p"
+ >
+ <Key
+ latin:keyStyle="shiftKeyStyle" />
+ <include
+ latin:keyboardLayout="@xml/rowkeys_myanmar4" />
+ <Key
+ latin:keyStyle="deleteKeyStyle" />
+ </Row>
+ <include
+ latin:keyboardLayout="@xml/row_qwerty4" />
+</merge>
diff --git a/java/res/xml/rows_pcqwerty.xml b/java/res/xml/rows_pcqwerty.xml
index 884698963..a5ed74518 100644
--- a/java/res/xml/rows_pcqwerty.xml
+++ b/java/res/xml/rows_pcqwerty.xml
@@ -26,19 +26,8 @@
<Row
latin:keyWidth="7.692%p"
>
- <switch>
- <case
- latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted"
- >
- <include
- latin:keyboardLayout="@xml/rowkeys_pcqwerty1" />
- </case>
- <!-- keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted" -->
- <default>
- <include
- latin:keyboardLayout="@xml/rowkeys_pcqwerty1_shift" />
- </default>
- </switch>
+ <include
+ latin:keyboardLayout="@xml/rowkeys_pcqwerty1" />
</Row>
<Row
latin:keyWidth="7.692%p"
diff --git a/java/src/com/android/inputmethod/event/Combiner.java b/java/src/com/android/inputmethod/event/Combiner.java
index ab6b70c04..c3869a299 100644
--- a/java/src/com/android/inputmethod/event/Combiner.java
+++ b/java/src/com/android/inputmethod/event/Combiner.java
@@ -16,14 +16,22 @@
package com.android.inputmethod.event;
+import java.util.ArrayList;
+
/**
- * A generic interface for combiners.
+ * A generic interface for combiners. Combiners are objects that transform chains of input events
+ * into committable strings and manage feedback to show to the user on the combining state.
*/
public interface Combiner {
/**
- * Combine an event with the existing state and return the new event.
+ * Process an event, possibly combining it with the existing state and return the new event.
+ *
+ * If this event does not result in any new event getting passed down the chain, this method
+ * returns null. It may also modify the previous event list if appropriate.
+ *
+ * @param previousEvents the previous events in this composition.
* @param event the event to combine with the existing state.
* @return the resulting event.
*/
- Event combine(Event event);
+ Event processEvent(ArrayList<Event> previousEvents, Event event);
}
diff --git a/java/src/com/android/inputmethod/event/CombinerChain.java b/java/src/com/android/inputmethod/event/CombinerChain.java
new file mode 100644
index 000000000..0e01c819a
--- /dev/null
+++ b/java/src/com/android/inputmethod/event/CombinerChain.java
@@ -0,0 +1,69 @@
+/*
+ * 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.event;
+
+import com.android.inputmethod.latin.utils.CollectionUtils;
+
+import java.util.ArrayList;
+
+/**
+ * This class implements the logic chain between receiving events and generating code points.
+ *
+ * Event sources are multiple. It may be a hardware keyboard, a D-PAD, a software keyboard,
+ * or any exotic input source.
+ * This class will orchestrate the composing chain that starts with an event as its input. Each
+ * composer will be given turns one after the other.
+ * The output is composed of two sequences of code points: the first, representing the already
+ * finished combining part, will be shown normally as the composing string, while the second is
+ * feedback on the composing state and will typically be shown with different styling such as
+ * a colored background.
+ */
+public class CombinerChain {
+ // TODO: Create an object type to represent input material + visual feedback + decoding state
+
+ private final ArrayList<Combiner> mCombiners;
+
+ /**
+ * Create an combiner chain.
+ *
+ * The combiner chain takes events as inputs and outputs code points and combining state.
+ * For example, if the input language is Japanese, the combining chain will typically perform
+ * kana conversion.
+ *
+ * @param combinerList A list of combiners to be applied in order.
+ */
+ public CombinerChain(final Combiner... combinerList) {
+ mCombiners = CollectionUtils.newArrayList();
+ // The dead key combiner is always active, and always first
+ mCombiners.add(new DeadKeyCombiner());
+ }
+
+ // Pass a new event through the whole chain.
+ public void processEvent(final ArrayList<Event> previousEvents, final Event newEvent) {
+ final ArrayList<Event> modifiablePreviousEvents = new ArrayList<Event>(previousEvents);
+ Event event = newEvent;
+ for (final Combiner combiner : mCombiners) {
+ // A combiner can never return more than one event; it can return several
+ // code points, but they should be encapsulated within one event.
+ event = combiner.processEvent(modifiablePreviousEvents, event);
+ if (null == event) {
+ // Combiners return null if they eat the event.
+ return;
+ }
+ }
+ }
+}
diff --git a/java/src/com/android/inputmethod/event/DeadKeyCombiner.java b/java/src/com/android/inputmethod/event/DeadKeyCombiner.java
index ae8639713..f77ce6347 100644
--- a/java/src/com/android/inputmethod/event/DeadKeyCombiner.java
+++ b/java/src/com/android/inputmethod/event/DeadKeyCombiner.java
@@ -21,14 +21,17 @@ import android.view.KeyCharacterMap;
import com.android.inputmethod.latin.Constants;
+import java.util.ArrayList;
+
/**
* A combiner that handles dead keys.
*/
public class DeadKeyCombiner implements Combiner {
+ // TODO: make this a list of events instead
final StringBuilder mDeadSequence = new StringBuilder();
@Override
- public Event combine(final Event event) {
+ public Event processEvent(final ArrayList<Event> previousEvents, final Event event) {
if (null == event) return null; // Just in case some combiner is broken
if (TextUtils.isEmpty(mDeadSequence)) {
if (event.isDead()) {
diff --git a/java/src/com/android/inputmethod/event/Event.java b/java/src/com/android/inputmethod/event/Event.java
index 41bf36b36..db4023436 100644
--- a/java/src/com/android/inputmethod/event/Event.java
+++ b/java/src/com/android/inputmethod/event/Event.java
@@ -17,6 +17,7 @@
package com.android.inputmethod.event;
import com.android.inputmethod.latin.Constants;
+import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
/**
* Class representing a generic input event as handled by Latin IME.
@@ -49,6 +50,10 @@ public class Event {
final public static int EVENT_MODE_KEY = 3;
// An event corresponding to a gesture.
final public static int EVENT_GESTURE = 4;
+ // An event corresponding to the manual pick of a suggestion.
+ final public static int EVENT_SUGGESTION_PICKED = 5;
+ // An event corresponding to a string generated by some software process.
+ final public static int EVENT_SOFTWARE_GENERATED_STRING = 6;
// 0 is a valid code point, so we use -1 here.
final public static int NOT_A_CODE_POINT = -1;
@@ -68,6 +73,9 @@ public class Event {
// it's not relevant.
final public int mCodePoint;
+ // If applicable, this contains the string that should be input.
+ final public CharSequence mText;
+
// The key code associated with the event, if relevant. This is relevant whenever this event
// has been triggered by a key press, but not for a gesture for example. This has conceptually
// no link to the code point, although keys that enter a straight code point may often set
@@ -85,39 +93,60 @@ public class Event {
// Some flags that can't go into the key code. It's a bit field of FLAG_*
final private int mFlags;
+ // If this is of type EVENT_SUGGESTION_PICKED, this must not be null (and must be null in
+ // other cases).
+ final public SuggestedWordInfo mSuggestedWordInfo;
+
// The next event, if any. Null if there is no next event yet.
final public Event mNextEvent;
// This method is private - to create a new event, use one of the create* utility methods.
- private Event(final int type, final int codePoint, final int keyCode, final int x, final int y,
- final int flags, final Event next) {
+ private Event(final int type, final CharSequence text, final int codePoint, final int keyCode,
+ final int x, final int y, final SuggestedWordInfo suggestedWordInfo, final int flags,
+ final Event next) {
mType = type;
+ mText = text;
mCodePoint = codePoint;
mKeyCode = keyCode;
mX = x;
mY = y;
+ mSuggestedWordInfo = suggestedWordInfo;
mFlags = flags;
mNextEvent = next;
+ // Sanity checks
+ // mSuggestedWordInfo is non-null if and only if the type is SUGGESTION_PICKED
+ if (EVENT_SUGGESTION_PICKED == mType) {
+ if (null == mSuggestedWordInfo) {
+ throw new RuntimeException("Wrong event: SUGGESTION_PICKED event must have a "
+ + "non-null SuggestedWordInfo");
+ }
+ } else {
+ if (null != mSuggestedWordInfo) {
+ throw new RuntimeException("Wrong event: only SUGGESTION_PICKED events may have " +
+ "a non-null SuggestedWordInfo");
+ }
+ }
}
public static Event createSoftwareKeypressEvent(final int codePoint, final int keyCode,
final int x, final int y) {
- return new Event(EVENT_INPUT_KEYPRESS, codePoint, keyCode, x, y, FLAG_NONE, null);
+ return new Event(EVENT_INPUT_KEYPRESS, null /* text */, codePoint, keyCode, x, y,
+ null /* suggestedWordInfo */, FLAG_NONE, null);
}
public static Event createHardwareKeypressEvent(final int codePoint, final int keyCode,
final Event next) {
- return new Event(EVENT_INPUT_KEYPRESS, codePoint, keyCode,
+ return new Event(EVENT_INPUT_KEYPRESS, null /* text */, codePoint, keyCode,
Constants.EXTERNAL_KEYBOARD_COORDINATE, Constants.EXTERNAL_KEYBOARD_COORDINATE,
- FLAG_NONE, next);
+ null /* suggestedWordInfo */, FLAG_NONE, next);
}
// This creates an input event for a dead character. @see {@link #FLAG_DEAD}
public static Event createDeadEvent(final int codePoint, final int keyCode, final Event next) {
// TODO: add an argument or something if we ever create a software layout with dead keys.
- return new Event(EVENT_INPUT_KEYPRESS, codePoint, keyCode,
+ return new Event(EVENT_INPUT_KEYPRESS, null /* text */, codePoint, keyCode,
Constants.EXTERNAL_KEYBOARD_COORDINATE, Constants.EXTERNAL_KEYBOARD_COORDINATE,
- FLAG_DEAD, next);
+ null /* suggestedWordInfo */, FLAG_DEAD, next);
}
/**
@@ -129,8 +158,9 @@ public class Event {
*/
public static Event createEventForCodePointFromUnknownSource(final int codePoint) {
// TODO: should we have a different type of event for this? After all, it's not a key press.
- return new Event(EVENT_INPUT_KEYPRESS, codePoint, NOT_A_KEY_CODE,
- Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE, FLAG_NONE, null /* next */);
+ return new Event(EVENT_INPUT_KEYPRESS, null /* text */, codePoint, NOT_A_KEY_CODE,
+ Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE,
+ null /* suggestedWordInfo */, FLAG_NONE, null /* next */);
}
/**
@@ -144,13 +174,39 @@ public class Event {
public static Event createEventForCodePointFromAlreadyTypedText(final int codePoint,
final int x, final int y) {
// TODO: should we have a different type of event for this? After all, it's not a key press.
- return new Event(EVENT_INPUT_KEYPRESS, codePoint, NOT_A_KEY_CODE, x, y, FLAG_NONE,
- null /* next */);
+ return new Event(EVENT_INPUT_KEYPRESS, null /* text */, codePoint, NOT_A_KEY_CODE, x, y,
+ null /* suggestedWordInfo */, FLAG_NONE, null /* next */);
+ }
+
+ /**
+ * Creates an input event representing the manual pick of a suggestion.
+ * @return an event for this suggestion pick.
+ */
+ public static Event createSuggestionPickedEvent(final SuggestedWordInfo suggestedWordInfo) {
+ return new Event(EVENT_SUGGESTION_PICKED, suggestedWordInfo.mWord,
+ NOT_A_CODE_POINT, NOT_A_KEY_CODE,
+ Constants.SUGGESTION_STRIP_COORDINATE, Constants.SUGGESTION_STRIP_COORDINATE,
+ suggestedWordInfo, FLAG_NONE, null);
+ }
+
+ /**
+ * Creates an input event with a CharSequence. This is used by some software processes whose
+ * output is a string, possibly with styling. Examples include press on a multi-character key,
+ * or combination that outputs a string.
+ * @param text the CharSequence associated with this event.
+ * @param keyCode the key code, or NOT_A_KEYCODE if not applicable.
+ * @return an event for this text.
+ */
+ public static Event createSoftwareTextEvent(final CharSequence text, final int keyCode) {
+ return new Event(EVENT_SOFTWARE_GENERATED_STRING, text, NOT_A_CODE_POINT, keyCode,
+ Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE,
+ null /* suggestedWordInfo */, FLAG_NONE, null /* next */);
}
public static Event createNotHandledEvent() {
- return new Event(EVENT_NOT_HANDLED, NOT_A_CODE_POINT, NOT_A_KEY_CODE,
- Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE, FLAG_NONE, null);
+ return new Event(EVENT_NOT_HANDLED, null /* text */, NOT_A_CODE_POINT, NOT_A_KEY_CODE,
+ Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE,
+ null /* suggestedWordInfo */, FLAG_NONE, null);
}
// Returns whether this event is for a dead character. @see {@link #FLAG_DEAD}
@@ -164,11 +220,6 @@ public class Event {
return EVENT_INPUT_KEYPRESS == mType && Constants.SUGGESTION_STRIP_COORDINATE == mX;
}
- // TODO: remove this method - we should not have to test this
- public boolean isCommittable() {
- return EVENT_INPUT_KEYPRESS == mType || EVENT_MODE_KEY == mType || EVENT_TOGGLE == mType;
- }
-
public boolean isHandled() {
return EVENT_NOT_HANDLED != mType;
}
diff --git a/java/src/com/android/inputmethod/event/EventDecoderSpec.java b/java/src/com/android/inputmethod/event/EventDecoderSpec.java
deleted file mode 100644
index 303b4b4c9..000000000
--- a/java/src/com/android/inputmethod/event/EventDecoderSpec.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.event;
-
-/**
- * Class describing a decoder chain. This will depend on the language and the input medium (soft
- * or hard keyboard for example).
- */
-public class EventDecoderSpec {
- public EventDecoderSpec() {
- }
-}
diff --git a/java/src/com/android/inputmethod/event/EventInterpreter.java b/java/src/com/android/inputmethod/event/EventInterpreter.java
deleted file mode 100644
index bcf10fc58..000000000
--- a/java/src/com/android/inputmethod/event/EventInterpreter.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.event;
-
-import com.android.inputmethod.latin.utils.CollectionUtils;
-
-import java.util.ArrayList;
-
-/**
- * This class implements the logic between receiving events and generating code points.
- *
- * Event sources are multiple. It may be a hardware keyboard, a D-PAD, a software keyboard,
- * or any exotic input source.
- * This class will orchestrate the decoding chain that starts with an event and ends up with
- * a stream of code points + decoding state.
- */
-public class EventInterpreter {
- // TODO: Implement an object pool for events, as we'll create a lot of them
- // TODO: Create a combiner
- // TODO: Create an object type to represent input material + visual feedback + decoding state
-
- private final EventDecoderSpec mDecoderSpec;
- private final ArrayList<Combiner> mCombiners;
-
- /**
- * Create an event interpreter according to a specification.
- *
- * The specification contains information about what to do with events. Typically, it will
- * contain information about the type of keyboards - for example, if hardware keyboard(s) is/are
- * attached, their type will be included here so that the decoder knows what to do with each
- * keypress (a 10-key keyboard is not handled like a qwerty-ish keyboard).
- * It also contains information for combining characters. For example, if the input language
- * is Japanese, the specification will typically request kana conversion.
- * Also note that the specification can be null. This means that we need to create a default
- * interpreter that does no specific combining, and assumes the most common cases.
- *
- * @param specification the specification for event interpretation. null for default.
- */
- public EventInterpreter(final EventDecoderSpec specification) {
- mDecoderSpec = null != specification ? specification : new EventDecoderSpec();
- mCombiners = CollectionUtils.newArrayList();
- mCombiners.add(new DeadKeyCombiner());
- }
-}
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
index 2711d249b..2dfde9434 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
@@ -60,7 +60,7 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
public static final int THEME_INDEX_ICS = 0;
public static final int THEME_INDEX_GB = 1;
public static final int THEME_INDEX_KLP = 2;
- public static final int THEME_INDEX_DEFAULT = THEME_INDEX_KLP;
+ public static final int DEFAULT_THEME_INDEX = THEME_INDEX_KLP;
public static final KeyboardTheme[] KEYBOARD_THEMES = {
new KeyboardTheme(THEME_INDEX_ICS, R.style.KeyboardTheme_ICS),
new KeyboardTheme(THEME_INDEX_GB, R.style.KeyboardTheme_GB),
@@ -88,7 +88,7 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
* what user actually typed. */
private boolean mIsAutoCorrectionActive;
- private KeyboardTheme mKeyboardTheme = KEYBOARD_THEMES[THEME_INDEX_DEFAULT];
+ private KeyboardTheme mKeyboardTheme = KEYBOARD_THEMES[DEFAULT_THEME_INDEX];
private Context mThemeContext;
private static final KeyboardSwitcher sInstance = new KeyboardSwitcher();
@@ -163,7 +163,7 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
mCurrentSettingsValues = settingsValues;
try {
mState.onLoadKeyboard();
- mKeyboardTextsSet.setLocale(mSubtypeSwitcher.getCurrentSubtypeLocale());
+ mKeyboardTextsSet.setLocale(mSubtypeSwitcher.getCurrentSubtypeLocale(), mThemeContext);
} catch (KeyboardLayoutSetException e) {
Log.w(TAG, "loading keyboard failed: " + e.mKeyboardId, e.getCause());
LatinImeLogger.logOnException(e.mKeyboardId.toString(), e.getCause());
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java
index 81a8e7196..dfe0df04c 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java
@@ -34,7 +34,6 @@ import com.android.inputmethod.keyboard.KeyboardId;
import com.android.inputmethod.latin.Constants;
import com.android.inputmethod.latin.R;
import com.android.inputmethod.latin.utils.ResourceUtils;
-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;
@@ -45,7 +44,6 @@ import org.xmlpull.v1.XmlPullParserException;
import java.io.IOException;
import java.util.Arrays;
-import java.util.Locale;
/**
* Keyboard Building helper.
@@ -278,18 +276,7 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
params.mThemeId = keyboardAttr.getInt(R.styleable.Keyboard_themeId, 0);
params.mIconsSet.loadIcons(keyboardAttr);
- final Locale locale = params.mId.mLocale;
- params.mTextsSet.setLocale(locale);
- final RunInLocale<Void> job = new RunInLocale<Void>() {
- @Override
- protected Void job(final Resources res) {
- params.mTextsSet.loadStringResources(mContext);
- return null;
- }
- };
- // Null means the current system locale.
- job.runInLocale(mResources,
- SubtypeLocaleUtils.isNoLanguage(params.mId.mSubtype) ? null : locale);
+ params.mTextsSet.setLocale(params.mId.mLocale, mContext);
final int resourceId = keyboardAttr.getResourceId(
R.styleable.Keyboard_touchPositionCorrectionData, 0);
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java
index 976038c10..044cd119e 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java
@@ -23,6 +23,8 @@ import android.text.TextUtils;
import com.android.inputmethod.annotations.UsedForTesting;
import com.android.inputmethod.latin.Constants;
import com.android.inputmethod.latin.utils.CollectionUtils;
+import com.android.inputmethod.latin.utils.RunInLocale;
+import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
import java.util.HashMap;
import java.util.Locale;
@@ -38,23 +40,29 @@ public final class KeyboardTextsSet {
// Resource name to text map.
private HashMap<String, String> mResourceNameToTextsMap = CollectionUtils.newHashMap();
- public void setLocale(final Locale locale) {
+ public void setLocale(final Locale locale, final Context context) {
final String language = locale.getLanguage();
mTextsTable = KeyboardTextsTable.getTextsTable(language);
- }
-
- public void loadStringResources(final Context context) {
+ final Resources res = context.getResources();
final int referenceId = context.getApplicationInfo().labelRes;
- loadStringResourcesInternal(context, RESOURCE_NAMES, referenceId);
+ final String resourcePackageName = res.getResourcePackageName(referenceId);
+ final RunInLocale<Void> job = new RunInLocale<Void>() {
+ @Override
+ protected Void job(final Resources resource) {
+ loadStringResourcesInternal(res, RESOURCE_NAMES, resourcePackageName);
+ return null;
+ }
+ };
+ // Null means the current system locale.
+ job.runInLocale(res,
+ SubtypeLocaleUtils.NO_LANGUAGE.equals(locale.toString()) ? null : locale);
}
@UsedForTesting
- void loadStringResourcesInternal(final Context context, final String[] resourceNames,
- final int referenceId) {
- final Resources res = context.getResources();
- final String packageName = res.getResourcePackageName(referenceId);
+ void loadStringResourcesInternal(final Resources res, final String[] resourceNames,
+ final String resourcePackageName) {
for (final String resName : resourceNames) {
- final int resId = res.getIdentifier(resName, "string", packageName);
+ final int resId = res.getIdentifier(resName, "string", resourcePackageName);
mResourceNameToTextsMap.put(resName, res.getString(resId));
}
}
@@ -77,6 +85,7 @@ public final class KeyboardTextsSet {
return size;
}
+ // TODO: Resolve text reference when creating {@link KeyboardTextsTable} class.
public String resolveTextReference(final String rawText) {
if (TextUtils.isEmpty(rawText)) {
return null;
@@ -127,7 +136,7 @@ public final class KeyboardTextsSet {
// These texts' name should be aligned with the @string/<name> in
// values*/strings-action-keys.xml.
- private static final String[] RESOURCE_NAMES = {
+ static final String[] RESOURCE_NAMES = {
// Labels for action.
"label_go_key",
"label_send_key",
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
index 7a0161e65..1d9ee90fb 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
@@ -79,17 +79,17 @@ public final class KeyboardTextsTable {
private static final String[] NAMES = {
// /* index:histogram */ "name",
- /* 0:30 */ "more_keys_for_a",
- /* 1:30 */ "more_keys_for_o",
- /* 2:28 */ "more_keys_for_u",
- /* 3:27 */ "more_keys_for_e",
- /* 4:26 */ "more_keys_for_i",
- /* 5:23 */ "double_quotes",
- /* 6:22 */ "single_quotes",
- /* 7:21 */ "more_keys_for_c",
- /* 8:20 */ "more_keys_for_s",
- /* 9:20 */ "more_keys_for_n",
- /* 10:20 */ "label_to_alpha_key",
+ /* 0:32 */ "more_keys_for_a",
+ /* 1:32 */ "more_keys_for_o",
+ /* 2:30 */ "more_keys_for_u",
+ /* 3:29 */ "more_keys_for_e",
+ /* 4:28 */ "more_keys_for_i",
+ /* 5:23 */ "more_keys_for_c",
+ /* 6:23 */ "double_quotes",
+ /* 7:22 */ "more_keys_for_n",
+ /* 8:22 */ "single_quotes",
+ /* 9:21 */ "label_to_alpha_key",
+ /* 10:20 */ "more_keys_for_s",
/* 11:14 */ "more_keys_for_y",
/* 12:13 */ "more_keys_for_d",
/* 13:12 */ "more_keys_for_z",
@@ -111,30 +111,30 @@ public final class KeyboardTextsTable {
/* 29: 5 */ "keylabel_for_east_slavic_row2_11",
/* 30: 5 */ "keylabel_for_east_slavic_row3_5",
/* 31: 5 */ "more_keys_for_cyrillic_soft_sign",
- /* 32: 5 */ "more_keys_for_punctuation",
- /* 33: 4 */ "more_keys_for_nordic_row2_11",
- /* 34: 4 */ "keylabel_for_symbols_1",
- /* 35: 4 */ "keylabel_for_symbols_2",
- /* 36: 4 */ "keylabel_for_symbols_3",
- /* 37: 4 */ "keylabel_for_symbols_4",
- /* 38: 4 */ "keylabel_for_symbols_5",
- /* 39: 4 */ "keylabel_for_symbols_6",
- /* 40: 4 */ "keylabel_for_symbols_7",
- /* 41: 4 */ "keylabel_for_symbols_8",
- /* 42: 4 */ "keylabel_for_symbols_9",
- /* 43: 4 */ "keylabel_for_symbols_0",
- /* 44: 4 */ "label_to_symbol_key",
- /* 45: 4 */ "label_to_symbol_with_microphone_key",
- /* 46: 4 */ "additional_more_keys_for_symbols_1",
- /* 47: 4 */ "additional_more_keys_for_symbols_2",
- /* 48: 4 */ "additional_more_keys_for_symbols_3",
- /* 49: 4 */ "additional_more_keys_for_symbols_4",
- /* 50: 4 */ "additional_more_keys_for_symbols_5",
- /* 51: 4 */ "additional_more_keys_for_symbols_6",
- /* 52: 4 */ "additional_more_keys_for_symbols_7",
- /* 53: 4 */ "additional_more_keys_for_symbols_8",
- /* 54: 4 */ "additional_more_keys_for_symbols_9",
- /* 55: 4 */ "additional_more_keys_for_symbols_0",
+ /* 32: 4 */ "more_keys_for_nordic_row2_11",
+ /* 33: 4 */ "keylabel_for_symbols_1",
+ /* 34: 4 */ "keylabel_for_symbols_2",
+ /* 35: 4 */ "keylabel_for_symbols_3",
+ /* 36: 4 */ "keylabel_for_symbols_4",
+ /* 37: 4 */ "keylabel_for_symbols_5",
+ /* 38: 4 */ "keylabel_for_symbols_6",
+ /* 39: 4 */ "keylabel_for_symbols_7",
+ /* 40: 4 */ "keylabel_for_symbols_8",
+ /* 41: 4 */ "keylabel_for_symbols_9",
+ /* 42: 4 */ "keylabel_for_symbols_0",
+ /* 43: 4 */ "label_to_symbol_key",
+ /* 44: 4 */ "label_to_symbol_with_microphone_key",
+ /* 45: 4 */ "additional_more_keys_for_symbols_1",
+ /* 46: 4 */ "additional_more_keys_for_symbols_2",
+ /* 47: 4 */ "additional_more_keys_for_symbols_3",
+ /* 48: 4 */ "additional_more_keys_for_symbols_4",
+ /* 49: 4 */ "additional_more_keys_for_symbols_5",
+ /* 50: 4 */ "additional_more_keys_for_symbols_6",
+ /* 51: 4 */ "additional_more_keys_for_symbols_7",
+ /* 52: 4 */ "additional_more_keys_for_symbols_8",
+ /* 53: 4 */ "additional_more_keys_for_symbols_9",
+ /* 54: 4 */ "additional_more_keys_for_symbols_0",
+ /* 55: 3 */ "more_keys_for_punctuation",
/* 56: 3 */ "more_keys_for_star",
/* 57: 3 */ "keyspec_left_parenthesis",
/* 58: 3 */ "keyspec_right_parenthesis",
@@ -177,78 +177,77 @@ public final class KeyboardTextsTable {
/* 95: 2 */ "more_keys_for_right_parenthesis",
/* 96: 2 */ "more_keys_for_arabic_diacritics",
/* 97: 2 */ "keylabel_for_comma",
- /* 98: 2 */ "more_keys_for_comma",
- /* 99: 2 */ "keyhintlabel_for_tablet_comma",
- /* 100: 2 */ "more_keys_for_tablet_comma",
- /* 101: 2 */ "keyhintlabel_for_period",
- /* 102: 2 */ "more_keys_for_period",
- /* 103: 2 */ "keyhintlabel_for_tablet_period",
- /* 104: 2 */ "keylabel_for_symbols_question",
- /* 105: 2 */ "keylabel_for_symbols_semicolon",
- /* 106: 2 */ "keylabel_for_symbols_percent",
- /* 107: 2 */ "more_keys_for_symbols_semicolon",
- /* 108: 2 */ "more_keys_for_symbols_percent",
- /* 109: 1 */ "more_keys_for_v",
- /* 110: 1 */ "more_keys_for_j",
- /* 111: 1 */ "more_keys_for_cyrillic_ka",
- /* 112: 1 */ "more_keys_for_cyrillic_a",
- /* 113: 1 */ "more_keys_for_east_slavic_row2_11",
- /* 114: 1 */ "more_keys_for_currency_dollar",
- /* 115: 1 */ "more_keys_for_tablet_punctuation",
- /* 116: 1 */ "more_keys_for_plus",
- /* 117: 1 */ "more_keys_for_less_than",
- /* 118: 1 */ "more_keys_for_greater_than",
- /* 119: 1 */ "keylabel_for_period",
- /* 120: 1 */ "keylabel_for_tablet_period",
- /* 121: 1 */ "more_keys_for_exclamation",
- /* 122: 1 */ "more_keys_for_q",
- /* 123: 1 */ "more_keys_for_x",
- /* 124: 1 */ "keylabel_for_q",
- /* 125: 1 */ "keylabel_for_w",
- /* 126: 1 */ "keylabel_for_y",
- /* 127: 1 */ "keylabel_for_x",
- /* 128: 0 */ "more_keys_for_currency",
- /* 129: 0 */ "more_keys_for_symbols_1",
- /* 130: 0 */ "more_keys_for_symbols_2",
- /* 131: 0 */ "more_keys_for_symbols_3",
- /* 132: 0 */ "more_keys_for_symbols_4",
- /* 133: 0 */ "more_keys_for_symbols_5",
- /* 134: 0 */ "more_keys_for_symbols_6",
- /* 135: 0 */ "more_keys_for_symbols_7",
- /* 136: 0 */ "more_keys_for_symbols_8",
- /* 137: 0 */ "more_keys_for_symbols_9",
- /* 138: 0 */ "more_keys_for_symbols_0",
- /* 139: 0 */ "more_keys_for_am_pm",
- /* 140: 0 */ "settings_as_more_key",
- /* 141: 0 */ "shortcut_as_more_key",
- /* 142: 0 */ "action_next_as_more_key",
- /* 143: 0 */ "action_previous_as_more_key",
- /* 144: 0 */ "label_to_more_symbol_key",
- /* 145: 0 */ "label_to_more_symbol_for_tablet_key",
- /* 146: 0 */ "label_to_phone_numeric_key",
- /* 147: 0 */ "label_to_phone_symbols_key",
- /* 148: 0 */ "label_time_am",
- /* 149: 0 */ "label_time_pm",
- /* 150: 0 */ "keylabel_for_popular_domain",
- /* 151: 0 */ "more_keys_for_popular_domain",
- /* 152: 0 */ "keyspecs_for_left_parenthesis_more_keys",
- /* 153: 0 */ "keyspecs_for_right_parenthesis_more_keys",
- /* 154: 0 */ "single_laqm_raqm",
- /* 155: 0 */ "single_raqm_laqm",
- /* 156: 0 */ "double_laqm_raqm",
- /* 157: 0 */ "double_raqm_laqm",
- /* 158: 0 */ "single_lqm_rqm",
- /* 159: 0 */ "single_9qm_lqm",
- /* 160: 0 */ "single_9qm_rqm",
- /* 161: 0 */ "single_rqm_9qm",
- /* 162: 0 */ "double_lqm_rqm",
- /* 163: 0 */ "double_9qm_lqm",
- /* 164: 0 */ "double_9qm_rqm",
- /* 165: 0 */ "double_rqm_9qm",
- /* 166: 0 */ "more_keys_for_single_quote",
- /* 167: 0 */ "more_keys_for_double_quote",
- /* 168: 0 */ "more_keys_for_tablet_double_quote",
- /* 169: 0 */ "emoji_key_as_more_key",
+ /* 98: 2 */ "keyhintlabel_for_tablet_comma",
+ /* 99: 2 */ "more_keys_for_tablet_comma",
+ /* 100: 2 */ "keyhintlabel_for_period",
+ /* 101: 2 */ "more_keys_for_period",
+ /* 102: 2 */ "keyhintlabel_for_tablet_period",
+ /* 103: 2 */ "keylabel_for_symbols_question",
+ /* 104: 2 */ "keylabel_for_symbols_semicolon",
+ /* 105: 2 */ "keylabel_for_symbols_percent",
+ /* 106: 2 */ "more_keys_for_symbols_semicolon",
+ /* 107: 2 */ "more_keys_for_symbols_percent",
+ /* 108: 1 */ "more_keys_for_v",
+ /* 109: 1 */ "more_keys_for_j",
+ /* 110: 1 */ "more_keys_for_cyrillic_ka",
+ /* 111: 1 */ "more_keys_for_cyrillic_a",
+ /* 112: 1 */ "more_keys_for_east_slavic_row2_11",
+ /* 113: 1 */ "more_keys_for_currency_dollar",
+ /* 114: 1 */ "more_keys_for_tablet_punctuation",
+ /* 115: 1 */ "more_keys_for_plus",
+ /* 116: 1 */ "more_keys_for_less_than",
+ /* 117: 1 */ "more_keys_for_greater_than",
+ /* 118: 1 */ "keylabel_for_period",
+ /* 119: 1 */ "keylabel_for_tablet_period",
+ /* 120: 1 */ "more_keys_for_exclamation",
+ /* 121: 1 */ "more_keys_for_q",
+ /* 122: 1 */ "more_keys_for_x",
+ /* 123: 1 */ "keylabel_for_q",
+ /* 124: 1 */ "keylabel_for_w",
+ /* 125: 1 */ "keylabel_for_y",
+ /* 126: 1 */ "keylabel_for_x",
+ /* 127: 0 */ "more_keys_for_currency",
+ /* 128: 0 */ "more_keys_for_symbols_1",
+ /* 129: 0 */ "more_keys_for_symbols_2",
+ /* 130: 0 */ "more_keys_for_symbols_3",
+ /* 131: 0 */ "more_keys_for_symbols_4",
+ /* 132: 0 */ "more_keys_for_symbols_5",
+ /* 133: 0 */ "more_keys_for_symbols_6",
+ /* 134: 0 */ "more_keys_for_symbols_7",
+ /* 135: 0 */ "more_keys_for_symbols_8",
+ /* 136: 0 */ "more_keys_for_symbols_9",
+ /* 137: 0 */ "more_keys_for_symbols_0",
+ /* 138: 0 */ "more_keys_for_am_pm",
+ /* 139: 0 */ "settings_as_more_key",
+ /* 140: 0 */ "shortcut_as_more_key",
+ /* 141: 0 */ "action_next_as_more_key",
+ /* 142: 0 */ "action_previous_as_more_key",
+ /* 143: 0 */ "label_to_more_symbol_key",
+ /* 144: 0 */ "label_to_more_symbol_for_tablet_key",
+ /* 145: 0 */ "label_to_phone_numeric_key",
+ /* 146: 0 */ "label_to_phone_symbols_key",
+ /* 147: 0 */ "label_time_am",
+ /* 148: 0 */ "label_time_pm",
+ /* 149: 0 */ "keylabel_for_popular_domain",
+ /* 150: 0 */ "more_keys_for_popular_domain",
+ /* 151: 0 */ "keyspecs_for_left_parenthesis_more_keys",
+ /* 152: 0 */ "keyspecs_for_right_parenthesis_more_keys",
+ /* 153: 0 */ "single_laqm_raqm",
+ /* 154: 0 */ "single_raqm_laqm",
+ /* 155: 0 */ "double_laqm_raqm",
+ /* 156: 0 */ "double_raqm_laqm",
+ /* 157: 0 */ "single_lqm_rqm",
+ /* 158: 0 */ "single_9qm_lqm",
+ /* 159: 0 */ "single_9qm_rqm",
+ /* 160: 0 */ "single_rqm_9qm",
+ /* 161: 0 */ "double_lqm_rqm",
+ /* 162: 0 */ "double_9qm_lqm",
+ /* 163: 0 */ "double_9qm_rqm",
+ /* 164: 0 */ "double_rqm_9qm",
+ /* 165: 0 */ "more_keys_for_single_quote",
+ /* 166: 0 */ "more_keys_for_double_quote",
+ /* 167: 0 */ "more_keys_for_tablet_double_quote",
+ /* 168: 0 */ "emoji_key_as_more_key",
};
private static final String EMPTY = "";
@@ -256,26 +255,22 @@ public final class KeyboardTextsTable {
/* Default texts */
private static final String[] LANGUAGE_DEFAULT = {
/* more_keys_for_a ~ */
- EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
- /* ~ more_keys_for_i */
+ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
+ /* ~ more_keys_for_c */
/* double_quotes */ "!text/double_lqm_rqm",
+ /* more_keys_for_n */ EMPTY,
/* single_quotes */ "!text/single_lqm_rqm",
- /* more_keys_for_c ~ */
- EMPTY, EMPTY, EMPTY,
- /* ~ more_keys_for_n */
// Label for "switch to alphabetic" key.
/* label_to_alpha_key */ "ABC",
- /* more_keys_for_y ~ */
- EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
+ /* more_keys_for_s ~ */
+ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
/* ~ more_keys_for_g */
/* single_angle_quotes */ "!text/single_laqm_raqm",
/* double_angle_quotes */ "!text/double_laqm_raqm",
/* keylabel_for_currency */ "$",
/* more_keys_for_r ~ */
- EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
- /* ~ more_keys_for_cyrillic_soft_sign */
- /* more_keys_for_punctuation */ "!fixedColumnOrder!8,;,/,!text/keyspec_left_parenthesis,!text/keyspec_right_parenthesis,#,!,\\,,?,&,\\%,+,\",-,:,',@",
- /* more_keys_for_nordic_row2_11 */ EMPTY,
+ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
+ /* ~ more_keys_for_nordic_row2_11 */
/* keylabel_for_symbols_1 */ "1",
/* keylabel_for_symbols_2 */ "2",
/* keylabel_for_symbols_3 */ "3",
@@ -294,6 +289,7 @@ public final class KeyboardTextsTable {
/* additional_more_keys_for_symbols_1 ~ */
EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
/* ~ additional_more_keys_for_symbols_0 */
+ /* more_keys_for_punctuation */ "!autoColumnOrder!8,\\,,?,!,#,!text/keyspec_right_parenthesis,!text/keyspec_left_parenthesis,/,;,',@,:,-,\",+,\\%,&",
// U+2020: "†" DAGGER
// U+2021: "‡" DOUBLE DAGGER
// U+2605: "★" BLACK STAR
@@ -341,8 +337,8 @@ public final class KeyboardTextsTable {
/* more_keys_for_arabic_diacritics */ EMPTY,
// Comma key
/* keylabel_for_comma */ ",",
- /* more_keys_for_comma ~ */
- EMPTY, EMPTY, EMPTY, EMPTY,
+ /* keyhintlabel_for_tablet_comma ~ */
+ EMPTY, EMPTY, EMPTY,
/* ~ keyhintlabel_for_period */
/* more_keys_for_period */ "!text/more_keys_for_punctuation",
/* keyhintlabel_for_tablet_period */ EMPTY,
@@ -361,7 +357,7 @@ public final class KeyboardTextsTable {
// U+00A5: "¥" YEN SIGN
// U+20B1: "₱" PESO SIGN
/* more_keys_for_currency_dollar */ "\u00A2,\u00A3,\u20AC,\u00A5,\u20B1",
- /* more_keys_for_tablet_punctuation */ "!fixedColumnOrder!7,;,/,!text/keyspec_left_parenthesis,!text/keyspec_right_parenthesis,#,',\\,,&,\\%,+,\",-,:,@",
+ /* more_keys_for_tablet_punctuation */ "!autoColumnOrder!7,\\,,',#,!text/keyspec_right_parenthesis,!text/keyspec_left_parenthesis,/,;,@,:,-,\",+,\\%,&",
// U+00B1: "±" PLUS-MINUS SIGN
/* more_keys_for_plus */ "\u00B1",
/* more_keys_for_less_than */ "!fixedColumnOrder!3,!text/keyspec_left_single_angle_quote,!text/keyspec_less_than_equal,!text/keyspec_left_double_angle_quote",
@@ -507,13 +503,14 @@ public final class KeyboardTextsTable {
// U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
// U+0133: "ij" LATIN SMALL LIGATURE IJ
/* more_keys_for_i */ "\u00ED,\u00EC,\u00EF,\u00EE,\u012F,\u012B,\u0133",
- /* double_quotes ~ */
- null, null, null, null,
- /* ~ more_keys_for_s */
+ /* more_keys_for_c */ null,
+ /* double_quotes */ null,
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
/* more_keys_for_n */ "\u00F1,\u0144",
- /* label_to_alpha_key */ null,
+ /* single_quotes ~ */
+ null, null, null,
+ /* ~ more_keys_for_s */
// U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
// U+0133: "ij" LATIN SMALL LIGATURE IJ
/* more_keys_for_y */ "\u00FD,\u0133",
@@ -522,20 +519,18 @@ public final class KeyboardTextsTable {
/* Language ar: Arabic */
private static final String[] LANGUAGE_ar = {
/* more_keys_for_a ~ */
- null, null, null, null, null, null, null, null, null, null,
- /* ~ more_keys_for_n */
+ null, null, null, null, null, null, null, null, null,
+ /* ~ single_quotes */
// Label for "switch to alphabetic" key.
// U+0623: "أ" ARABIC LETTER ALEF WITH HAMZA ABOVE
// U+200C: ZERO WIDTH NON-JOINER
// U+0628: "ب" ARABIC LETTER BEH
// U+062C: "ج" ARABIC LETTER JEEM
/* label_to_alpha_key */ "\u0623\u200C\u0628\u200C\u062C",
- /* more_keys_for_y ~ */
+ /* more_keys_for_s ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null,
- /* ~ more_keys_for_cyrillic_soft_sign */
- /* more_keys_for_punctuation */ "!fixedColumnOrder!8,\",\',#,-,:,!,\u060C,\u061F,@,&,\\%,+,\u061B,/,(|),)|(",
- /* more_keys_for_nordic_row2_11 */ null,
+ null, null, null, null, null, null, null, null,
+ /* ~ more_keys_for_nordic_row2_11 */
// U+0661: "١" ARABIC-INDIC DIGIT ONE
/* keylabel_for_symbols_1 */ "\u0661",
// U+0662: "٢" ARABIC-INDIC DIGIT TWO
@@ -574,6 +569,7 @@ public final class KeyboardTextsTable {
// U+066B: "٫" ARABIC DECIMAL SEPARATOR
// U+066C: "٬" ARABIC THOUSANDS SEPARATOR
/* additional_more_keys_for_symbols_0 */ "0,\u066B,\u066C",
+ /* more_keys_for_punctuation */ null,
// U+2605: "★" BLACK STAR
// U+066D: "٭" ARABIC FIVE POINTED STAR
/* more_keys_for_star */ "\u2605,\u066D",
@@ -635,7 +631,6 @@ public final class KeyboardTextsTable {
/* more_keys_for_arabic_diacritics */ "!fixedColumnOrder!7, \u0655|\u0655, \u0654|\u0654, \u0652|\u0652, \u064D|\u064D, \u064C|\u064C, \u064B|\u064B, \u0651|\u0651, \u0656|\u0656, \u0670|\u0670, \u0653|\u0653, \u0650|\u0650, \u064F|\u064F, \u064E|\u064E,\u0640\u0640\u0640|\u0640",
// U+060C: "،" ARABIC COMMA
/* keylabel_for_comma */ "\u060C",
- /* more_keys_for_comma */ "\\,",
/* keyhintlabel_for_tablet_comma */ "\u061F",
/* more_keys_for_tablet_comma */ "!fixedColumnOrder!4,:,!,\u061F,\u061B,-,/,\",\'",
// U+0651: "ّ" ARABIC SHADDA
@@ -680,19 +675,20 @@ public final class KeyboardTextsTable {
// U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
// U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
/* more_keys_for_i */ "\u0131,\u00EE,\u00EF,\u00EC,\u00ED,\u012F,\u012B",
- /* double_quotes */ null,
- /* single_quotes */ 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
/* more_keys_for_c */ "\u00E7,\u0107,\u010D",
+ /* double_quotes ~ */
+ null, null, null, null,
+ /* ~ label_to_alpha_key */
// U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
// U+00DF: "ß" LATIN SMALL LETTER SHARP S
// U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
// U+0161: "š" LATIN SMALL LETTER S WITH CARON
/* more_keys_for_s */ "\u015F,\u00DF,\u015B,\u0161",
- /* more_keys_for_n ~ */
- null, null, null, null, null, null, null,
+ /* more_keys_for_y ~ */
+ null, null, null, null, null,
/* ~ more_keys_for_l */
// U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE
/* more_keys_for_g */ "\u011F",
@@ -701,20 +697,18 @@ public final class KeyboardTextsTable {
/* Language be_BY: Belarusian (Belarus) */
private static final String[] LANGUAGE_be_BY = {
/* more_keys_for_a ~ */
- null, null, null, null, null,
- /* ~ more_keys_for_i */
+ null, null, null, null, null, null,
+ /* ~ more_keys_for_c */
/* double_quotes */ "!text/double_9qm_lqm",
+ /* more_keys_for_n */ null,
/* single_quotes */ "!text/single_9qm_lqm",
- /* more_keys_for_c ~ */
- null, null, null,
- /* ~ more_keys_for_n */
// Label for "switch to alphabetic" key.
// U+0410: "А" CYRILLIC CAPITAL LETTER A
// U+0411: "Б" CYRILLIC CAPITAL LETTER BE
// U+0412: "В" CYRILLIC CAPITAL LETTER VE
/* label_to_alpha_key */ "\u0410\u0411\u0412",
- /* more_keys_for_y ~ */
- null, null, null, null, null, null, null, null, null, null, null,
+ /* more_keys_for_s ~ */
+ null, null, null, null, null, null, null, null, null, null, null, null,
/* ~ more_keys_for_k */
// U+0451: "ё" CYRILLIC SMALL LETTER IO
/* more_keys_for_cyrillic_ie */ "\u0451",
@@ -736,13 +730,12 @@ public final class KeyboardTextsTable {
/* Language bg: Bulgarian */
private static final String[] LANGUAGE_bg = {
/* more_keys_for_a ~ */
- null, null, null, null, null,
- /* ~ more_keys_for_i */
+ null, null, null, null, null, null,
+ /* ~ more_keys_for_c */
// single_quotes of Bulgarian is default single_quotes_right_left.
/* double_quotes */ "!text/double_9qm_lqm",
- /* single_quotes ~ */
- null, null, null, null,
- /* ~ more_keys_for_n */
+ /* more_keys_for_n */ null,
+ /* single_quotes */ null,
// Label for "switch to alphabetic" key.
// U+0410: "А" CYRILLIC CAPITAL LETTER A
// U+0411: "Б" CYRILLIC CAPITAL LETTER BE
@@ -794,41 +787,39 @@ public final class KeyboardTextsTable {
// U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
// U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
/* more_keys_for_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B",
- /* double_quotes */ null,
- /* single_quotes */ 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
/* more_keys_for_c */ "\u00E7,\u0107,\u010D",
- /* more_keys_for_s */ null,
+ /* double_quotes */ null,
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
/* more_keys_for_n */ "\u00F1,\u0144",
- /* label_to_alpha_key ~ */
- null, null, null, null, null,
+ /* single_quotes ~ */
+ null, null, null, null, null, null, null,
/* ~ more_keys_for_t */
// U+00B7: "·" MIDDLE DOT
// U+0142: "ł" LATIN SMALL LETTER L WITH STROKE
/* more_keys_for_l */ "l\u00B7l,\u0142",
/* more_keys_for_g ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- null,
- /* ~ more_keys_for_cyrillic_soft_sign */
- // U+00B7: "·" MIDDLE DOT
- /* more_keys_for_punctuation */ "!fixedColumnOrder!9,;,/,(,),#,\u00B7,!,\\,,?,&,\\%,+,\",-,:,',@",
- /* more_keys_for_nordic_row2_11 ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null,
+ /* ~ additional_more_keys_for_symbols_0 */
+ // U+00B7: "·" MIDDLE DOT
+ /* more_keys_for_punctuation */ "!autoColumnOrder!9,\\,,?,!,\u00B7,#,),(,/,;,',@,:,-,\",+,\\%,&",
+ /* more_keys_for_star ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null,
/* ~ more_keys_for_swiss_row2_11 */
// U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
/* keylabel_for_spanish_row2_10 */ "\u00E7",
/* more_keys_for_bullet ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null,
+ null, null, null, null, null, null,
/* ~ more_keys_for_currency_dollar */
- /* more_keys_for_tablet_punctuation */ "!fixedColumnOrder!8,;,/,(,),#,\u00B7,',\\,,&,\\%,+,\",-,:,@",
+ /* more_keys_for_tablet_punctuation */ "!autoColumnOrder!8,\\,,',\u00B7,#,),(,/,;,@,:,-,\",+,\\%,&",
};
/* Language cs: Czech */
@@ -874,21 +865,21 @@ public final class KeyboardTextsTable {
// U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
// U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
/* more_keys_for_i */ "\u00ED,\u00EE,\u00EF,\u00EC,\u012F,\u012B",
- /* double_quotes */ "!text/double_9qm_lqm",
- /* single_quotes */ "!text/single_9qm_lqm",
// U+010D: "č" LATIN SMALL LETTER C WITH CARON
// U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
// U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
/* more_keys_for_c */ "\u010D,\u00E7,\u0107",
- // U+0161: "š" LATIN SMALL LETTER S WITH CARON
- // U+00DF: "ß" LATIN SMALL LETTER SHARP S
- // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
- /* more_keys_for_s */ "\u0161,\u00DF,\u015B",
+ /* double_quotes */ "!text/double_9qm_lqm",
// U+0148: "ň" LATIN SMALL LETTER N WITH CARON
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
/* more_keys_for_n */ "\u0148,\u00F1,\u0144",
+ /* single_quotes */ "!text/single_9qm_lqm",
/* label_to_alpha_key */ null,
+ // U+0161: "š" LATIN SMALL LETTER S WITH CARON
+ // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+ // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+ /* more_keys_for_s */ "\u0161,\u00DF,\u015B",
// U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
// U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
/* more_keys_for_y */ "\u00FD,\u00FF",
@@ -937,17 +928,17 @@ public final class KeyboardTextsTable {
// U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
// U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
/* more_keys_for_i */ "\u00ED,\u00EF",
+ /* more_keys_for_c */ null,
/* double_quotes */ "!text/double_9qm_lqm",
+ // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+ // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+ /* more_keys_for_n */ "\u00F1,\u0144",
/* single_quotes */ "!text/single_9qm_lqm",
- /* more_keys_for_c */ null,
+ /* label_to_alpha_key */ null,
// U+00DF: "ß" LATIN SMALL LETTER SHARP S
// U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
// U+0161: "š" LATIN SMALL LETTER S WITH CARON
/* more_keys_for_s */ "\u00DF,\u015B,\u0161",
- // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
- // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
- /* more_keys_for_n */ "\u00F1,\u0144",
- /* label_to_alpha_key */ null,
// U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
// U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
/* more_keys_for_y */ "\u00FD,\u00FF",
@@ -972,8 +963,8 @@ public final class KeyboardTextsTable {
// U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
/* more_keys_for_nordic_row2_10 */ "\u00E4",
/* keylabel_for_east_slavic_row1_9 ~ */
- null, null, null, null, null, null,
- /* ~ more_keys_for_punctuation */
+ null, null, null, null, null,
+ /* ~ more_keys_for_cyrillic_soft_sign */
// U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
/* more_keys_for_nordic_row2_11 */ "\u00F6",
};
@@ -1011,18 +1002,19 @@ public final class KeyboardTextsTable {
// U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
/* more_keys_for_e */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0117",
/* more_keys_for_i */ null,
+ /* more_keys_for_c */ null,
/* double_quotes */ "!text/double_9qm_lqm",
+ // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+ // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+ /* more_keys_for_n */ "\u00F1,\u0144",
/* single_quotes */ "!text/single_9qm_lqm",
- /* more_keys_for_c */ null,
+ /* label_to_alpha_key */ null,
// U+00DF: "ß" LATIN SMALL LETTER SHARP S
// U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
// U+0161: "š" LATIN SMALL LETTER S WITH CARON
/* more_keys_for_s */ "\u00DF,\u015B,\u0161",
- // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
- // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
- /* more_keys_for_n */ "\u00F1,\u0144",
- /* label_to_alpha_key ~ */
- null, null, null, null, null, null, null,
+ /* more_keys_for_y ~ */
+ null, null, null, null, null, null,
/* ~ more_keys_for_g */
/* single_angle_quotes */ "!text/single_raqm_laqm",
/* double_angle_quotes */ "!text/double_raqm_laqm",
@@ -1050,8 +1042,8 @@ public final class KeyboardTextsTable {
/* Language el: Greek */
private static final String[] LANGUAGE_el = {
/* more_keys_for_a ~ */
- null, null, null, null, null, null, null, null, null, null,
- /* ~ more_keys_for_n */
+ null, null, null, null, null, null, null, null, null,
+ /* ~ single_quotes */
// Label for "switch to alphabetic" key.
// U+0391: "Α" GREEK CAPITAL LETTER ALPHA
// U+0392: "Β" GREEK CAPITAL LETTER BETA
@@ -1097,14 +1089,15 @@ public final class KeyboardTextsTable {
// U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
// U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
/* more_keys_for_i */ "\u00EE,\u00EF,\u00ED,\u012B,\u00EC",
- /* double_quotes */ null,
- /* single_quotes */ null,
// U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
/* more_keys_for_c */ "\u00E7",
- // U+00DF: "ß" LATIN SMALL LETTER SHARP S
- /* more_keys_for_s */ "\u00DF",
+ /* double_quotes */ null,
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
/* more_keys_for_n */ "\u00F1",
+ /* single_quotes */ null,
+ /* label_to_alpha_key */ null,
+ // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+ /* more_keys_for_s */ "\u00DF",
};
/* Language eo: Esperanto */
@@ -1162,19 +1155,12 @@ public final class KeyboardTextsTable {
// U+0131: "ı" LATIN SMALL LETTER DOTLESS I
// U+0133: "ij" LATIN SMALL LIGATURE IJ
/* more_keys_for_i */ "\u00ED,\u00EE,\u00EF,\u0129,\u00EC,\u012F,\u012B,\u0131,\u0133",
- /* double_quotes */ null,
- /* single_quotes */ null,
// U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
// U+010D: "č" LATIN SMALL LETTER C WITH CARON
// U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
// U+010B: "ċ" LATIN SMALL LETTER C WITH DOT ABOVE
/* more_keys_for_c */ "\u0107,\u010D,\u00E7,\u010B",
- // U+00DF: "ß" LATIN SMALL LETTER SHARP S
- // U+0161: "š" LATIN SMALL LETTER S WITH CARON
- // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
- // U+0219: "ș" LATIN SMALL LETTER S WITH COMMA BELOW
- // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
- /* more_keys_for_s */ "\u00DF,\u0161,\u015B,\u0219,\u015F",
+ /* double_quotes */ null,
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
// U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
@@ -1182,7 +1168,14 @@ public final class KeyboardTextsTable {
// U+0149: "ʼn" LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
// U+014B: "ŋ" LATIN SMALL LETTER ENG
/* more_keys_for_n */ "\u00F1,\u0144,\u0146,\u0148,\u0149,\u014B",
+ /* single_quotes */ null,
/* label_to_alpha_key */ null,
+ // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+ // U+0161: "š" LATIN SMALL LETTER S WITH CARON
+ // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+ // U+0219: "ș" LATIN SMALL LETTER S WITH COMMA BELOW
+ // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
+ /* more_keys_for_s */ "\u00DF,\u0161,\u015B,\u0219,\u015F",
// U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
// U+0177: "ŷ" LATIN SMALL LETTER Y WITH CIRCUMFLEX
// U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
@@ -1240,7 +1233,6 @@ public final class KeyboardTextsTable {
/* keylabel_for_spanish_row2_10 */ "\u0135",
/* more_keys_for_bullet ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- null,
/* ~ more_keys_for_symbols_percent */
// U+0175: "ŵ" LATIN SMALL LETTER W WITH CIRCUMFLEX
/* more_keys_for_v */ "w,\u0175",
@@ -1303,23 +1295,23 @@ public final class KeyboardTextsTable {
// U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
// U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
/* more_keys_for_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B",
- /* double_quotes */ null,
- /* single_quotes */ 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
/* more_keys_for_c */ "\u00E7,\u0107,\u010D",
- /* more_keys_for_s */ null,
+ /* double_quotes */ null,
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
/* more_keys_for_n */ "\u00F1,\u0144",
- /* label_to_alpha_key ~ */
+ /* single_quotes ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null,
- /* ~ more_keys_for_cyrillic_soft_sign */
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null,
+ /* ~ additional_more_keys_for_symbols_0 */
// U+00A1: "¡" INVERTED EXCLAMATION MARK
// U+00BF: "¿" INVERTED QUESTION MARK
- /* more_keys_for_punctuation */ "!fixedColumnOrder!9,\u00A1,;,/,(,),#,!,\\,,?,\u00BF,&,\\%,+,\",-,:,',@",
+ /* more_keys_for_punctuation */ "!autoColumnOrder!9,\\,,?,!,#,),(,/,;,\u00A1,',@,:,-,\",+,\\%,&,\u00BF",
};
/* Language et_EE: Estonian (Estonia) */
@@ -1369,22 +1361,22 @@ public final class KeyboardTextsTable {
// U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
// U+0131: "ı" LATIN SMALL LETTER DOTLESS I
/* more_keys_for_i */ "\u012B,\u00EC,\u012F,\u00ED,\u00EE,\u00EF,\u0131",
- /* double_quotes */ "!text/double_9qm_lqm",
- /* single_quotes */ "!text/single_9qm_lqm",
// U+010D: "č" LATIN SMALL LETTER C WITH CARON
// U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
// U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
/* more_keys_for_c */ "\u010D,\u00E7,\u0107",
- // U+0161: "š" LATIN SMALL LETTER S WITH CARON
- // U+00DF: "ß" LATIN SMALL LETTER SHARP S
- // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
- // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
- /* more_keys_for_s */ "\u0161,\u00DF,\u015B,\u015F",
+ /* double_quotes */ "!text/double_9qm_lqm",
// U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
/* more_keys_for_n */ "\u0146,\u00F1,\u0144",
+ /* single_quotes */ "!text/single_9qm_lqm",
/* label_to_alpha_key */ null,
+ // U+0161: "š" LATIN SMALL LETTER S WITH CARON
+ // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+ // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+ // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
+ /* more_keys_for_s */ "\u0161,\u00DF,\u015B,\u015F",
// U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
// U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
/* more_keys_for_y */ "\u00FD,\u00FF",
@@ -1425,30 +1417,79 @@ public final class KeyboardTextsTable {
/* more_keys_for_nordic_row2_10 */ "\u00F5",
};
+ /* Language eu_ES: Basque (Spain) */
+ private static final String[] LANGUAGE_eu_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
+ /* more_keys_for_a */ "\u00E1,\u00E0,\u00E4,\u00E2,\u00E3,\u00E5,\u0105,\u00E6,\u0101,\u00AA",
+ // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+ // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+ // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+ // 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
+ /* more_keys_for_o */ "\u00F3,\u00F2,\u00F6,\u00F4,\u00F5,\u00F8,\u0153,\u014D,\u00BA",
+ // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+ // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+ // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+ // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+ // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
+ /* more_keys_for_u */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B",
+ // 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
+ /* more_keys_for_e */ "\u00E9,\u00E8,\u00EB,\u00EA,\u0119,\u0117,\u0113",
+ // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+ // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+ // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+ // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+ // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
+ // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
+ /* more_keys_for_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B",
+ // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+ // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+ // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+ /* more_keys_for_c */ "\u00E7,\u0107,\u010D",
+ /* double_quotes */ null,
+ // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+ // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+ /* more_keys_for_n */ "\u00F1,\u0144",
+ };
+
/* Language fa: Persian */
private static final String[] LANGUAGE_fa = {
/* more_keys_for_a ~ */
- null, null, null, null, null, null, null, null, null, null,
- /* ~ more_keys_for_n */
+ null, null, null, null, null, null, null, null, null,
+ /* ~ single_quotes */
// 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
/* label_to_alpha_key */ "\u0627\u200C\u0628\u200C\u067E",
- /* more_keys_for_y ~ */
- null, null, null, null, null, null, null, null,
+ /* more_keys_for_s ~ */
+ null, null, null, null, null, null, null, null, null,
/* ~ double_angle_quotes */
// U+FDFC: "﷼" RIAL SIGN
/* keylabel_for_currency */ "\uFDFC",
/* more_keys_for_r ~ */
- null, null, null, null, null, null, null, null, null, null, null, null,
- /* ~ more_keys_for_cyrillic_soft_sign */
- // U+061F: "؟" ARABIC QUESTION MARK
- // U+060C: "،" ARABIC COMMA
- // U+061B: "؛" ARABIC SEMICOLON
- /* more_keys_for_punctuation */ "!fixedColumnOrder!8,\",\',#,-,:,!,\u060C,\u061F,@,&,\\%,+,\u061B,/,!text/keyspec_left_parenthesis,!text/keyspec_right_parenthesis",
- /* more_keys_for_nordic_row2_11 */ null,
+ null, null, null, null, null, null, null, null, null, null, null, null, null,
+ /* ~ more_keys_for_nordic_row2_11 */
// U+06F1: "۱" EXTENDED ARABIC-INDIC DIGIT ONE
/* keylabel_for_symbols_1 */ "\u06F1",
// U+06F2: "۲" EXTENDED ARABIC-INDIC DIGIT TWO
@@ -1487,6 +1528,7 @@ public final class KeyboardTextsTable {
// U+066B: "٫" ARABIC DECIMAL SEPARATOR
// U+066C: "٬" ARABIC THOUSANDS SEPARATOR
/* additional_more_keys_for_symbols_0 */ "0,\u066B,\u066C",
+ /* more_keys_for_punctuation */ null,
// U+2605: "★" BLACK STAR
// U+066D: "٭" ARABIC FIVE POINTED STAR
/* more_keys_for_star */ "\u2605,\u066D",
@@ -1544,7 +1586,6 @@ public final class KeyboardTextsTable {
/* more_keys_for_arabic_diacritics */ "!fixedColumnOrder!7, \u0655|\u0655, \u0652|\u0652, \u0651|\u0651, \u064C|\u064C, \u064D|\u064D, \u064B|\u064B, \u0654|\u0654, \u0656|\u0656, \u0670|\u0670, \u0653|\u0653, \u064F|\u064F, \u0650|\u0650, \u064E|\u064E,\u0640\u0640\u0640|\u0640",
// U+060C: "،" ARABIC COMMA
/* keylabel_for_comma */ "\u060C",
- /* more_keys_for_comma */ "\\,",
/* keyhintlabel_for_tablet_comma */ "\u061F",
/* more_keys_for_tablet_comma */ "!fixedColumnOrder!4,:,!,\u061F,\u061B,-,/,!text/keyspec_left_double_angle_quote,!text/keyspec_right_double_angle_quote",
// U+064B: "ً" ARABIC FATHATAN
@@ -1591,15 +1632,14 @@ public final class KeyboardTextsTable {
// U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
/* more_keys_for_u */ "\u00FC",
/* more_keys_for_e ~ */
- null, null, null, null, null,
- /* ~ more_keys_for_c */
+ null, null, null, null, null, null, null,
+ /* ~ label_to_alpha_key */
// U+0161: "š" LATIN SMALL LETTER S WITH CARON
// U+00DF: "ß" LATIN SMALL LETTER SHARP S
// U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
/* more_keys_for_s */ "\u0161,\u00DF,\u015B",
- /* more_keys_for_n ~ */
- null, null, null, null,
- /* ~ more_keys_for_d */
+ /* more_keys_for_y */ null,
+ /* more_keys_for_d */ null,
// U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
// U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
// U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
@@ -1616,8 +1656,8 @@ public final class KeyboardTextsTable {
// U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
/* more_keys_for_nordic_row2_10 */ "\u00F8",
/* keylabel_for_east_slavic_row1_9 ~ */
- null, null, null, null, null, null,
- /* ~ more_keys_for_punctuation */
+ null, null, null, null, null,
+ /* ~ more_keys_for_cyrillic_soft_sign */
// U+00E6: "æ" LATIN SMALL LETTER AE
/* more_keys_for_nordic_row2_11 */ "\u00E6",
};
@@ -1665,15 +1705,13 @@ public final class KeyboardTextsTable {
// U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
// U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
/* more_keys_for_i */ "\u00EE,%,\u00EF,\u00EC,\u00ED,\u012F,\u012B",
- /* double_quotes */ null,
- /* single_quotes */ 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
- /* more_keys_for_c */ "\u00E7,\u0107,\u010D",
- /* more_keys_for_s ~ */
- null, null, null,
- /* ~ label_to_alpha_key */
+ /* more_keys_for_c */ "\u00E7,%,\u0107,\u010D",
+ /* double_quotes ~ */
+ null, null, null, null, null,
+ /* ~ more_keys_for_s */
// U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
/* more_keys_for_y */ "%,\u00FF",
/* more_keys_for_d ~ */
@@ -1697,23 +1735,77 @@ public final class KeyboardTextsTable {
/* more_keys_for_swiss_row2_11 */ "\u00E4",
};
+ /* Language gl_ES: Gallegan (Spain) */
+ private static final String[] LANGUAGE_gl_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
+ /* more_keys_for_a */ "\u00E1,\u00E0,\u00E4,\u00E2,\u00E3,\u00E5,\u0105,\u00E6,\u0101,\u00AA",
+ // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+ // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+ // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+ // 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
+ /* more_keys_for_o */ "\u00F3,\u00F2,\u00F6,\u00F4,\u00F5,\u00F8,\u0153,\u014D,\u00BA",
+ // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+ // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+ // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+ // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+ // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
+ /* more_keys_for_u */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B",
+ // 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
+ /* more_keys_for_e */ "\u00E9,\u00E8,\u00EB,\u00EA,\u0119,\u0117,\u0113",
+ // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+ // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+ // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+ // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+ // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
+ // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
+ /* more_keys_for_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B",
+ // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+ // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+ // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+ /* more_keys_for_c */ "\u00E7,\u0107,\u010D",
+ /* double_quotes */ null,
+ // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+ // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+ /* more_keys_for_n */ "\u00F1,\u0144",
+ };
+
/* Language hi: Hindi */
private static final String[] LANGUAGE_hi = {
/* more_keys_for_a ~ */
- null, null, null, null, null, null, null, null, null, null,
- /* ~ more_keys_for_n */
+ null, null, null, null, null, null, null, null, null,
+ /* ~ single_quotes */
// Label for "switch to alphabetic" key.
// U+0915: "क" DEVANAGARI LETTER KA
// U+0916: "ख" DEVANAGARI LETTER KHA
// U+0917: "ग" DEVANAGARI LETTER GA
/* label_to_alpha_key */ "\u0915\u0916\u0917",
- /* more_keys_for_y ~ */
- null, null, null, null, null, null, null, null,
+ /* more_keys_for_s ~ */
+ null, null, null, null, null, null, null, null, null,
/* ~ double_angle_quotes */
// U+20B9: "₹" INDIAN RUPEE SIGN
/* keylabel_for_currency */ "\u20B9",
/* more_keys_for_r ~ */
- null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null, null, null,
/* ~ more_keys_for_nordic_row2_11 */
// U+0967: "१" DEVANAGARI DIGIT ONE
/* keylabel_for_symbols_1 */ "\u0967",
@@ -1757,20 +1849,20 @@ public final class KeyboardTextsTable {
/* more_keys_for_a ~ */
null, null, null, null, null,
/* ~ more_keys_for_i */
- /* double_quotes */ "!text/double_9qm_rqm",
- /* single_quotes */ "!text/single_9qm_rqm",
// U+010D: "č" LATIN SMALL LETTER C WITH CARON
// U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
// U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
/* more_keys_for_c */ "\u010D,\u0107,\u00E7",
- // U+0161: "š" LATIN SMALL LETTER S WITH CARON
- // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
- // U+00DF: "ß" LATIN SMALL LETTER SHARP S
- /* more_keys_for_s */ "\u0161,\u015B,\u00DF",
+ /* double_quotes */ "!text/double_9qm_rqm",
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
/* more_keys_for_n */ "\u00F1,\u0144",
+ /* single_quotes */ "!text/single_9qm_rqm",
/* label_to_alpha_key */ null,
+ // U+0161: "š" LATIN SMALL LETTER S WITH CARON
+ // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+ // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+ /* more_keys_for_s */ "\u0161,\u015B,\u00DF",
/* more_keys_for_y */ null,
// U+0111: "đ" LATIN SMALL LETTER D WITH STROKE
/* more_keys_for_d */ "\u0111",
@@ -1828,10 +1920,12 @@ public final class KeyboardTextsTable {
// U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
// U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
/* more_keys_for_i */ "\u00ED,\u00EE,\u00EF,\u00EC,\u012F,\u012B",
+ /* more_keys_for_c */ null,
/* double_quotes */ "!text/double_9qm_rqm",
+ /* more_keys_for_n */ null,
/* single_quotes */ "!text/single_9qm_rqm",
- /* more_keys_for_c ~ */
- null, null, null, null, null, null, null, null, null, null,
+ /* label_to_alpha_key ~ */
+ null, null, null, null, null, null, null, null,
/* ~ more_keys_for_g */
/* single_angle_quotes */ "!text/single_raqm_laqm",
/* double_angle_quotes */ "!text/double_raqm_laqm",
@@ -1840,30 +1934,31 @@ public final class KeyboardTextsTable {
/* Language hy_AM: Armenian (Armenia) */
private static final String[] LANGUAGE_hy_AM = {
/* more_keys_for_a ~ */
- null, null, null, null, null, null, null, null, null, null,
- /* ~ more_keys_for_n */
+ null, null, null, null, null, null, null, null, null,
+ /* ~ single_quotes */
// Label for "switch to alphabetic" key.
// U+0531: "Ա" ARMENIAN CAPITAL LETTER AYB
// U+0532: "Բ" ARMENIAN CAPITAL LETTER BEN
// U+0533: "Գ" ARMENIAN CAPITAL LETTER GIM
/* label_to_alpha_key */ "\u0531\u0532\u0533",
- /* more_keys_for_y ~ */
+ /* more_keys_for_s ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null,
- /* ~ more_keys_for_cyrillic_soft_sign */
- // U+058A: "֊" ARMENIAN HYPHEN
- // U+055C: "՜" ARMENIAN EXCLAMATION MARK
- // U+055D: "՝" ARMENIAN COMMA
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ /* ~ additional_more_keys_for_symbols_0 */
// U+055E: "՞" ARMENIAN QUESTION MARK
- // U+0559: "ՙ" ARMENIAN MODIFIER LETTER LEFT HALF RING
+ // U+055C: "՜" ARMENIAN EXCLAMATION MARK
// U+055A: "՚" ARMENIAN APOSTROPHE
+ // U+0559: "ՙ" ARMENIAN MODIFIER LETTER LEFT HALF RING
+ // U+055D: "՝" ARMENIAN COMMA
// U+055B: "՛" ARMENIAN EMPHASIS MARK
+ // U+058A: "֊" ARMENIAN HYPHEN
+ // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
// U+055F: "՟" ARMENIAN ABBREVIATION MARK
- /* more_keys_for_punctuation */ "!fixedColumnOrder!8,!,?,\u0559,\u055A,.,\u055C,\\,,\u055E,:,;,\u055F,\u00AB,\u00BB,\u058A,\u055D,\u055B",
- /* more_keys_for_nordic_row2_11 ~ */
+ /* more_keys_for_punctuation */ "!autoColumnOrder!8,\\,,\u055E,\u055C,.,\u055A,\u0559,?,!,\u055D,\u055B,\u058A,\u00BB,\u00AB,\u055F,;,:",
+ /* more_keys_for_star ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null, null,
/* ~ keyspec_right_single_angle_quote */
// U+058F: "֏" ARMENIAN DRAM SIGN
// TODO: Enable this when we have glyph for the following letter
@@ -1878,7 +1973,7 @@ public final class KeyboardTextsTable {
/* more_keys_for_h ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null,
/* ~ more_keys_for_greater_than */
// U+0589: "։" ARMENIAN FULL STOP
/* keylabel_for_period */ "\u0589",
@@ -1929,11 +2024,12 @@ public final class KeyboardTextsTable {
// U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
// U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
/* more_keys_for_i */ "\u00ED,\u00EF,\u00EE,\u00EC,\u012F,\u012B",
+ /* more_keys_for_c */ null,
/* double_quotes */ "!text/double_9qm_lqm",
+ /* more_keys_for_n */ null,
/* single_quotes */ "!text/single_9qm_lqm",
- /* more_keys_for_c ~ */
- null, null, null, null,
- /* ~ label_to_alpha_key */
+ /* label_to_alpha_key */ null,
+ /* more_keys_for_s */ null,
// U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
// U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
/* more_keys_for_y */ "\u00FD,\u00FF",
@@ -1992,20 +2088,18 @@ public final class KeyboardTextsTable {
/* Language iw: Hebrew */
private static final String[] LANGUAGE_iw = {
/* more_keys_for_a ~ */
- null, null, null, null, null,
- /* ~ more_keys_for_i */
+ null, null, null, null, null, null,
+ /* ~ more_keys_for_c */
/* double_quotes */ "!text/double_rqm_9qm",
+ /* more_keys_for_n */ null,
/* single_quotes */ "!text/single_rqm_9qm",
- /* more_keys_for_c ~ */
- null, null, null,
- /* ~ more_keys_for_n */
// Label for "switch to alphabetic" key.
// U+05D0: "א" HEBREW LETTER ALEF
// U+05D1: "ב" HEBREW LETTER BET
// U+05D2: "ג" HEBREW LETTER GIMEL
/* label_to_alpha_key */ "\u05D0\u05D1\u05D2",
- /* more_keys_for_y ~ */
- null, null, null, null, null, null, null, null,
+ /* more_keys_for_s ~ */
+ null, null, null, null, null, null, null, null, null,
/* ~ double_angle_quotes */
// U+20AA: "₪" NEW SHEQEL SIGN
/* keylabel_for_currency */ "\u20AA",
@@ -2013,7 +2107,7 @@ public final class KeyboardTextsTable {
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null,
- /* ~ additional_more_keys_for_symbols_0 */
+ /* ~ more_keys_for_punctuation */
// U+2605: "★" BLACK STAR
/* more_keys_for_star */ "\u2605",
// The all letters need to be mirrored are found at
@@ -2041,7 +2135,7 @@ public final class KeyboardTextsTable {
/* keylabel_for_tablet_comma ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null,
/* ~ more_keys_for_tablet_punctuation */
// U+00B1: "±" PLUS-MINUS SIGN
// U+FB29: "﬩" HEBREW LETTER ALTERNATIVE PLUS SIGN
@@ -2051,13 +2145,11 @@ public final class KeyboardTextsTable {
/* Language ka_GE: Georgian (Georgia) */
private static final String[] LANGUAGE_ka_GE = {
/* more_keys_for_a ~ */
- null, null, null, null, null,
- /* ~ more_keys_for_i */
+ null, null, null, null, null, null,
+ /* ~ more_keys_for_c */
/* double_quotes */ "!text/double_9qm_lqm",
+ /* more_keys_for_n */ null,
/* single_quotes */ "!text/single_9qm_lqm",
- /* more_keys_for_c ~ */
- null, null, null,
- /* ~ more_keys_for_n */
// Label for "switch to alphabetic" key.
// U+10D0: "ა" GEORGIAN LETTER AN
// U+10D1: "ბ" GEORGIAN LETTER BAN
@@ -2068,15 +2160,15 @@ public final class KeyboardTextsTable {
/* Language kk: Kazakh */
private static final String[] LANGUAGE_kk = {
/* more_keys_for_a ~ */
- null, null, null, null, null, null, null, null, null, null,
- /* ~ more_keys_for_n */
+ null, null, null, null, null, null, null, null, null,
+ /* ~ single_quotes */
// Label for "switch to alphabetic" key.
// U+0410: "А" CYRILLIC CAPITAL LETTER A
// U+0411: "Б" CYRILLIC CAPITAL LETTER BE
// U+0412: "В" CYRILLIC CAPITAL LETTER VE
/* label_to_alpha_key */ "\u0410\u0411\u0412",
- /* more_keys_for_y ~ */
- null, null, null, null, null, null, null, null, null, null, null,
+ /* more_keys_for_s ~ */
+ null, null, null, null, null, null, null, null, null, null, null, null,
/* ~ more_keys_for_k */
// U+0451: "ё" CYRILLIC SMALL LETTER IO
/* more_keys_for_cyrillic_ie */ "\u0451",
@@ -2093,7 +2185,7 @@ public final class KeyboardTextsTable {
/* keylabel_for_east_slavic_row3_5 */ "\u0438",
// U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN
/* more_keys_for_cyrillic_soft_sign */ "\u044A",
- /* more_keys_for_punctuation ~ */
+ /* more_keys_for_nordic_row2_11 ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null,
@@ -2111,7 +2203,7 @@ public final class KeyboardTextsTable {
/* more_keys_for_cyrillic_o */ "\u04E9",
/* keylabel_for_south_slavic_row1_6 ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null,
/* ~ more_keys_for_j */
// U+049B: "қ" CYRILLIC SMALL LETTER KA WITH DESCENDER
/* more_keys_for_cyrillic_ka */ "\u049B",
@@ -2124,14 +2216,14 @@ public final class KeyboardTextsTable {
/* Language km_KH: Khmer (Cambodia) */
private static final String[] LANGUAGE_km_KH = {
/* more_keys_for_a ~ */
- null, null, null, null, null, null, null, null, null, null,
- /* ~ more_keys_for_n */
+ null, null, null, null, null, null, null, null, null,
+ /* ~ single_quotes */
// Label for "switch to alphabetic" key.
// U+1780: "ក" KHMER LETTER KA
// U+1781: "ខ" KHMER LETTER KHA
// U+1782: "គ" KHMER LETTER KO
/* label_to_alpha_key */ "\u1780\u1781\u1782",
- /* more_keys_for_y ~ */
+ /* more_keys_for_s ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
@@ -2147,15 +2239,15 @@ public final class KeyboardTextsTable {
/* Language ky: Kirghiz */
private static final String[] LANGUAGE_ky = {
/* more_keys_for_a ~ */
- null, null, null, null, null, null, null, null, null, null,
- /* ~ more_keys_for_n */
+ null, null, null, null, null, null, null, null, null,
+ /* ~ single_quotes */
// Label for "switch to alphabetic" key.
// U+0410: "А" CYRILLIC CAPITAL LETTER A
// U+0411: "Б" CYRILLIC CAPITAL LETTER BE
// U+0412: "В" CYRILLIC CAPITAL LETTER VE
/* label_to_alpha_key */ "\u0410\u0411\u0412",
- /* more_keys_for_y ~ */
- null, null, null, null, null, null, null, null, null, null, null,
+ /* more_keys_for_s ~ */
+ null, null, null, null, null, null, null, null, null, null, null, null,
/* ~ more_keys_for_k */
// U+0451: "ё" CYRILLIC SMALL LETTER IO
/* more_keys_for_cyrillic_ie */ "\u0451",
@@ -2172,7 +2264,7 @@ public final class KeyboardTextsTable {
/* keylabel_for_east_slavic_row3_5 */ "\u0438",
// U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN
/* more_keys_for_cyrillic_soft_sign */ "\u044A",
- /* more_keys_for_punctuation ~ */
+ /* more_keys_for_nordic_row2_11 ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null,
@@ -2190,15 +2282,15 @@ public final class KeyboardTextsTable {
/* Language lo_LA: Lao (Laos) */
private static final String[] LANGUAGE_lo_LA = {
/* more_keys_for_a ~ */
- null, null, null, null, null, null, null, null, null, null,
- /* ~ more_keys_for_n */
+ null, null, null, null, null, null, null, null, null,
+ /* ~ single_quotes */
// Label for "switch to alphabetic" key.
// U+0E81: "ກ" LAO LETTER KO
// U+0E82: "ຂ" LAO LETTER KHO SUNG
// U+0E84: "ຄ" LAO LETTER KHO TAM
/* label_to_alpha_key */ "\u0E81\u0E82\u0E84",
- /* more_keys_for_y ~ */
- null, null, null, null, null, null, null, null,
+ /* more_keys_for_s ~ */
+ null, null, null, null, null, null, null, null, null,
/* ~ double_angle_quotes */
// U+20AD: "₭" KIP SIGN
/* keylabel_for_currency */ "\u20AD",
@@ -2252,22 +2344,22 @@ public final class KeyboardTextsTable {
// U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
// U+0131: "ı" LATIN SMALL LETTER DOTLESS I
/* more_keys_for_i */ "\u012F,\u012B,\u00EC,\u00ED,\u00EE,\u00EF,\u0131",
- /* double_quotes */ "!text/double_9qm_lqm",
- /* single_quotes */ "!text/single_9qm_lqm",
// U+010D: "č" LATIN SMALL LETTER C WITH CARON
// U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
// U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
/* more_keys_for_c */ "\u010D,\u00E7,\u0107",
- // U+0161: "š" LATIN SMALL LETTER S WITH CARON
- // U+00DF: "ß" LATIN SMALL LETTER SHARP S
- // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
- // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
- /* more_keys_for_s */ "\u0161,\u00DF,\u015B,\u015F",
+ /* double_quotes */ "!text/double_9qm_lqm",
// U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
/* more_keys_for_n */ "\u0146,\u00F1,\u0144",
+ /* single_quotes */ "!text/single_9qm_lqm",
/* label_to_alpha_key */ null,
+ // U+0161: "š" LATIN SMALL LETTER S WITH CARON
+ // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+ // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+ // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
+ /* more_keys_for_s */ "\u0161,\u00DF,\u015B,\u015F",
// U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
// U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
/* more_keys_for_y */ "\u00FD,\u00FF",
@@ -2346,22 +2438,22 @@ public final class KeyboardTextsTable {
// U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
// U+0131: "ı" LATIN SMALL LETTER DOTLESS I
/* more_keys_for_i */ "\u012B,\u012F,\u00EC,\u00ED,\u00EE,\u00EF,\u0131",
- /* double_quotes */ "!text/double_9qm_lqm",
- /* single_quotes */ "!text/single_9qm_lqm",
// U+010D: "č" LATIN SMALL LETTER C WITH CARON
// U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
// U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
/* more_keys_for_c */ "\u010D,\u00E7,\u0107",
- // U+0161: "š" LATIN SMALL LETTER S WITH CARON
- // U+00DF: "ß" LATIN SMALL LETTER SHARP S
- // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
- // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
- /* more_keys_for_s */ "\u0161,\u00DF,\u015B,\u015F",
+ /* double_quotes */ "!text/double_9qm_lqm",
// U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
/* more_keys_for_n */ "\u0146,\u00F1,\u0144",
+ /* single_quotes */ "!text/single_9qm_lqm",
/* label_to_alpha_key */ null,
+ // U+0161: "š" LATIN SMALL LETTER S WITH CARON
+ // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+ // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+ // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
+ /* more_keys_for_s */ "\u0161,\u00DF,\u015B,\u015F",
// U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
// U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
/* more_keys_for_y */ "\u00FD,\u00FF",
@@ -2396,20 +2488,18 @@ public final class KeyboardTextsTable {
/* Language mk: Macedonian */
private static final String[] LANGUAGE_mk = {
/* more_keys_for_a ~ */
- null, null, null, null, null,
- /* ~ more_keys_for_i */
+ null, null, null, null, null, null,
+ /* ~ more_keys_for_c */
/* double_quotes */ "!text/double_9qm_lqm",
+ /* more_keys_for_n */ null,
/* single_quotes */ "!text/single_9qm_lqm",
- /* more_keys_for_c ~ */
- null, null, null,
- /* ~ more_keys_for_n */
// Label for "switch to alphabetic" key.
// U+0410: "А" CYRILLIC CAPITAL LETTER A
// U+0411: "Б" CYRILLIC CAPITAL LETTER BE
// U+0412: "В" CYRILLIC CAPITAL LETTER VE
/* label_to_alpha_key */ "\u0410\u0411\u0412",
- /* more_keys_for_y ~ */
- null, null, null, null, null, null, null, null, null, null, null,
+ /* more_keys_for_s ~ */
+ null, null, null, null, null, null, null, null, null, null, null, null,
/* ~ more_keys_for_k */
// U+0450: "ѐ" CYRILLIC SMALL LETTER IE WITH GRAVE
/* more_keys_for_cyrillic_ie */ "\u0450",
@@ -2434,20 +2524,32 @@ public final class KeyboardTextsTable {
/* Language mn_MN: Mongolian (Mongolia) */
private static final String[] LANGUAGE_mn_MN = {
/* more_keys_for_a ~ */
- null, null, null, null, null, null, null, null, null, null,
- /* ~ more_keys_for_n */
+ null, null, null, null, null, null, null, null, null,
+ /* ~ single_quotes */
// Label for "switch to alphabetic" key.
// U+0410: "А" CYRILLIC CAPITAL LETTER A
// U+0411: "Б" CYRILLIC CAPITAL LETTER BE
// U+0412: "В" CYRILLIC CAPITAL LETTER VE
/* label_to_alpha_key */ "\u0410\u0411\u0412",
- /* more_keys_for_y ~ */
- null, null, null, null, null, null, null, null,
+ /* more_keys_for_s ~ */
+ null, null, null, null, null, null, null, null, null,
/* ~ double_angle_quotes */
// U+20AE: "₮" TUGRIK SIGN
/* keylabel_for_currency */ "\u20AE",
};
+ /* Language my_MM: Burmese (Myanmar) */
+ private static final String[] LANGUAGE_my_MM = {
+ /* more_keys_for_a ~ */
+ null, null, null, null, null, null, null, null, null,
+ /* ~ single_quotes */
+ // Label for "switch to alphabetic" key.
+ // U+1000: "က" MYANMAR LETTER KA
+ // U+1001: "ခ" MYANMAR LETTER KHA
+ // U+1002: "ဂ" MYANMAR LETTER GA
+ /* label_to_alpha_key */ "\u1000\u1001\u1002",
+ };
+
/* Language nb: Norwegian Bokmål */
private static final String[] LANGUAGE_nb = {
// U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
@@ -2480,11 +2582,12 @@ public final class KeyboardTextsTable {
// U+0113: "ē" LATIN SMALL LETTER E WITH MACRON
/* more_keys_for_e */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0119,\u0117,\u0113",
/* more_keys_for_i */ null,
+ /* more_keys_for_c */ null,
/* double_quotes */ "!text/double_9qm_rqm",
+ /* more_keys_for_n */ null,
/* single_quotes */ "!text/single_9qm_rqm",
- /* more_keys_for_c ~ */
- null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- null,
+ /* label_to_alpha_key ~ */
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null,
/* ~ more_keys_for_cyrillic_ie */
// U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
/* keylabel_for_nordic_row1_11 */ "\u00E5",
@@ -2495,8 +2598,8 @@ public final class KeyboardTextsTable {
// U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
/* more_keys_for_nordic_row2_10 */ "\u00F6",
/* keylabel_for_east_slavic_row1_9 ~ */
- null, null, null, null, null, null,
- /* ~ more_keys_for_punctuation */
+ null, null, null, null, null,
+ /* ~ more_keys_for_cyrillic_soft_sign */
// U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
/* more_keys_for_nordic_row2_11 */ "\u00E4",
};
@@ -2504,20 +2607,20 @@ public final class KeyboardTextsTable {
/* Language ne_NP: Nepali (Nepal) */
private static final String[] LANGUAGE_ne_NP = {
/* more_keys_for_a ~ */
- null, null, null, null, null, null, null, null, null, null,
- /* ~ more_keys_for_n */
+ null, null, null, null, null, null, null, null, null,
+ /* ~ single_quotes */
// Label for "switch to alphabetic" key.
// U+0915: "क" DEVANAGARI LETTER KA
// U+0916: "ख" DEVANAGARI LETTER KHA
// U+0917: "ग" DEVANAGARI LETTER GA
/* label_to_alpha_key */ "\u0915\u0916\u0917",
- /* more_keys_for_y ~ */
- null, null, null, null, null, null, null, null,
+ /* more_keys_for_s ~ */
+ null, null, null, null, null, null, null, null, null,
/* ~ double_angle_quotes */
// U+0930/U+0941/U+002E "रु." NEPALESE RUPEE SIGN
/* keylabel_for_currency */ "\u0930\u0941.",
/* more_keys_for_r ~ */
- null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null, null, null,
/* ~ more_keys_for_nordic_row2_11 */
// U+0967: "१" DEVANAGARI DIGIT ONE
/* keylabel_for_symbols_1 */ "\u0967",
@@ -2598,14 +2701,14 @@ public final class KeyboardTextsTable {
// U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
// U+0133: "ij" LATIN SMALL LIGATURE IJ
/* more_keys_for_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B,\u0133",
- /* double_quotes */ "!text/double_9qm_rqm",
- /* single_quotes */ "!text/single_9qm_rqm",
/* more_keys_for_c */ null,
- /* more_keys_for_s */ null,
+ /* double_quotes */ "!text/double_9qm_rqm",
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
/* more_keys_for_n */ "\u00F1,\u0144",
+ /* single_quotes */ "!text/single_9qm_rqm",
/* label_to_alpha_key */ null,
+ /* more_keys_for_s */ null,
// U+0133: "ij" LATIN SMALL LIGATURE IJ
/* more_keys_for_y */ "\u0133",
};
@@ -2641,22 +2744,22 @@ public final class KeyboardTextsTable {
// U+0113: "ē" LATIN SMALL LETTER E WITH MACRON
/* more_keys_for_e */ "\u0119,\u00E8,\u00E9,\u00EA,\u00EB,\u0117,\u0113",
/* more_keys_for_i */ null,
- /* double_quotes */ "!text/double_9qm_rqm",
- /* single_quotes */ "!text/single_9qm_rqm",
// U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
// U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
// U+010D: "č" LATIN SMALL LETTER C WITH CARON
/* more_keys_for_c */ "\u0107,\u00E7,\u010D",
+ /* double_quotes */ "!text/double_9qm_rqm",
+ // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+ // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+ /* more_keys_for_n */ "\u0144,\u00F1",
+ /* single_quotes */ "!text/single_9qm_rqm",
+ /* label_to_alpha_key */ null,
// U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
// U+00DF: "ß" LATIN SMALL LETTER SHARP S
// U+0161: "š" LATIN SMALL LETTER S WITH CARON
/* more_keys_for_s */ "\u015B,\u00DF,\u0161",
- // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
- // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
- /* more_keys_for_n */ "\u0144,\u00F1",
- /* label_to_alpha_key ~ */
- null, null, null,
- /* ~ more_keys_for_d */
+ /* more_keys_for_y */ null,
+ /* more_keys_for_d */ null,
// U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
// U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
// U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
@@ -2708,8 +2811,6 @@ public final class KeyboardTextsTable {
// U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
// U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
/* more_keys_for_i */ "\u00ED,\u00EE,\u00EC,\u00EF,\u012F,\u012B",
- /* double_quotes */ null,
- /* single_quotes */ 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
@@ -2751,16 +2852,18 @@ public final class KeyboardTextsTable {
// U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
// U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
/* more_keys_for_i */ "\u00EE,\u00EF,\u00EC,\u00ED,\u012F,\u012B",
+ /* more_keys_for_c */ null,
/* double_quotes */ "!text/double_9qm_rqm",
+ /* more_keys_for_n */ null,
/* single_quotes */ "!text/single_9qm_rqm",
- /* more_keys_for_c */ null,
+ /* label_to_alpha_key */ null,
// U+0219: "ș" LATIN SMALL LETTER S WITH COMMA BELOW
// U+00DF: "ß" LATIN SMALL LETTER SHARP S
// U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
// U+0161: "š" LATIN SMALL LETTER S WITH CARON
/* more_keys_for_s */ "\u0219,\u00DF,\u015B,\u0161",
- /* more_keys_for_n ~ */
- null, null, null, null, null,
+ /* more_keys_for_y ~ */
+ null, null, null,
/* ~ more_keys_for_z */
// U+021B: "ț" LATIN SMALL LETTER T WITH COMMA BELOW
/* more_keys_for_t */ "\u021B",
@@ -2769,20 +2872,18 @@ public final class KeyboardTextsTable {
/* Language ru: Russian */
private static final String[] LANGUAGE_ru = {
/* more_keys_for_a ~ */
- null, null, null, null, null,
- /* ~ more_keys_for_i */
+ null, null, null, null, null, null,
+ /* ~ more_keys_for_c */
/* double_quotes */ "!text/double_9qm_lqm",
+ /* more_keys_for_n */ null,
/* single_quotes */ "!text/single_9qm_lqm",
- /* more_keys_for_c ~ */
- null, null, null,
- /* ~ more_keys_for_n */
// Label for "switch to alphabetic" key.
// U+0410: "А" CYRILLIC CAPITAL LETTER A
// U+0411: "Б" CYRILLIC CAPITAL LETTER BE
// U+0412: "В" CYRILLIC CAPITAL LETTER VE
/* label_to_alpha_key */ "\u0410\u0411\u0412",
- /* more_keys_for_y ~ */
- null, null, null, null, null, null, null, null, null, null, null,
+ /* more_keys_for_s ~ */
+ null, null, null, null, null, null, null, null, null, null, null, null,
/* ~ more_keys_for_k */
// U+0451: "ё" CYRILLIC SMALL LETTER IO
/* more_keys_for_cyrillic_ie */ "\u0451",
@@ -2848,23 +2949,23 @@ public final class KeyboardTextsTable {
// U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
// U+0131: "ı" LATIN SMALL LETTER DOTLESS I
/* more_keys_for_i */ "\u00ED,\u012B,\u012F,\u00EC,\u00EE,\u00EF,\u0131",
- /* double_quotes */ "!text/double_9qm_lqm",
- /* single_quotes */ "!text/single_9qm_lqm",
// U+010D: "č" LATIN SMALL LETTER C WITH CARON
// U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
// U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
/* more_keys_for_c */ "\u010D,\u00E7,\u0107",
- // U+0161: "š" LATIN SMALL LETTER S WITH CARON
- // U+00DF: "ß" LATIN SMALL LETTER SHARP S
- // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
- // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
- /* more_keys_for_s */ "\u0161,\u00DF,\u015B,\u015F",
+ /* double_quotes */ "!text/double_9qm_lqm",
// U+0148: "ň" LATIN SMALL LETTER N WITH CARON
// U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
/* more_keys_for_n */ "\u0148,\u0146,\u00F1,\u0144",
+ /* single_quotes */ "!text/single_9qm_lqm",
/* label_to_alpha_key */ null,
+ // U+0161: "š" LATIN SMALL LETTER S WITH CARON
+ // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+ // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+ // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
+ /* more_keys_for_s */ "\u0161,\u00DF,\u015B,\u015F",
// U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
// U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
/* more_keys_for_y */ "\u00FD,\u00FF",
@@ -2901,16 +3002,16 @@ public final class KeyboardTextsTable {
/* more_keys_for_a ~ */
null, null, null, null, null,
/* ~ more_keys_for_i */
- /* double_quotes */ "!text/double_9qm_lqm",
- /* single_quotes */ "!text/single_9qm_lqm",
// U+010D: "č" LATIN SMALL LETTER C WITH CARON
// U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
/* more_keys_for_c */ "\u010D,\u0107",
+ /* double_quotes */ "!text/double_9qm_lqm",
+ /* more_keys_for_n */ null,
+ /* single_quotes */ "!text/single_9qm_lqm",
+ /* label_to_alpha_key */ null,
// U+0161: "š" LATIN SMALL LETTER S WITH CARON
/* more_keys_for_s */ "\u0161",
- /* more_keys_for_n ~ */
- null, null, null,
- /* ~ more_keys_for_y */
+ /* more_keys_for_y */ null,
// U+0111: "đ" LATIN SMALL LETTER D WITH STROKE
/* more_keys_for_d */ "\u0111",
// U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
@@ -2925,21 +3026,19 @@ public final class KeyboardTextsTable {
/* Language sr: Serbian */
private static final String[] LANGUAGE_sr = {
/* more_keys_for_a ~ */
- null, null, null, null, null,
- /* ~ more_keys_for_i */
+ null, null, null, null, null, null,
+ /* ~ more_keys_for_c */
/* double_quotes */ "!text/double_9qm_lqm",
+ /* more_keys_for_n */ null,
/* single_quotes */ "!text/single_9qm_lqm",
- /* more_keys_for_c ~ */
- null, null, null,
- /* ~ more_keys_for_n */
// END: More keys definitions for Serbian (Cyrillic)
// Label for "switch to alphabetic" key.
// U+0410: "А" CYRILLIC CAPITAL LETTER A
// U+0411: "Б" CYRILLIC CAPITAL LETTER BE
// U+0412: "В" CYRILLIC CAPITAL LETTER VE
/* label_to_alpha_key */ "\u0410\u0411\u0412",
- /* more_keys_for_y ~ */
- null, null, null, null, null, null,
+ /* more_keys_for_s ~ */
+ null, null, null, null, null, null, null,
/* ~ more_keys_for_g */
/* single_angle_quotes */ "!text/single_raqm_laqm",
/* double_angle_quotes */ "!text/double_raqm_laqm",
@@ -3015,22 +3114,22 @@ public final class KeyboardTextsTable {
// U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
// U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
/* more_keys_for_i */ "\u00ED,\u00EC,\u00EE,\u00EF",
- /* double_quotes */ null,
- /* single_quotes */ 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
/* more_keys_for_c */ "\u00E7,\u0107,\u010D",
- // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
- // U+0161: "š" LATIN SMALL LETTER S WITH CARON
- // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
- // U+00DF: "ß" LATIN SMALL LETTER SHARP S
- /* more_keys_for_s */ "\u015B,\u0161,\u015F,\u00DF",
+ /* double_quotes */ null,
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0148: "ň" LATIN SMALL LETTER N WITH CARON
/* more_keys_for_n */ "\u0144,\u00F1,\u0148",
+ /* single_quotes */ null,
/* label_to_alpha_key */ null,
+ // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+ // U+0161: "š" LATIN SMALL LETTER S WITH CARON
+ // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
+ // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+ /* more_keys_for_s */ "\u015B,\u0161,\u015F,\u00DF",
// U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
// U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
/* more_keys_for_y */ "\u00FD,\u00FF",
@@ -3064,8 +3163,8 @@ public final class KeyboardTextsTable {
// U+0153: "œ" LATIN SMALL LIGATURE OE
/* more_keys_for_nordic_row2_10 */ "\u00F8,\u0153",
/* keylabel_for_east_slavic_row1_9 ~ */
- null, null, null, null, null, null,
- /* ~ more_keys_for_punctuation */
+ null, null, null, null, null,
+ /* ~ more_keys_for_cyrillic_soft_sign */
// U+00E6: "æ" LATIN SMALL LETTER AE
/* more_keys_for_nordic_row2_11 */ "\u00E6",
};
@@ -3109,16 +3208,17 @@ public final class KeyboardTextsTable {
// U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
// U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
/* more_keys_for_i */ "\u00EE,\u00EF,\u00ED,\u012B,\u00EC",
- /* double_quotes */ null,
- /* single_quotes */ null,
// U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
/* more_keys_for_c */ "\u00E7",
- // U+00DF: "ß" LATIN SMALL LETTER SHARP S
- /* more_keys_for_s */ "\u00DF",
+ /* double_quotes */ null,
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
/* more_keys_for_n */ "\u00F1",
- /* label_to_alpha_key ~ */
- null, null, null, null, null, null,
+ /* single_quotes */ null,
+ /* label_to_alpha_key */ null,
+ // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+ /* more_keys_for_s */ "\u00DF",
+ /* more_keys_for_y ~ */
+ null, null, null, null, null,
/* ~ more_keys_for_l */
/* more_keys_for_g */ "g\'",
};
@@ -3126,15 +3226,15 @@ public final class KeyboardTextsTable {
/* Language th: Thai */
private static final String[] LANGUAGE_th = {
/* more_keys_for_a ~ */
- null, null, null, null, null, null, null, null, null, null,
- /* ~ more_keys_for_n */
+ null, null, null, null, null, null, null, null, null,
+ /* ~ single_quotes */
// Label for "switch to alphabetic" key.
// U+0E01: "ก" THAI CHARACTER KO KAI
// U+0E02: "ข" THAI CHARACTER KHO KHAI
// U+0E04: "ค" THAI CHARACTER KHO KHWAI
/* label_to_alpha_key */ "\u0E01\u0E02\u0E04",
- /* more_keys_for_y ~ */
- null, null, null, null, null, null, null, null,
+ /* more_keys_for_s ~ */
+ null, null, null, null, null, null, null, null, null,
/* ~ double_angle_quotes */
// U+0E3F: "฿" THAI CURRENCY SYMBOL BAHT
/* keylabel_for_currency */ "\u0E3F",
@@ -3184,13 +3284,11 @@ public final class KeyboardTextsTable {
// U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
// U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
/* more_keys_for_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B",
- /* double_quotes */ null,
- /* single_quotes */ 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
/* more_keys_for_c */ "\u00E7,\u0107,\u010D",
- /* more_keys_for_s */ null,
+ /* double_quotes */ null,
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
/* more_keys_for_n */ "\u00F1,\u0144",
@@ -3224,19 +3322,20 @@ public final class KeyboardTextsTable {
// U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
// U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
/* more_keys_for_i */ "\u0131,\u00EE,\u00EF,\u00EC,\u00ED,\u012F,\u012B",
- /* double_quotes */ null,
- /* single_quotes */ 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
/* more_keys_for_c */ "\u00E7,\u0107,\u010D",
+ /* double_quotes ~ */
+ null, null, null, null,
+ /* ~ label_to_alpha_key */
// U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
// U+00DF: "ß" LATIN SMALL LETTER SHARP S
// U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
// U+0161: "š" LATIN SMALL LETTER S WITH CARON
/* more_keys_for_s */ "\u015F,\u00DF,\u015B,\u0161",
- /* more_keys_for_n ~ */
- null, null, null, null, null, null, null,
+ /* more_keys_for_y ~ */
+ null, null, null, null, null,
/* ~ more_keys_for_l */
// U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE
/* more_keys_for_g */ "\u011F",
@@ -3245,20 +3344,18 @@ public final class KeyboardTextsTable {
/* Language uk: Ukrainian */
private static final String[] LANGUAGE_uk = {
/* more_keys_for_a ~ */
- null, null, null, null, null,
- /* ~ more_keys_for_i */
+ null, null, null, null, null, null,
+ /* ~ more_keys_for_c */
/* double_quotes */ "!text/double_9qm_lqm",
+ /* more_keys_for_n */ null,
/* single_quotes */ "!text/single_9qm_lqm",
- /* more_keys_for_c ~ */
- null, null, null,
- /* ~ more_keys_for_n */
// Label for "switch to alphabetic" key.
// U+0410: "А" CYRILLIC CAPITAL LETTER A
// U+0411: "Б" CYRILLIC CAPITAL LETTER BE
// U+0412: "В" CYRILLIC CAPITAL LETTER VE
/* label_to_alpha_key */ "\u0410\u0411\u0412",
- /* more_keys_for_y ~ */
- null, null, null, null, null, null, null, null,
+ /* more_keys_for_s ~ */
+ null, null, null, null, null, null, null, null, null,
/* ~ double_angle_quotes */
// U+20B4: "₴" HRYVNIA SIGN
/* keylabel_for_currency */ "\u20B4",
@@ -3275,7 +3372,7 @@ public final class KeyboardTextsTable {
/* keylabel_for_east_slavic_row3_5 */ "\u0438",
// U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN
/* more_keys_for_cyrillic_soft_sign */ "\u044A",
- /* more_keys_for_punctuation ~ */
+ /* more_keys_for_nordic_row2_11 ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
@@ -3355,9 +3452,9 @@ public final class KeyboardTextsTable {
// U+0129: "ĩ" LATIN SMALL LETTER I WITH TILDE
// U+1ECB: "ị" LATIN SMALL LETTER I WITH DOT BELOW
/* more_keys_for_i */ "\u00EC,\u00ED,\u1EC9,\u0129,\u1ECB",
- /* double_quotes ~ */
+ /* more_keys_for_c ~ */
null, null, null, null, null, null,
- /* ~ label_to_alpha_key */
+ /* ~ more_keys_for_s */
// U+1EF3: "ỳ" LATIN SMALL LETTER Y WITH GRAVE
// U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
// U+1EF7: "ỷ" LATIN SMALL LETTER Y WITH HOOK ABOVE
@@ -3412,14 +3509,15 @@ public final class KeyboardTextsTable {
// U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
// U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
/* more_keys_for_i */ "\u00EE,\u00EF,\u00ED,\u012B,\u00EC",
- /* double_quotes */ null,
- /* single_quotes */ null,
// U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
/* more_keys_for_c */ "\u00E7",
- // U+00DF: "ß" LATIN SMALL LETTER SHARP S
- /* more_keys_for_s */ "\u00DF",
+ /* double_quotes */ null,
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
/* more_keys_for_n */ "\u00F1",
+ /* single_quotes */ null,
+ /* label_to_alpha_key */ null,
+ // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+ /* more_keys_for_s */ "\u00DF",
};
/* Language zz: Alphabet */
@@ -3480,21 +3578,13 @@ public final class KeyboardTextsTable {
// U+0131: "ı" LATIN SMALL LETTER DOTLESS I
// U+0133: "ij" LATIN SMALL LIGATURE IJ
/* more_keys_for_i */ "\u00EC,\u00ED,\u00EE,\u00EF,\u0129,\u012B,\u012D,\u012F,\u0131,\u0133",
- /* double_quotes */ null,
- /* single_quotes */ null,
// U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
// U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
// U+0109: "ĉ" LATIN SMALL LETTER C WITH CIRCUMFLEX
// U+010B: "ċ" LATIN SMALL LETTER C WITH DOT ABOVE
// U+010D: "č" LATIN SMALL LETTER C WITH CARON
/* more_keys_for_c */ "\u00E7,\u0107,\u0109,\u010B,\u010D",
- // U+00DF: "ß" LATIN SMALL LETTER SHARP S
- // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
- // U+015D: "ŝ" LATIN SMALL LETTER S WITH CIRCUMFLEX
- // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
- // U+0161: "š" LATIN SMALL LETTER S WITH CARON
- // U+017F: "ſ" LATIN SMALL LETTER LONG S
- /* more_keys_for_s */ "\u00DF,\u015B,\u015D,\u015F,\u0161,\u017F",
+ /* double_quotes */ null,
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
// U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
@@ -3502,7 +3592,15 @@ public final class KeyboardTextsTable {
// U+0149: "ʼn" LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
// U+014B: "ŋ" LATIN SMALL LETTER ENG
/* more_keys_for_n */ "\u00F1,\u0144,\u0146,\u0148,\u0149,\u014B",
+ /* single_quotes */ null,
/* label_to_alpha_key */ null,
+ // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+ // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+ // U+015D: "ŝ" LATIN SMALL LETTER S WITH CIRCUMFLEX
+ // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
+ // U+0161: "š" LATIN SMALL LETTER S WITH CARON
+ // U+017F: "ſ" LATIN SMALL LETTER LONG S
+ /* more_keys_for_s */ "\u00DF,\u015B,\u015D,\u015F,\u0161,\u017F",
// U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
// U+0177: "ŷ" LATIN SMALL LETTER Y WITH CIRCUMFLEX
// U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
@@ -3555,7 +3653,7 @@ public final class KeyboardTextsTable {
/* more_keys_for_cyrillic_u ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null,
+ null, null, null,
/* ~ more_keys_for_v */
// U+0135: "ĵ" LATIN SMALL LETTER J WITH CIRCUMFLEX
/* more_keys_for_j */ "\u0135",
@@ -3565,60 +3663,63 @@ public final class KeyboardTextsTable {
// Currently we are dropping the region from the key.
private static final Object[] LANGUAGES_AND_TEXTS = {
// "locale", TEXT_ARRAY, /* numberOfNonNullText/lengthOf_TEXT_ARRAY localeName */
- "DEFAULT", LANGUAGE_DEFAULT, /* 170/170 default */
+ "DEFAULT", LANGUAGE_DEFAULT, /* 169/169 default */
"af", LANGUAGE_af, /* 7/ 12 Afrikaans */
- "ar", LANGUAGE_ar, /* 58/109 Arabic */
+ "ar", LANGUAGE_ar, /* 56/108 Arabic */
"az", LANGUAGE_az_AZ, /* 8/ 17 Azerbaijani (Azerbaijan) */
"be", LANGUAGE_be_BY, /* 9/ 32 Belarusian (Belarus) */
- "bg", LANGUAGE_bg, /* 2/ 11 Bulgarian */
- "ca", LANGUAGE_ca, /* 11/116 Catalan */
+ "bg", LANGUAGE_bg, /* 2/ 10 Bulgarian */
+ "ca", LANGUAGE_ca, /* 11/115 Catalan */
"cs", LANGUAGE_cs, /* 17/ 21 Czech */
- "da", LANGUAGE_da, /* 19/ 34 Danish */
+ "da", LANGUAGE_da, /* 19/ 33 Danish */
"de", LANGUAGE_de, /* 16/ 92 German */
- "el", LANGUAGE_el, /* 1/ 11 Greek */
- "en", LANGUAGE_en, /* 8/ 10 English */
- "eo", LANGUAGE_eo, /* 26/128 Esperanto */
- "es", LANGUAGE_es, /* 8/ 33 Spanish */
+ "el", LANGUAGE_el, /* 1/ 10 Greek */
+ "en", LANGUAGE_en, /* 8/ 11 English */
+ "eo", LANGUAGE_eo, /* 26/127 Esperanto */
+ "es", LANGUAGE_es, /* 8/ 56 Spanish */
"et", LANGUAGE_et_EE, /* 22/ 27 Estonian (Estonia) */
- "fa", LANGUAGE_fa, /* 61/119 Persian */
- "fi", LANGUAGE_fi, /* 10/ 34 Finnish */
+ "eu", LANGUAGE_eu_ES, /* 7/ 8 Basque (Spain) */
+ "fa", LANGUAGE_fa, /* 59/118 Persian */
+ "fi", LANGUAGE_fi, /* 10/ 33 Finnish */
"fr", LANGUAGE_fr, /* 13/ 92 French */
- "hi", LANGUAGE_hi, /* 24/ 56 Hindi */
+ "gl", LANGUAGE_gl_ES, /* 7/ 8 Gallegan (Spain) */
+ "hi", LANGUAGE_hi, /* 24/ 55 Hindi */
"hr", LANGUAGE_hr, /* 9/ 19 Croatian */
"hu", LANGUAGE_hu, /* 9/ 19 Hungarian */
- "hy", LANGUAGE_hy_AM, /* 8/122 Armenian (Armenia) */
+ "hy", LANGUAGE_hy_AM, /* 8/121 Armenian (Armenia) */
"is", LANGUAGE_is, /* 10/ 15 Icelandic */
"it", LANGUAGE_it, /* 5/ 5 Italian */
- "iw", LANGUAGE_iw, /* 20/117 Hebrew */
- "ka", LANGUAGE_ka_GE, /* 3/ 11 Georgian (Georgia) */
- "kk", LANGUAGE_kk, /* 15/114 Kazakh */
- "km", LANGUAGE_km_KH, /* 2/115 Khmer (Cambodia) */
+ "iw", LANGUAGE_iw, /* 20/116 Hebrew */
+ "ka", LANGUAGE_ka_GE, /* 3/ 10 Georgian (Georgia) */
+ "kk", LANGUAGE_kk, /* 15/113 Kazakh */
+ "km", LANGUAGE_km_KH, /* 2/114 Khmer (Cambodia) */
"ky", LANGUAGE_ky, /* 10/ 81 Kirghiz */
"lo", LANGUAGE_lo_LA, /* 2/ 20 Lao (Laos) */
"lt", LANGUAGE_lt, /* 18/ 22 Lithuanian */
"lv", LANGUAGE_lv, /* 18/ 22 Latvian */
"mk", LANGUAGE_mk, /* 9/ 86 Macedonian */
"mn", LANGUAGE_mn_MN, /* 2/ 20 Mongolian (Mongolia) */
- "nb", LANGUAGE_nb, /* 11/ 34 Norwegian Bokmål */
- "ne", LANGUAGE_ne_NP, /* 24/ 56 Nepali (Nepal) */
+ "my", LANGUAGE_my_MM, /* 1/ 10 Burmese (Myanmar) */
+ "nb", LANGUAGE_nb, /* 11/ 33 Norwegian Bokmål */
+ "ne", LANGUAGE_ne_NP, /* 24/ 55 Nepali (Nepal) */
"nl", LANGUAGE_nl, /* 9/ 12 Dutch */
"pl", LANGUAGE_pl, /* 10/ 16 Polish */
- "pt", LANGUAGE_pt, /* 6/ 8 Portuguese */
+ "pt", LANGUAGE_pt, /* 6/ 6 Portuguese */
"rm", LANGUAGE_rm, /* 1/ 2 Raeto-Romance */
"ro", LANGUAGE_ro, /* 6/ 15 Romanian */
"ru", LANGUAGE_ru, /* 9/ 32 Russian */
"sk", LANGUAGE_sk, /* 20/ 22 Slovak */
"sl", LANGUAGE_sl, /* 8/ 19 Slovenian */
"sr", LANGUAGE_sr, /* 11/ 86 Serbian */
- "sv", LANGUAGE_sv, /* 21/ 34 Swedish */
+ "sv", LANGUAGE_sv, /* 21/ 33 Swedish */
"sw", LANGUAGE_sw, /* 9/ 17 Swahili */
"th", LANGUAGE_th, /* 2/ 20 Thai */
- "tl", LANGUAGE_tl, /* 7/ 10 Tagalog */
+ "tl", LANGUAGE_tl, /* 7/ 8 Tagalog */
"tr", LANGUAGE_tr, /* 7/ 17 Turkish */
"uk", LANGUAGE_uk, /* 11/ 80 Ukrainian */
"vi", LANGUAGE_vi, /* 8/ 20 Vietnamese */
- "zu", LANGUAGE_zu, /* 8/ 10 Zulu */
- "zz", LANGUAGE_zz, /* 19/111 Alphabet */
+ "zu", LANGUAGE_zu, /* 8/ 11 Zulu */
+ "zz", LANGUAGE_zz, /* 19/110 Alphabet */
};
static {
diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionary.java b/java/src/com/android/inputmethod/latin/BinaryDictionary.java
index 544fd0319..0aa34e82e 100644
--- a/java/src/com/android/inputmethod/latin/BinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/BinaryDictionary.java
@@ -161,9 +161,9 @@ public final class BinaryDictionary extends Dictionary {
private static native int getNextWordNative(long dict, int token, int[] outCodePoints);
private static native void getSuggestionsNative(long dict, long proximityInfo,
long traverseSession, int[] xCoordinates, int[] yCoordinates, int[] times,
- int[] pointerIds, int[] inputCodePoints, int inputSize, int commitPoint,
- int[] suggestOptions, int[] prevWordCodePointArray, int[] outputSuggestionCount,
- int[] outputCodePoints, int[] outputScores, int[] outputIndices, int[] outputTypes,
+ int[] pointerIds, int[] inputCodePoints, int inputSize, int[] suggestOptions,
+ int[] prevWordCodePointArray, int[] outputSuggestionCount, int[] outputCodePoints,
+ int[] outputScores, int[] outputIndices, int[] outputTypes,
int[] outputAutoCommitFirstWordConfidence);
private static native void addUnigramWordNative(long dict, int[] word, int probability,
int[] shortcutTarget, int shortcutProbability, boolean isNotAWord,
@@ -262,7 +262,7 @@ public final class BinaryDictionary extends Dictionary {
getSuggestionsNative(mNativeDict, proximityInfo.getNativeProximityInfo(),
getTraverseSession(sessionId).getSession(), ips.getXCoordinates(),
ips.getYCoordinates(), ips.getTimes(), ips.getPointerIds(), mInputCodePoints,
- inputSize, 0 /* commitPoint */, mNativeSuggestOptions.getOptions(),
+ inputSize, mNativeSuggestOptions.getOptions(),
prevWordCodePointArray, mOutputSuggestionCount, mOutputCodePoints, mOutputScores,
mSpaceIndices, mOutputTypes, mOutputAutoCommitFirstWordConfidence);
final int count = mOutputSuggestionCount[0];
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 4a18c2b3c..38e386493 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -169,8 +169,6 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
private int mDelayUpdateSuggestions;
private int mDelayUpdateShiftState;
- private long mDoubleSpacePeriodTimeout;
- private long mDoubleSpacePeriodTimerStart;
public UIHandler(final LatinIME ownerInstance) {
super(ownerInstance);
@@ -184,8 +182,6 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
final Resources res = latinIme.getResources();
mDelayUpdateSuggestions = res.getInteger(R.integer.config_delay_update_suggestions);
mDelayUpdateShiftState = res.getInteger(R.integer.config_delay_update_shift_state);
- mDoubleSpacePeriodTimeout =
- res.getInteger(R.integer.config_double_space_period_timeout);
}
@Override
@@ -286,10 +282,6 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
sendMessageDelayed(obtainMessage(MSG_UPDATE_SHIFT_STATE), mDelayUpdateShiftState);
}
- public void cancelUpdateShiftState() {
- removeMessages(MSG_UPDATE_SHIFT_STATE);
- }
-
@UsedForTesting
public void removeAllMessages() {
for (int i = 0; i <= MSG_LAST; ++i) {
@@ -317,19 +309,6 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
obtainMessage(MSG_ON_END_BATCH_INPUT, suggestedWords).sendToTarget();
}
- public void startDoubleSpacePeriodTimer() {
- mDoubleSpacePeriodTimerStart = SystemClock.uptimeMillis();
- }
-
- public void cancelDoubleSpacePeriodTimer() {
- mDoubleSpacePeriodTimerStart = 0;
- }
-
- public boolean isAcceptingDoubleSpacePeriod() {
- return SystemClock.uptimeMillis() - mDoubleSpacePeriodTimerStart
- < mDoubleSpacePeriodTimeout;
- }
-
// Working variables for the following methods.
private boolean mIsOrientationChanging;
private boolean mPendingSuccessiveImsCallback;
@@ -885,7 +864,6 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
setNeutralSuggestionStrip();
mHandler.cancelUpdateSuggestionStrip();
- mHandler.cancelDoubleSpacePeriodTimer();
mainKeyboardView.setMainDictionaryAvailability(null != suggest
? suggest.mDictionaryFacilitator.hasMainDictionary() : false);
@@ -1276,15 +1254,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
final InputTransaction completeInputTransaction =
mInputLogic.onCodeInput(mSettings.getCurrent(), event,
mKeyboardSwitcher.getKeyboardShiftMode(), mHandler);
- switch (completeInputTransaction.getRequiredShiftUpdate()) {
- case InputTransaction.SHIFT_UPDATE_LATER:
- mHandler.postUpdateShiftState();
- break;
- case InputTransaction.SHIFT_UPDATE_NOW:
- mKeyboardSwitcher.updateShiftState();
- break;
- default: // SHIFT_NO_UPDATE
- }
+ updateShiftModeAfterInputTransaction(completeInputTransaction.getRequiredShiftUpdate());
mKeyboardSwitcher.onCodeInput(codePoint);
}
@@ -1307,7 +1277,9 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
// Called from PointerTracker through the KeyboardActionListener interface
@Override
public void onTextInput(final String rawText) {
- mInputLogic.onTextInput(mSettings.getCurrent(), rawText, mHandler);
+ // TODO: have the keyboard pass the correct key code when we need it.
+ final Event event = Event.createSoftwareTextEvent(rawText, Event.NOT_A_KEY_CODE);
+ mInputLogic.onTextInput(mSettings.getCurrent(), event, mHandler);
mKeyboardSwitcher.updateShiftState();
mKeyboardSwitcher.onCodeInput(Constants.CODE_OUTPUT_TEXT);
}
@@ -1500,8 +1472,10 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
// interface
@Override
public void pickSuggestionManually(final int index, final SuggestedWordInfo suggestionInfo) {
- mInputLogic.onPickSuggestionManually(mSettings.getCurrent(), index, suggestionInfo,
- mHandler, mKeyboardSwitcher);
+ final InputTransaction completeInputTransaction = mInputLogic.onPickSuggestionManually(
+ mSettings.getCurrent(), index, suggestionInfo,
+ mKeyboardSwitcher.getKeyboardShiftMode(), mHandler);
+ updateShiftModeAfterInputTransaction(completeInputTransaction.getRequiredShiftUpdate());
}
@Override
@@ -1539,6 +1513,18 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
}
}
+ private void updateShiftModeAfterInputTransaction(final int requiredShiftUpdate) {
+ switch (requiredShiftUpdate) {
+ case InputTransaction.SHIFT_UPDATE_LATER:
+ mHandler.postUpdateShiftState();
+ break;
+ case InputTransaction.SHIFT_UPDATE_NOW:
+ mKeyboardSwitcher.updateShiftState();
+ break;
+ default: // SHIFT_NO_UPDATE
+ }
+ }
+
private void hapticAndAudioFeedback(final int code, final int repeatCount) {
final MainKeyboardView keyboardView = mKeyboardSwitcher.getMainKeyboardView();
if (keyboardView != null && keyboardView.isInDraggingFinger()) {
diff --git a/java/src/com/android/inputmethod/latin/WordComposer.java b/java/src/com/android/inputmethod/latin/WordComposer.java
index 2ac11aa29..29382fea4 100644
--- a/java/src/com/android/inputmethod/latin/WordComposer.java
+++ b/java/src/com/android/inputmethod/latin/WordComposer.java
@@ -16,6 +16,7 @@
package com.android.inputmethod.latin;
+import com.android.inputmethod.event.CombinerChain;
import com.android.inputmethod.event.Event;
import com.android.inputmethod.latin.utils.CollectionUtils;
import com.android.inputmethod.latin.utils.CoordinateUtils;
@@ -40,6 +41,8 @@ public final class WordComposer {
public static final int CAPS_MODE_AUTO_SHIFTED = 0x5;
public static final int CAPS_MODE_AUTO_SHIFT_LOCKED = 0x7;
+ private CombinerChain mCombinerChain;
+
// An array of code points representing the characters typed so far.
// The array is limited to MAX_WORD_LENGTH code points, but mTypedWord extends past that
// and mCodePointSize can go past that. If mCodePointSize is greater than MAX_WORD_LENGTH,
@@ -87,6 +90,7 @@ public final class WordComposer {
private boolean mIsFirstCharCapitalized;
public WordComposer() {
+ mCombinerChain = new CombinerChain();
mPrimaryKeyCodes = new int[MAX_WORD_LENGTH];
mEvents = CollectionUtils.newArrayList();
mTypedWord = new StringBuilder(MAX_WORD_LENGTH);
@@ -101,6 +105,7 @@ public final class WordComposer {
}
public WordComposer(final WordComposer source) {
+ mCombinerChain = source.mCombinerChain;
mPrimaryKeyCodes = Arrays.copyOf(source.mPrimaryKeyCodes, source.mPrimaryKeyCodes.length);
mEvents = new ArrayList<Event>(source.mEvents);
mTypedWord = new StringBuilder(source.mTypedWord);
@@ -187,6 +192,7 @@ public final class WordComposer {
final int keyX = event.mX;
final int keyY = event.mY;
final int newIndex = size();
+ mCombinerChain.processEvent(mEvents, event);
mTypedWord.appendCodePoint(primaryCode);
mEvents.add(event);
refreshSize();
diff --git a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
index fa7c4b4fc..36b30eabe 100644
--- a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
+++ b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
@@ -28,7 +28,6 @@ import android.view.inputmethod.EditorInfo;
import com.android.inputmethod.compat.SuggestionSpanUtils;
import com.android.inputmethod.event.Event;
-import com.android.inputmethod.event.EventInterpreter;
import com.android.inputmethod.event.InputTransaction;
import com.android.inputmethod.keyboard.KeyboardSwitcher;
import com.android.inputmethod.latin.Constants;
@@ -96,6 +95,7 @@ public final class InputLogic {
// TODO: This boolean is persistent state and causes large side effects at unexpected times.
// Find a way to remove it for readability.
private boolean mIsAutoCorrectionIndicatorOn;
+ private long mDoubleSpacePeriodCountdownStart;
public InputLogic(final LatinIME latinIME,
final SuggestionStripViewAccessor suggestionStripViewAccessor) {
@@ -138,6 +138,7 @@ public final class InputLogic {
// In some cases (namely, after rotation of the device) editorInfo.initialSelStart is lying
// so we try using some heuristics to find out about these and fix them.
mConnection.tryFixLyingCursorPosition();
+ cancelDoubleSpacePeriodCountdown();
mInputLogicHandler = new InputLogicHandler(mLatinIME, this);
}
@@ -160,11 +161,12 @@ public final class InputLogic {
* some additional keys for example.
*
* @param settingsValues the current values of the settings.
- * @param rawText the text to input.
+ * @param event the input event containing the data.
*/
- public void onTextInput(final SettingsValues settingsValues, final String rawText,
+ public void onTextInput(final SettingsValues settingsValues, final Event event,
// TODO: remove this argument
final LatinIME.UIHandler handler) {
+ final String rawText = event.mText.toString();
mConnection.beginBatchEdit();
if (mWordComposer.isComposingWord()) {
commitCurrentAutoCorrection(settingsValues, rawText, handler);
@@ -196,13 +198,16 @@ public final class InputLogic {
* @param settingsValues the current values of the settings.
* @param index the index of the suggestion.
* @param suggestionInfo the suggestion info.
+ * @param keyboardShiftState the shift state of the keyboard, as returned by
+ * {@link com.android.inputmethod.keyboard.KeyboardSwitcher#getKeyboardShiftMode()}
+ * @return the complete transaction object
*/
// Called from {@link SuggestionStripView} through the {@link SuggestionStripView#Listener}
// interface
- public void onPickSuggestionManually(final SettingsValues settingsValues,
- final int index, final SuggestedWordInfo suggestionInfo,
- // TODO: remove these two arguments
- final LatinIME.UIHandler handler, final KeyboardSwitcher keyboardSwitcher) {
+ public InputTransaction onPickSuggestionManually(final SettingsValues settingsValues,
+ final int index, final SuggestedWordInfo suggestionInfo, final int keyboardShiftState,
+ // TODO: remove this argument
+ final LatinIME.UIHandler handler) {
final SuggestedWords suggestedWords = mSuggestedWords;
final String suggestion = suggestionInfo.mWord;
// If this is a punctuation picked from the suggestion strip, pass it to onCodeInput
@@ -212,16 +217,26 @@ public final class InputLogic {
LatinImeLogger.logOnManualSuggestion("", suggestion, index, suggestedWords);
// Rely on onCodeInput to do the complicated swapping/stripping logic consistently.
final int primaryCode = suggestion.charAt(0);
- final Event event = Event.createSoftwareKeypressEvent(primaryCode, Event.NOT_A_KEY_CODE,
- Constants.SUGGESTION_STRIP_COORDINATE, Constants.SUGGESTION_STRIP_COORDINATE);
- onCodeInput(settingsValues, event, keyboardSwitcher.getKeyboardShiftMode(), handler);
+ // TODO: we should be using createSuggestionPickedEvent here, but for legacy reasons,
+ // onCodeInput is expected a software keypress event for a suggested punctuation
+ // because the current code is descended from a time where this information used not
+ // to be available. Fix this.
+ final Event event = Event.createSoftwareKeypressEvent(primaryCode,
+ Event.NOT_A_KEY_CODE /* keyCode*/,
+ Constants.SUGGESTION_STRIP_COORDINATE /* x */,
+ Constants.SUGGESTION_STRIP_COORDINATE /* y */);
+ final InputTransaction completeTransaction = onCodeInput(settingsValues, event,
+ keyboardShiftState, handler);
if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
ResearchLogger.latinIME_punctuationSuggestion(index, suggestion,
false /* isBatchMode */, suggestedWords.mIsPrediction);
}
- return;
+ return completeTransaction;
}
+ final Event event = Event.createSuggestionPickedEvent(suggestionInfo);
+ final InputTransaction inputTransaction = new InputTransaction(settingsValues,
+ event, SystemClock.uptimeMillis(), mSpaceState, keyboardShiftState);
mConnection.beginBatchEdit();
if (SpaceState.PHANTOM == mSpaceState && suggestion.length() > 0
// In the batch input mode, a manually picked suggested word should just replace
@@ -241,11 +256,11 @@ public final class InputLogic {
if (SuggestedWordInfo.KIND_APP_DEFINED == suggestionInfo.mKind) {
mSuggestedWords = SuggestedWords.EMPTY;
mSuggestionStripViewAccessor.setNeutralSuggestionStrip();
- keyboardSwitcher.updateShiftState();
+ inputTransaction.requireShiftUpdate(InputTransaction.SHIFT_UPDATE_NOW);
resetComposingState(true /* alsoResetLastComposedWord */);
mConnection.commitCompletion(suggestionInfo.mApplicationSpecifiedCompletionInfo);
mConnection.endBatchEdit();
- return;
+ return inputTransaction;
}
// We need to log before we commit, because the word composer will store away the user
@@ -264,7 +279,7 @@ public final class InputLogic {
mLastComposedWord.deactivate();
// Space state must be updated before calling updateShiftState
mSpaceState = SpaceState.PHANTOM;
- keyboardSwitcher.updateShiftState();
+ inputTransaction.requireShiftUpdate(InputTransaction.SHIFT_UPDATE_NOW);
// We should show the "Touch again to save" hint if the user pressed the first entry
// AND it's in none of our current dictionaries (main, user or otherwise).
@@ -290,6 +305,7 @@ public final class InputLogic {
// If we're not showing the "Touch again to save", then update the suggestion strip.
handler.postUpdateSuggestionStrip();
}
+ return inputTransaction;
}
/**
@@ -392,7 +408,7 @@ public final class InputLogic {
// TODO: Consolidate the double-space period timer, mLastKeyTime, and the space state.
if (event.mCodePoint != Constants.CODE_SPACE) {
- handler.cancelDoubleSpacePeriodTimer();
+ cancelDoubleSpacePeriodCountdown();
}
boolean didAutoCorrect = false;
@@ -833,7 +849,7 @@ public final class InputLogic {
if (Constants.CODE_SPACE == codePoint) {
if (inputTransaction.mSettingsValues.isSuggestionsRequested()) {
- if (maybeDoubleSpacePeriod(inputTransaction.mSettingsValues, handler)) {
+ if (maybeDoubleSpacePeriod(inputTransaction)) {
inputTransaction.requireShiftUpdate(InputTransaction.SHIFT_UPDATE_NOW);
mSpaceState = SpaceState.DOUBLE;
} else if (!mSuggestedWords.isPunctuationSuggestions()) {
@@ -841,7 +857,7 @@ public final class InputLogic {
}
}
- handler.startDoubleSpacePeriodTimer();
+ startDoubleSpacePeriodCountdown(inputTransaction);
handler.postUpdateSuggestionStrip();
} else {
if (swapWeakSpace) {
@@ -938,7 +954,7 @@ public final class InputLogic {
return;
}
if (SpaceState.DOUBLE == inputTransaction.mSpaceState) {
- handler.cancelDoubleSpacePeriodTimer();
+ cancelDoubleSpacePeriodCountdown();
if (mConnection.revertDoubleSpacePeriod()) {
// No need to reset mSpaceState, it has already be done (that's why we
// receive it as a parameter)
@@ -1086,6 +1102,19 @@ public final class InputLogic {
return false;
}
+ public void startDoubleSpacePeriodCountdown(final InputTransaction inputTransaction) {
+ mDoubleSpacePeriodCountdownStart = inputTransaction.mTimestamp;
+ }
+
+ public void cancelDoubleSpacePeriodCountdown() {
+ mDoubleSpacePeriodCountdownStart = 0;
+ }
+
+ public boolean isDoubleSpacePeriodCountdownActive(final InputTransaction inputTransaction) {
+ return inputTransaction.mTimestamp - mDoubleSpacePeriodCountdownStart
+ < inputTransaction.mSettingsValues.mDoubleSpacePeriodTimeout;
+ }
+
/**
* Apply the double-space-to-period transformation if applicable.
*
@@ -1098,14 +1127,12 @@ public final class InputLogic {
* method applies the transformation and returns true. Otherwise, it does nothing and
* returns false.
*
- * @param settingsValues the current values of the settings.
+ * @param inputTransaction The transaction in progress.
* @return true if we applied the double-space-to-period transformation, false otherwise.
*/
- private boolean maybeDoubleSpacePeriod(final SettingsValues settingsValues,
- // TODO: remove this argument
- final LatinIME.UIHandler handler) {
- if (!settingsValues.mUseDoubleSpacePeriod) return false;
- if (!handler.isAcceptingDoubleSpacePeriod()) return false;
+ private boolean maybeDoubleSpacePeriod(final InputTransaction inputTransaction) {
+ if (!inputTransaction.mSettingsValues.mUseDoubleSpacePeriod) return false;
+ if (!isDoubleSpacePeriodCountdownActive(inputTransaction)) return false;
// We only do this when we see two spaces and an accepted code point before the cursor.
// The code point may be a surrogate pair but the two spaces may not, so we need 4 chars.
final CharSequence lastThree = mConnection.getTextBeforeCursor(4, 0);
@@ -1121,10 +1148,10 @@ public final class InputLogic {
Character.isSurrogatePair(lastThree.charAt(0), lastThree.charAt(1)) ?
Character.codePointAt(lastThree, 0) : lastThree.charAt(length - 3);
if (canBeFollowedByDoubleSpacePeriod(firstCodePoint)) {
- handler.cancelDoubleSpacePeriodTimer();
+ cancelDoubleSpacePeriodCountdown();
mConnection.deleteSurroundingText(2, 0);
- final String textToInsert =
- settingsValues.mSpacingAndPunctuations.mSentenceSeparatorAndSpace;
+ final String textToInsert = inputTransaction.mSettingsValues.mSpacingAndPunctuations
+ .mSentenceSeparatorAndSpace;
mConnection.commitText(textToInsert, 1);
if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
ResearchLogger.latinIME_maybeDoubleSpacePeriod(textToInsert,
diff --git a/java/src/com/android/inputmethod/latin/settings/Settings.java b/java/src/com/android/inputmethod/latin/settings/Settings.java
index b51c765f0..964bf2246 100644
--- a/java/src/com/android/inputmethod/latin/settings/Settings.java
+++ b/java/src/com/android/inputmethod/latin/settings/Settings.java
@@ -23,6 +23,7 @@ import android.content.res.Resources;
import android.preference.PreferenceManager;
import android.util.Log;
+import com.android.inputmethod.keyboard.KeyboardSwitcher;
import com.android.inputmethod.latin.AudioAndHapticFeedbackManager;
import com.android.inputmethod.latin.InputAttributes;
import com.android.inputmethod.latin.R;
@@ -270,25 +271,36 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang
}
public static int readKeyboardThemeIndex(final SharedPreferences prefs, final Resources res) {
- final String defaultThemeIndex = res.getString(
- R.string.config_default_keyboard_theme_index);
- final String themeIndex = prefs.getString(PREF_KEYBOARD_LAYOUT, defaultThemeIndex);
+ final int defaultThemeIndex = readDefaultKeyboardThemeIndex(res);
+ final String themeIndexString = prefs.getString(PREF_KEYBOARD_LAYOUT, null);
try {
- return Integer.valueOf(themeIndex);
+ return Integer.parseInt(themeIndexString);
} catch (final NumberFormatException e) {
// Format error, returns default keyboard theme index.
- Log.e(TAG, "Illegal keyboard theme in preference: " + themeIndex + ", default to "
+ Log.e(TAG, "Illegal keyboard theme in preference: " + themeIndexString + ", default to "
+ defaultThemeIndex, e);
- return Integer.valueOf(defaultThemeIndex);
+ }
+ return defaultThemeIndex;
+ }
+
+ private static int readDefaultKeyboardThemeIndex(final Resources res) {
+ final String defaultThemeIndexString = res.getString(
+ R.string.config_default_keyboard_theme_index);
+ try {
+ return Integer.parseInt(defaultThemeIndexString);
+ } catch (final NumberFormatException e) {
+ final int defaultThemeIndex = KeyboardSwitcher.DEFAULT_THEME_INDEX;
+ Log.e(TAG, "Corrupted default keyoard theme in resource: " + defaultThemeIndexString
+ + ", default to " + defaultThemeIndex, e);
+ return defaultThemeIndex;
}
}
public static int resetAndGetDefaultKeyboardThemeIndex(final SharedPreferences prefs,
final Resources res) {
- final String defaultThemeIndex = res.getString(
- R.string.config_default_keyboard_theme_index);
- prefs.edit().putString(PREF_KEYBOARD_LAYOUT, defaultThemeIndex).apply();
- return Integer.valueOf(defaultThemeIndex);
+ final int defaultThemeIndex = readDefaultKeyboardThemeIndex(res);
+ prefs.edit().putString(PREF_KEYBOARD_LAYOUT, Integer.toString(defaultThemeIndex)).apply();
+ return defaultThemeIndex;
}
public static String readPrefAdditionalSubtypes(final SharedPreferences prefs,
diff --git a/java/src/com/android/inputmethod/latin/settings/SettingsValues.java b/java/src/com/android/inputmethod/latin/settings/SettingsValues.java
index 50fbbb19f..d47a61ed1 100644
--- a/java/src/com/android/inputmethod/latin/settings/SettingsValues.java
+++ b/java/src/com/android/inputmethod/latin/settings/SettingsValues.java
@@ -50,6 +50,7 @@ public final class SettingsValues {
// From resources:
public final SpacingAndPunctuations mSpacingAndPunctuations;
public final int mDelayUpdateOldSuggestions;
+ public final long mDoubleSpacePeriodTimeout;
// From preferences, in the same order as xml/prefs.xml:
public final boolean mAutoCap;
@@ -132,6 +133,7 @@ public final class SettingsValues {
mBlockPotentiallyOffensive = Settings.readBlockPotentiallyOffensive(prefs, res);
mAutoCorrectEnabled = Settings.readAutoCorrectEnabled(autoCorrectionThresholdRawValue, res);
mBigramPredictionEnabled = readBigramPredictionEnabled(prefs, res);
+ mDoubleSpacePeriodTimeout = res.getInteger(R.integer.config_double_space_period_timeout);
// Compute other readable settings
mKeyLongpressTimeout = Settings.readKeyLongpressTimeout(prefs, res);
@@ -285,7 +287,7 @@ public final class SettingsValues {
// When autoCorrectionThreshold is greater than 1.0, it's like auto correction is off.
final float autoCorrectionThreshold;
try {
- final int arrayIndex = Integer.valueOf(currentAutoCorrectionSetting);
+ final int arrayIndex = Integer.parseInt(currentAutoCorrectionSetting);
if (arrayIndex >= 0 && arrayIndex < autoCorrectionThresholdValues.length) {
final String val = autoCorrectionThresholdValues[arrayIndex];
if (FLOAT_MAX_VALUE_MARKER_STRING.equals(val)) {
diff --git a/java/src/com/android/inputmethod/latin/settings/SpacingAndPunctuations.java b/java/src/com/android/inputmethod/latin/settings/SpacingAndPunctuations.java
index 5954758aa..796921f71 100644
--- a/java/src/com/android/inputmethod/latin/settings/SpacingAndPunctuations.java
+++ b/java/src/com/android/inputmethod/latin/settings/SpacingAndPunctuations.java
@@ -18,7 +18,6 @@ package com.android.inputmethod.latin.settings;
import android.content.res.Resources;
-import com.android.inputmethod.keyboard.internal.KeyboardTextsSet;
import com.android.inputmethod.keyboard.internal.MoreKeySpec;
import com.android.inputmethod.latin.Constants;
import com.android.inputmethod.latin.PunctuationSuggestions;
@@ -61,10 +60,8 @@ public final class SpacingAndPunctuations {
// English variants. German rules (not "German typography") also have small gotchas.
mUsesAmericanTypography = Locale.ENGLISH.getLanguage().equals(locale.getLanguage());
mUsesGermanRules = Locale.GERMAN.getLanguage().equals(locale.getLanguage());
- final KeyboardTextsSet textsSet = new KeyboardTextsSet();
- textsSet.setLocale(locale);
final String[] suggestPuncsSpec = MoreKeySpec.splitKeySpecs(
- textsSet.resolveTextReference(res.getString(R.string.suggested_punctuations)));
+ res.getString(R.string.suggested_punctuations));
mSuggestPuncList = PunctuationSuggestions.newPunctuationSuggestions(suggestPuncsSpec);
}
diff --git a/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripLayoutHelper.java b/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripLayoutHelper.java
index c26e223c9..1d84bb59f 100644
--- a/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripLayoutHelper.java
+++ b/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripLayoutHelper.java
@@ -507,7 +507,7 @@ final class SuggestionStripLayoutHelper {
hintView, 1.0f - mCenterSuggestionWeight, ViewGroup.LayoutParams.MATCH_PARENT);
}
- public void layoutImportantNotice(final View importantNoticeStrip, final int stripWidth,
+ public void layoutImportantNotice(final View importantNoticeStrip,
final String importantNoticeTitle) {
final TextView titleView = (TextView)importantNoticeStrip.findViewById(
R.id.important_notice_title);
@@ -516,8 +516,7 @@ final class SuggestionStripLayoutHelper {
titleView.setTextColor(mColorAutoCorrect);
titleView.setText(importantNoticeTitle);
titleView.setTextScaleX(1.0f); // Reset textScaleX.
- final float titleScaleX = getTextScaleX(
- importantNoticeTitle, width, titleView.getPaint());
+ final float titleScaleX = getTextScaleX(importantNoticeTitle, width, titleView.getPaint());
titleView.setTextScaleX(titleScaleX);
}
diff --git a/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripView.java b/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripView.java
index 43cb11b14..3cdd07361 100644
--- a/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripView.java
+++ b/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripView.java
@@ -232,8 +232,7 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick
if (!ImportantNoticeUtils.shouldShowImportantNotice(getContext(), inputAttributes)) {
return false;
}
- final int width = getWidth();
- if (width <= 0) {
+ if (getWidth() <= 0) {
return false;
}
final String importantNoticeTitle = ImportantNoticeUtils.getNextImportantNoticeTitle(
@@ -241,7 +240,7 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick
if (TextUtils.isEmpty(importantNoticeTitle)) {
return false;
}
- mLayoutHelper.layoutImportantNotice(mImportantNoticeStrip, width, importantNoticeTitle);
+ mLayoutHelper.layoutImportantNotice(mImportantNoticeStrip, importantNoticeTitle);
mStripVisibilityGroup.showImportantNoticeStrip();
mImportantNoticeStrip.setOnClickListener(this);
return true;
diff --git a/java/src/com/android/inputmethod/latin/utils/ImportantNoticeUtils.java b/java/src/com/android/inputmethod/latin/utils/ImportantNoticeUtils.java
index ca8bef397..7d937a9d2 100644
--- a/java/src/com/android/inputmethod/latin/utils/ImportantNoticeUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/ImportantNoticeUtils.java
@@ -20,6 +20,7 @@ import android.content.Context;
import android.content.SharedPreferences;
import android.provider.Settings;
import android.provider.Settings.SettingNotFoundException;
+import android.text.TextUtils;
import android.util.Log;
import com.android.inputmethod.latin.InputAttributes;
@@ -82,7 +83,17 @@ public final class ImportantNoticeUtils {
if (inputAttributes == null || inputAttributes.mIsPasswordField) {
return false;
}
- return hasNewImportantNotice(context) && !isInSystemSetupWizard(context);
+ if (isInSystemSetupWizard(context)) {
+ return false;
+ }
+ if (!hasNewImportantNotice(context)) {
+ return false;
+ }
+ final String importantNoticeTitle = getNextImportantNoticeTitle(context);
+ if (TextUtils.isEmpty(importantNoticeTitle)) {
+ return false;
+ }
+ return true;
}
public static void updateLastImportantNoticeVersion(final Context context) {