aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--java/res/values-in/strings.xml2
-rw-r--r--java/res/values-ja/strings.xml2
-rw-r--r--java/res/values-ms-rMY/strings.xml3
-rw-r--r--java/res/values-nb/strings.xml2
-rw-r--r--java/res/values-ne-rNP/strings.xml2
-rw-r--r--java/res/values-ro/strings.xml3
-rw-r--r--java/res/values-zu/strings.xml2
-rw-r--r--java/res/values/strings.xml18
-rw-r--r--java/res/xml-sw600dp/rows_myanmar.xml22
-rw-r--r--java/res/xml/method.xml6
-rw-r--r--java/res/xml/rowkeys_myanmar1.xml53
-rw-r--r--java/res/xml/rowkeys_myanmar2.xml48
-rw-r--r--java/res/xml/rowkeys_myanmar3.xml75
-rw-r--r--java/res/xml/rowkeys_myanmar4.xml58
-rw-r--r--java/res/xml/rows_myanmar.xml9
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java7
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java432
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java15
-rw-r--r--java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java9
-rw-r--r--java/src/com/android/inputmethod/latin/utils/SpacebarLanguageUtils.java5
-rw-r--r--java/src/com/android/inputmethod/latin/utils/SubtypeLocaleUtils.java39
-rw-r--r--native/jni/src/suggest/core/dictionary/multi_bigram_map.cpp5
-rw-r--r--native/jni/src/suggest/core/dictionary/multi_bigram_map.h6
-rw-r--r--native/jni/src/suggest/core/layout/proximity_info.h5
-rw-r--r--native/jni/src/suggest/core/layout/proximity_info_state.cpp3
-rw-r--r--native/jni/src/suggest/core/layout/proximity_info_state.h4
-rw-r--r--native/jni/src/suggest/core/layout/proximity_info_state_utils.cpp19
-rw-r--r--native/jni/src/suggest/core/layout/proximity_info_state_utils.h12
-rw-r--r--native/jni/src/suggest/core/layout/proximity_info_utils.h10
-rw-r--r--native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_gc_event_listeners.h1
-rw-r--r--native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_updating_helper.h1
-rw-r--r--native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/pt_node_writer.h8
-rw-r--r--native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/terminal_position_lookup_table.h5
-rw-r--r--native/jni/src/utils/hash_map_compat.h28
-rw-r--r--tests/src/com/android/inputmethod/keyboard/layout/Myanmar.java252
-rw-r--r--tests/src/com/android/inputmethod/keyboard/layout/tests/TestsMyanmarMM.java37
-rw-r--r--tools/make-keyboard-text/res/values-my-rMM/donottranslate-more-keys.xml9
37 files changed, 766 insertions, 451 deletions
diff --git a/java/res/values-in/strings.xml b/java/res/values-in/strings.xml
index 3b5cf9192..c5f0fc3b0 100644
--- a/java/res/values-in/strings.xml
+++ b/java/res/values-in/strings.xml
@@ -194,7 +194,7 @@
<string name="dictionary_provider_name" msgid="3027315045397363079">"Penyedia Kamus"</string>
<string name="dictionary_service_name" msgid="6237472350693511448">"Layanan Kamus"</string>
<string name="download_description" msgid="6014835283119198591">"Informasi pembaruan kamus"</string>
- <string name="dictionary_settings_title" msgid="8091417676045693313">"Kamus add-on"</string>
+ <string name="dictionary_settings_title" msgid="8091417676045693313">"Kamus pengaya"</string>
<string name="dictionary_install_over_metered_network_prompt" msgid="3587517870006332980">"Kamus yang tersedia"</string>
<string name="dictionary_settings_summary" msgid="5305694987799824349">"Setelan untuk kamus"</string>
<string name="user_dictionaries" msgid="3582332055892252845">"Kamus pengguna"</string>
diff --git a/java/res/values-ja/strings.xml b/java/res/values-ja/strings.xml
index 4567ec925..c4b185225 100644
--- a/java/res/values-ja/strings.xml
+++ b/java/res/values-ja/strings.xml
@@ -135,7 +135,7 @@
<string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"英語(英国)(<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
<string name="subtype_with_layout_en_US" msgid="8809311287529805422">"英語(米国)(<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
<string name="subtype_with_layout_es_US" msgid="510930471167541338">"スペイン語(米国)(<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
- <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g>(繁体)"</string>
+ <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g>(伝統言語)"</string>
<string name="subtype_no_language" msgid="7137390094240139495">"言語なし(アルファベット)"</string>
<string name="subtype_no_language_qwerty" msgid="244337630616742604">"アルファベット(QWERTY)"</string>
<string name="subtype_no_language_qwertz" msgid="443066912507547976">"アルファベット(QWERTZ)"</string>
diff --git a/java/res/values-ms-rMY/strings.xml b/java/res/values-ms-rMY/strings.xml
index 96735c0b4..294dd7f4f 100644
--- a/java/res/values-ms-rMY/strings.xml
+++ b/java/res/values-ms-rMY/strings.xml
@@ -135,8 +135,7 @@
<string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"Bahasa Inggeris (UK) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
<string name="subtype_with_layout_en_US" msgid="8809311287529805422">"Bahasa Inggeris (AS) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
<string name="subtype_with_layout_es_US" msgid="510930471167541338">"Bahasa Sepanyol (AS) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
- <!-- no translation found for subtype_generic_traditional (8584594350973800586) -->
- <skip />
+ <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Tradisional)"</string>
<string name="subtype_no_language" msgid="7137390094240139495">"Tiada bahasa (Abjad)"</string>
<string name="subtype_no_language_qwerty" msgid="244337630616742604">"Abjad (QWERTY)"</string>
<string name="subtype_no_language_qwertz" msgid="443066912507547976">"Abjad (QWERTZ)"</string>
diff --git a/java/res/values-nb/strings.xml b/java/res/values-nb/strings.xml
index fe38a863f..02cc7deb6 100644
--- a/java/res/values-nb/strings.xml
+++ b/java/res/values-nb/strings.xml
@@ -135,7 +135,7 @@
<string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"Engelsk (Storbritannia) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
<string name="subtype_with_layout_en_US" msgid="8809311287529805422">"Engelsk (USA) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
<string name="subtype_with_layout_es_US" msgid="510930471167541338">"Spansk (USA) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
- <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (tradisjonell)"</string>
+ <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (tradisjonelt)"</string>
<string name="subtype_no_language" msgid="7137390094240139495">"Ingen språk (alfabet)"</string>
<string name="subtype_no_language_qwerty" msgid="244337630616742604">"Alfabet (QWERTY)"</string>
<string name="subtype_no_language_qwertz" msgid="443066912507547976">"Alfabet (QWERTZ)"</string>
diff --git a/java/res/values-ne-rNP/strings.xml b/java/res/values-ne-rNP/strings.xml
index 2bf1fb70d..055d16ccf 100644
--- a/java/res/values-ne-rNP/strings.xml
+++ b/java/res/values-ne-rNP/strings.xml
@@ -167,7 +167,7 @@
<string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"स्थापना गर्न कुनै शब्दकोश फाइल चयन गर्नुहोस्"</string>
<string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"वास्तवमै <xliff:g id="LANGUAGE_NAME">%s</xliff:g> को लागि यो फाइल स्थापना गर्नुहुन्छ?"</string>
<string name="error" msgid="8940763624668513648">"कुनै त्रुटि भयो"</string>
- <string name="prefs_dump_contacts_dict" msgid="7227327764402323097">"सम्पर्क शब्दकोश डम्प गर्नुहोस्"</string>
+ <string name="prefs_dump_contacts_dict" msgid="7227327764402323097">"सम्पर्क शब्दकोश भेला गर्नुहोस्"</string>
<string name="prefs_dump_user_dict" msgid="294870685041741951">"व्यक्तिगत शब्दकोश डम्प गर्नुहोस्"</string>
<string name="prefs_dump_user_history_dict" msgid="6821075152449554628">"प्रयोगकर्ता इतिहास शब्दकोश डम्प गर"</string>
<string name="prefs_dump_personalization_dict" msgid="7558387996151745284">"निजीकरण शब्दकोश डम्प गर्नुहोस्"</string>
diff --git a/java/res/values-ro/strings.xml b/java/res/values-ro/strings.xml
index 2d5fd1f18..96a774449 100644
--- a/java/res/values-ro/strings.xml
+++ b/java/res/values-ro/strings.xml
@@ -135,8 +135,7 @@
<string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"Engleză (Regatul Unit) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
<string name="subtype_with_layout_en_US" msgid="8809311287529805422">"Engleză (S.U.A.) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
<string name="subtype_with_layout_es_US" msgid="510930471167541338">"Spaniolă (S.U.A.) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
- <!-- no translation found for subtype_generic_traditional (8584594350973800586) -->
- <skip />
+ <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (tradițională)"</string>
<string name="subtype_no_language" msgid="7137390094240139495">"Nicio limbă (alfabet)"</string>
<string name="subtype_no_language_qwerty" msgid="244337630616742604">"Alfabet (QWERTY)"</string>
<string name="subtype_no_language_qwertz" msgid="443066912507547976">"Alfabet (QWERTZ)"</string>
diff --git a/java/res/values-zu/strings.xml b/java/res/values-zu/strings.xml
index e499bd902..1fd1e0363 100644
--- a/java/res/values-zu/strings.xml
+++ b/java/res/values-zu/strings.xml
@@ -135,7 +135,7 @@
<string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"I-English (UK) ( <xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g> )"</string>
<string name="subtype_with_layout_en_US" msgid="8809311287529805422">"I-English (US) ( <xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g> )"</string>
<string name="subtype_with_layout_es_US" msgid="510930471167541338">"Isi-Spanish (US) ( <xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g> )"</string>
- <string name="subtype_generic_traditional" msgid="8584594350973800586">"Isi-<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Eyosiko)"</string>
+ <string name="subtype_generic_traditional" msgid="8584594350973800586">"Isi-<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Tradition)"</string>
<string name="subtype_no_language" msgid="7137390094240139495">"Alikho ulimi (Alfabhethi)"</string>
<string name="subtype_no_language_qwerty" msgid="244337630616742604">"Alfabhethi (QWERTY)"</string>
<string name="subtype_no_language_qwertz" msgid="443066912507547976">"Alfabhethi (QWERTZ)"</string>
diff --git a/java/res/values/strings.xml b/java/res/values/strings.xml
index 937a79933..a4e2d2914 100644
--- a/java/res/values/strings.xml
+++ b/java/res/values/strings.xml
@@ -365,18 +365,12 @@
(Compact) can be an abbreviation to fit in the CHAR LIMIT.
TODO: Remove translatable=false once we are settled down with the naming. -->
<string name="subtype_generic_compact" translatable="false"><xliff:g id="LANGUAGE_NAME" example="Hindi">%s</xliff:g> (Compact)</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>
- -->
+ <!-- Description for "LANGUAGE_NAME" (Cyrillic) keyboard subtype [CHAR LIMIT=25]
+ (Cyrillic) can be an abbreviation to fit in the CHAR LIMIT. -->
+ <string name="subtype_generic_cyrillic"><xliff:g id="LANGUAGE_NAME" example="Serbian">%s</xliff:g> (Cyrillic)</string>
+ <!-- Description for "LANGUAGE_NAME" (Latin) keyboard subtype [CHAR LIMIT=25]
+ (Latin) can be an abbreviation to fit in the CHAR LIMIT. -->
+ <string name="subtype_generic_latin"><xliff:g id="LANGUAGE_NAME" example="Serbian">%s</xliff:g> (Latin)</string>
<!-- This string is displayed in a language list that allows to choose a language for
suggestions in a software keyboard. This setting won't give suggestions in any particular
language, hence "No language".
diff --git a/java/res/xml-sw600dp/rows_myanmar.xml b/java/res/xml-sw600dp/rows_myanmar.xml
index 778b330af..8eedf9d2f 100644
--- a/java/res/xml-sw600dp/rows_myanmar.xml
+++ b/java/res/xml-sw600dp/rows_myanmar.xml
@@ -24,7 +24,7 @@
<include
latin:keyboardLayout="@xml/key_styles_common" />
<Row
- latin:keyWidth="8.1818%p"
+ latin:keyWidth="9.0%p"
>
<include
latin:keyboardLayout="@xml/rowkeys_myanmar1" />
@@ -33,40 +33,30 @@
latin:keyWidth="fillRight" />
</Row>
<Row
- latin:keyWidth="8.1818%p"
+ latin:keyWidth="9.0%p"
>
<include
latin:keyboardLayout="@xml/rowkeys_myanmar2" />
</Row>
<Row
- latin:keyWidth="8.1818%p"
+ latin:keyWidth="9.0%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"
+ latin:keyWidth="9.0%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>
+ <include
+ latin:keyboardLayout="@xml/keys_exclamation_question" />
</Row>
<include
latin:keyboardLayout="@xml/row_qwerty4" />
diff --git a/java/res/xml/method.xml b/java/res/xml/method.xml
index 594378fb4..28eceb8db 100644
--- a/java/res/xml/method.xml
+++ b/java/res/xml/method.xml
@@ -329,6 +329,8 @@
android:imeSubtypeExtraValue="KeyboardLayoutSet=hindi,EmojiCapable"
android:isAsciiCapable="false"
/>
+ <!-- TODO: This hindi_compact 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_compact"
android:subtypeId="0xe49c89a1"
@@ -475,8 +477,6 @@
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"
@@ -485,6 +485,8 @@
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
android:isAsciiCapable="true"
/>
+ <!-- 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="0xea266ea4"
diff --git a/java/res/xml/rowkeys_myanmar1.xml b/java/res/xml/rowkeys_myanmar1.xml
index 6460af565..b7c820922 100644
--- a/java/res/xml/rowkeys_myanmar1.xml
+++ b/java/res/xml/rowkeys_myanmar1.xml
@@ -25,50 +25,49 @@
<case
latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted"
>
- <!-- U+100E: "ဎ" MYANMAR LETTER DDHA -->
+ <!-- U+1027: "ဧ" MYANMAR LETTER E -->
<Key
- latin:keySpec="&#x100E;"
+ latin:keySpec="&#x1027;"
latin:keyLabelFlags="fontNormal" />
- <!-- U+100D: "ဍ" MYANMAR LETTER DDA -->
+ <!-- U+104F: "၏" MYANMAR SYMBOL GENITIVE -->
<Key
- latin:keySpec="&#x100D;"
+ latin:keySpec="&#x104F;"
latin:keyLabelFlags="fontNormal" />
- <!-- U+1052: "ၒ" MYANMAR LETTER VOCALIC R -->
+ <!-- U+1024: "ဤ" MYANMAR LETTER II -->
<Key
- latin:keySpec="&#x1052;"
+ latin:keySpec="&#x1024;"
latin:keyLabelFlags="fontNormal" />
- <!-- U+100B: "ဋ" MYANMAR LETTER TTA -->
+ <!-- U+1023: "ဣ" MYANMAR LETTER I -->
<Key
- latin:keySpec="&#x100B;"
+ latin:keySpec="&#x1023;"
latin:keyLabelFlags="fontNormal" />
- <!-- U+1053: "ၓ" MYANMAR LETTER VOCALIC RR -->
+ <!-- U+104E: "၎" MYANMAR SYMBOL AFOREMENTIONED -->
<Key
- latin:keySpec="&#x1053;"
+ latin:keySpec="&#x104E;"
latin:keyLabelFlags="fontNormal" />
- <!-- U+1054: "ၔ" MYANMAR LETTER VOCALIC L -->
+ <!-- U+1000/U+103B/U+1015/U+103A: "ကျပ်"
+ MYANMAR LETTER KA/MYANMAR CONSONANT SIGN MEDIAL YA/MYANMAR LETTER PA/MYANMAR SIGN ASAT -->
<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 -->
+ latin:keySpec="&#x1000;&#x103B;&#x1015;&#x103A;"
+ latin:keyLabelFlags="fontNormal|followKeyLetterRatio|autoScale" />
+ <!-- U+1029: "ဩ" MYANMAR LETTER O -->
<Key
- latin:keySpec="&#x101B;"
- latin:keyLabelFlags="fontNormal" />
+ latin:keySpec="&#x1029;"
+ latin:keyLabelFlags="fontNormal|autoScale" />
+ <!-- U+102A: "ဪ" MYANMAR LETTER AU -->
<Key
- latin:keySpec="*" />
+ latin:keySpec="&#x102A;"
+ latin:keyLabelFlags="fontNormal|autoScale" />
+ <!-- U+104D: "၍" MYANMAR SYMBOL COMPLETED -->
<Key
- latin:keySpec="(" />
+ latin:keySpec="&#x104D;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+104C: "၌" MYANMAR SYMBOL LOCATIVE -->
<Key
- latin:keySpec=")" />
+ latin:keySpec="&#x104C;"
+ latin:keyLabelFlags="fontNormal" />
</case>
<default>
- <!-- U+1050: "ၐ" MYANMAR LETTER SHA -->
- <Key
- latin:keySpec="&#x1050;"
- latin:keyLabelFlags="fontNormal" />
<!-- U+1041: "၁" MYANMAR DIGIT ONE -->
<Key
latin:keySpec="&#x1041;"
diff --git a/java/res/xml/rowkeys_myanmar2.xml b/java/res/xml/rowkeys_myanmar2.xml
index 558c38d4d..5f0115f39 100644
--- a/java/res/xml/rowkeys_myanmar2.xml
+++ b/java/res/xml/rowkeys_myanmar2.xml
@@ -25,49 +25,45 @@
<case
latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted"
>
- <!-- U+1008: "ဈ" MYANMAR LETTER JHA -->
+ <!-- U+1017: "ဗ" MYANMAR LETTER BA -->
<Key
- latin:keySpec="&#x1008;"
+ latin:keySpec="&#x1017;"
latin:keyLabelFlags="fontNormal" />
- <!-- U+101D: "ဝ" MYANMAR LETTER WA -->
+ <!-- U+1012: "ဒ" MYANMAR LETTER DA -->
<Key
- latin:keySpec="&#x101D;"
+ latin:keySpec="&#x1012;"
latin:keyLabelFlags="fontNormal" />
- <!-- U+1023: "ဣ" MYANMAR LETTER I -->
+ <!-- U+1013: "ဓ" MYANMAR LETTER DHA -->
<Key
- latin:keySpec="&#x1023;"
+ latin:keySpec="&#x1013;"
latin:keyLabelFlags="fontNormal" />
- <!-- U+104E: "၎" MYANMAR SYMBOL AFOREMENTIONED -->
+ <!-- U+1003: "ဃ" MYANMAR LETTER GHA -->
<Key
- latin:keySpec="&#x104E;"
+ latin:keySpec="&#x1003;"
latin:keyLabelFlags="fontNormal" />
- <!-- U+1024: "ဤ" MYANMAR LETTER II -->
+ <!-- U+100E: "ဎ" MYANMAR LETTER DDHA -->
<Key
- latin:keySpec="&#x1024;"
+ latin:keySpec="&#x100E;"
latin:keyLabelFlags="fontNormal" />
- <!-- U+104C: "၌" MYANMAR SYMBOL LOCATIVE -->
+ <!-- U+103F: "ဿ" MYANMAR LETTER GREAT SA -->
<Key
- latin:keySpec="&#x104C;"
+ latin:keySpec="&#x103F;"
latin:keyLabelFlags="fontNormal" />
- <!-- U+1025: "ဥ" MYANMAR LETTER U -->
+ <!-- U+100F: "ဏ" MYANMAR LETTER NNA -->
<Key
- latin:keySpec="&#x1025;"
+ latin:keySpec="&#x100F;"
latin:keyLabelFlags="fontNormal" />
- <!-- U+104D: "၍" MYANMAR SYMBOL COMPLETED -->
+ <!-- U+1008: "ဈ" MYANMAR LETTER JHA -->
<Key
- latin:keySpec="&#x104D;"
+ latin:keySpec="&#x1008;"
latin:keyLabelFlags="fontNormal" />
- <!-- U+103F: "ဿ" MYANMAR LETTER GREAT SA -->
- <Key
- latin:keySpec="&#x103F;"
- latin:keyLabelFlags="fontNormal|autoXScale" />
- <!-- U+100F: "ဏ" MYANMAR LETTER NNA -->
+ <!-- U+1007: "ဇ" MYANMAR LETTER JA -->
<Key
- latin:keySpec="&#x100F;"
+ latin:keySpec="&#x1007;"
latin:keyLabelFlags="fontNormal" />
- <!-- U+1027: "ဧ" MYANMAR LETTER E -->
+ <!-- U+1002: "ဂ" MYANMAR LETTER GA -->
<Key
- latin:keySpec="&#x1027;"
+ latin:keySpec="&#x1002;"
latin:keyLabelFlags="fontNormal" />
</case>
<default>
@@ -111,10 +107,6 @@
<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
index 2d0d48cc7..612bcd31b 100644
--- a/java/res/xml/rowkeys_myanmar3.xml
+++ b/java/res/xml/rowkeys_myanmar3.xml
@@ -25,10 +25,18 @@
<case
latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted"
>
- <!-- U+1017: "ဗ" MYANMAR LETTER BA -->
+ <!-- U+101A: "ယ" MYANMAR LETTER YA -->
<Key
- latin:keySpec="&#x1017;"
+ latin:keySpec="&#x101A;"
latin:keyLabelFlags="fontNormal" />
+ <!-- U+1039: "္" MYANMAR SIGN VIRAMA -->
+ <Key
+ latin:keySpec="&#x1039;"
+ latin:keyLabelFlags="fontNormal" />
+ <!-- U+1004/U+103A/U+1039: "င်္င" MYANMAR LETTER NGA/MYANMAR SIGN ASAT/MYANMAR SIGN VIRAMA -->
+ <Key
+ latin:keySpec="&#x1004;&#x103A;&#x1039;"
+ latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
<!-- U+103E: "ှ" MYANMAR CONSONANT SIGN MEDIAL HA -->
<Key
latin:keySpec="&#x103E;"
@@ -37,33 +45,25 @@
<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 -->
+ <!-- U+1030: "ူ" MYANMAR VOWEL SIGN UU -->
<Key
- latin:keySpec="&#x103D;"
+ latin:keySpec="&#x1030;"
latin:keyLabelFlags="fontNormal" />
- <!-- U+1036: "ံ" MYANMAR SIGN ANUSVARA -->
+ <!-- U+102B: "ါ" MYANMAR VOWEL SIGN TALL AA -->
<Key
- latin:keySpec="&#x1036;"
+ latin:keySpec="&#x102B;"
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 -->
+ <!-- U+1036: "ံ" MYANMAR SIGN ANUSVARA -->
<Key
- latin:keySpec="&#x1013;"
+ latin:keySpec="&#x1036;"
latin:keyLabelFlags="fontNormal" />
- <!-- U+1002: "ဂ" MYANMAR LETTER GA -->
+ <!-- U+101F: "ဟ" MYANMAR LETTER HA -->
<Key
- latin:keySpec="&#x1002;"
+ latin:keySpec="&#x101F;"
latin:keyLabelFlags="fontNormal" />
</case>
<default>
@@ -75,33 +75,44 @@
<Key
latin:keySpec="&#x103B;"
latin:keyLabelFlags="fontNormal" />
- <!-- U+102D: "ိ" MYANMAR VOWEL SIGN I -->
+ <!-- U+103C: "ြ" MYANMAR CONSONANT SIGN MEDIAL RA -->
<Key
- latin:keySpec="&#x102D;"
+ latin:keySpec="&#x103C;"
latin:keyLabelFlags="fontNormal" />
- <!-- U+103A: "်" MYANMAR SIGN ASAT -->
+ <!-- U+103D: "ွ" MYANMAR CONSONANT SIGN MEDIAL WA
+ U+103E: "ှ" MYANMAR CONSONANT SIGN MEDIAL HA
+ U+103D/U+103E: "ွှ" MYANMAR CONSONANT SIGN MEDIAL WA/MYANMAR CONSONANT SIGN MEDIAL HA -->
<Key
- latin:keySpec="&#x103A;"
+ latin:keySpec="&#x103D;"
+ latin:moreKeys="&#x103E;,&#x103D;&#x103E;"
latin:keyLabelFlags="fontNormal" />
- <!-- U+102B: "ါ" MYANMAR VOWEL SIGN TALL AA -->
+ <!-- U+102D: "ိ" MYANMAR VOWEL SIGN I
+ U+102E: "ီ" MYANMAR VOWEL SIGN II -->
<Key
- latin:keySpec="&#x102B;"
+ latin:keySpec="&#x102D;"
+ latin:moreKeys="&#x102E;"
latin:keyLabelFlags="fontNormal" />
- <!-- U+1037: "့" MYANMAR SIGN DOT BELOW -->
+ <!-- U+102F: "ု" MYANMAR VOWEL SIGN U
+ U+1030: "ူ" MYANMAR VOWEL SIGN UU -->
<Key
- latin:keySpec="&#x1037;"
+ latin:keySpec="&#x102F;"
+ latin:moreKeys="&#x1030;"
latin:keyLabelFlags="fontNormal" />
- <!-- U+103C: "ြ" MYANMAR CONSONANT SIGN MEDIAL RA -->
+ <!-- U+102C: "ာ" MYANMAR VOWEL SIGN AA -->
<Key
- latin:keySpec="&#x103C;"
+ latin:keySpec="&#x102C;"
latin:keyLabelFlags="fontNormal" />
- <!-- U+102F: "ု" MYANMAR VOWEL SIGN U -->
+ <!-- U+103A: "်" MYANMAR SIGN ASAT
+ U+1032: "ဲ" MYANMAR VOWEL SIGN AI -->
<Key
- latin:keySpec="&#x102F;"
+ latin:keySpec="&#x103A;"
+ latin:moreKeys="&#x1032;"
latin:keyLabelFlags="fontNormal" />
- <!-- U+1030: "ူ" MYANMAR VOWEL SIGN UU -->
+ <!-- U+1037: "့" MYANMAR SIGN DOT BELOW
+ U+1036: "ံ" MYANMAR SIGN ANUSVARA -->
<Key
- latin:keySpec="&#x1030;"
+ latin:keySpec="&#x1037;"
+ latin:moreKeys="&#x1036;"
latin:keyLabelFlags="fontNormal" />
<!-- U+1038: "း" MYANMAR SIGN VISARGA -->
<Key
diff --git a/java/res/xml/rowkeys_myanmar4.xml b/java/res/xml/rowkeys_myanmar4.xml
index cfd11123c..57466c565 100644
--- a/java/res/xml/rowkeys_myanmar4.xml
+++ b/java/res/xml/rowkeys_myanmar4.xml
@@ -25,42 +25,40 @@
<case
latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted"
>
- <!-- U+1007: "ဇ" MYANMAR LETTER JA -->
+ <!-- U+1025: "ဥ" MYANMAR LETTER U -->
<Key
- latin:keySpec="&#x1007;"
+ latin:keySpec="&#x1025;"
latin:keyLabelFlags="fontNormal" />
- <!-- U+100C: "ဌ" MYANMAR LETTER TTHA -->
- <Key
- latin:keySpec="&#x100C;"
- latin:keyLabelFlags="fontNormal" />
- <!-- U+1003: "ဃ" MYANMAR LETTER GHA -->
+ <!-- U+1026: "ဦ" MYANMAR LETTER UU -->
<Key
- latin:keySpec="&#x1003;"
+ latin:keySpec="&#x1026;"
latin:keyLabelFlags="fontNormal" />
- <!-- U+1020: "ဠ" MYANMAR LETTER LLA -->
+ <!-- U+100C: "ဌ" MYANMAR LETTER TTHA -->
<Key
- latin:keySpec="&#x1020;"
+ latin:keySpec="&#x100C;"
latin:keyLabelFlags="fontNormal" />
- <!-- U+101A: "ယ" MYANMAR LETTER YA -->
+ <!-- U+100B: "ဋ" MYANMAR LETTER TTA -->
<Key
- latin:keySpec="&#x101A;"
+ latin:keySpec="&#x100B;"
latin:keyLabelFlags="fontNormal" />
- <!-- U+1009: "ဉ" MYANMAR LETTER NYA -->
+ <!-- U+100D: "ဍ" MYANMAR LETTER DDA -->
<Key
- latin:keySpec="&#x1009;"
+ latin:keySpec="&#x100D;"
latin:keyLabelFlags="fontNormal" />
- <!-- U+1026: "ဦ" MYANMAR LETTER UU -->
+ <!-- U+1020: "ဠ" MYANMAR LETTER LLA -->
<Key
- latin:keySpec="&#x1026;"
+ latin:keySpec="&#x1020;"
latin:keyLabelFlags="fontNormal" />
- <!-- U+102A: "ဪ" MYANMAR LETTER AU -->
+ <!-- U+100B/U+1039/U+100C: "ဋ္ဌ" MYANMAR LETTER TTA/MYANMAR SIGN VIRAMA/MYANMAR LETTER TTHA -->
<Key
- latin:keySpec="&#x102A;"
- latin:keyLabelFlags="fontNormal|autoXScale" />
- <!-- U+1051: "ၑ" MYANMAR LETTER SSA -->
+ latin:keySpec="&#x100B;&#x1039;&#x100C;"
+ latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+ <!-- U+100F/U+1039/U+100D: "ဏ္ဍ" MYANMAR LETTER NNA/MYANMAR SIGN VIRAMA/MYANMAR LETTER DDA
+ U+100F/U+1039/U+100C: "ဏ္ဌ" MYANMAR LETTER NNA/MYANMAR SIGN VIRAMA/MYANMAR LETTER TTHA -->
<Key
- latin:keySpec="&#x1051;"
- latin:keyLabelFlags="fontNormal" />
+ latin:keySpec="&#x100F;&#x1039;&#x100D;"
+ latin:moreKeys="&#x100F;&#x1039;&#x100C;"
+ latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
</case>
<default>
<!-- U+1016: "ဖ" MYANMAR LETTER PHA -->
@@ -83,21 +81,19 @@
<Key
latin:keySpec="&#x1018;"
latin:keyLabelFlags="fontNormal" />
- <!-- U+100A: "ည" MYANMAR LETTER NNYA -->
+ <!-- U+100A: "ည" MYANMAR LETTER NNYA
+ U+1009: "ဉ" MYANMAR LETTER NYA -->
<Key
latin:keySpec="&#x100A;"
+ latin:moreKeys="&#x1009;"
latin:keyLabelFlags="fontNormal" />
- <!-- U+102C: "ာ" MYANMAR VOWEL SIGN AA -->
- <Key
- latin:keySpec="&#x102C;"
- latin:keyLabelFlags="fontNormal" />
- <!-- U+1029: "ဩ" MYANMAR LETTER O -->
+ <!-- U+101B: "ရ" MYANMAR LETTER RA -->
<Key
- latin:keySpec="&#x1029;"
+ latin:keySpec="&#x101B;"
latin:keyLabelFlags="fontNormal" />
- <!-- U+104F: "၏" MYANMAR SYMBOL GENITIVE -->
+ <!-- U+101D: "ဝ" MYANMAR LETTER WA -->
<Key
- latin:keySpec="&#x104F;"
+ latin:keySpec="&#x101D;"
latin:keyLabelFlags="fontNormal" />
</default>
</switch>
diff --git a/java/res/xml/rows_myanmar.xml b/java/res/xml/rows_myanmar.xml
index 32c923dec..5de47f7b8 100644
--- a/java/res/xml/rows_myanmar.xml
+++ b/java/res/xml/rows_myanmar.xml
@@ -24,26 +24,25 @@
<include
latin:keyboardLayout="@xml/key_styles_common" />
<Row
- latin:keyWidth="9.0909%p"
+ latin:keyWidth="10.0%p"
>
<include
latin:keyboardLayout="@xml/rowkeys_myanmar1" />
</Row>
<Row
- latin:keyWidth="9.0909%p"
+ latin:keyWidth="10.0%p"
>
<include
latin:keyboardLayout="@xml/rowkeys_myanmar2" />
</Row>
<Row
- latin:keyWidth="9.0909%p"
+ latin:keyWidth="10.0%p"
>
<include
- latin:keyXPos="4.5454%p"
latin:keyboardLayout="@xml/rowkeys_myanmar3" />
</Row>
<Row
- latin:keyWidth="9.0909%p"
+ latin:keyWidth="10.0%p"
>
<Key
latin:keyStyle="shiftKeyStyle" />
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
index 2e4a0902d..949f03794 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
@@ -297,12 +297,19 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
}
// Implements {@link KeyboardState.SwitchActions}.
+ // TODO[IL]: merge the two following methods; remove the one without args.
@Override
public void requestUpdatingShiftState() {
mState.onUpdateShiftState(mLatinIME.getCurrentAutoCapsState(),
mLatinIME.getCurrentRecapitalizeState());
}
+ // Future method for requesting an updating to the shift state.
+ public void requestUpdatingShiftState(final int currentAutoCapsState,
+ final int currentRecapitalizeState) {
+ mState.onUpdateShiftState(currentAutoCapsState, currentRecapitalizeState);
+ }
+
// Implements {@link KeyboardState.SwitchActions}.
@Override
public void startDoubleTapShiftKeyTimer() {
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
index 37514be91..14fa76744 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
@@ -120,98 +120,98 @@ public final class KeyboardTextsTable {
/* 30: 5 */ "keyspec_east_slavic_row3_5",
/* 31: 5 */ "morekeys_cyrillic_soft_sign",
/* 32: 4 */ "morekeys_nordic_row2_11",
- /* 33: 4 */ "keyspec_symbols_1",
- /* 34: 4 */ "keyspec_symbols_2",
- /* 35: 4 */ "keyspec_symbols_3",
- /* 36: 4 */ "keyspec_symbols_4",
- /* 37: 4 */ "keyspec_symbols_5",
- /* 38: 4 */ "keyspec_symbols_6",
- /* 39: 4 */ "keyspec_symbols_7",
- /* 40: 4 */ "keyspec_symbols_8",
- /* 41: 4 */ "keyspec_symbols_9",
- /* 42: 4 */ "keyspec_symbols_0",
- /* 43: 4 */ "keylabel_to_symbol",
- /* 44: 4 */ "additional_morekeys_symbols_1",
- /* 45: 4 */ "additional_morekeys_symbols_2",
- /* 46: 4 */ "additional_morekeys_symbols_3",
- /* 47: 4 */ "additional_morekeys_symbols_4",
- /* 48: 4 */ "additional_morekeys_symbols_5",
- /* 49: 4 */ "additional_morekeys_symbols_6",
- /* 50: 4 */ "additional_morekeys_symbols_7",
- /* 51: 4 */ "additional_morekeys_symbols_8",
- /* 52: 4 */ "additional_morekeys_symbols_9",
- /* 53: 4 */ "additional_morekeys_symbols_0",
- /* 54: 3 */ "keyspec_swiss_row1_11",
- /* 55: 3 */ "keyspec_swiss_row2_10",
- /* 56: 3 */ "keyspec_swiss_row2_11",
- /* 57: 3 */ "morekeys_swiss_row1_11",
- /* 58: 3 */ "morekeys_swiss_row2_10",
- /* 59: 3 */ "morekeys_swiss_row2_11",
- /* 60: 3 */ "morekeys_punctuation",
- /* 61: 3 */ "morekeys_star",
- /* 62: 3 */ "keyspec_left_parenthesis",
- /* 63: 3 */ "keyspec_right_parenthesis",
- /* 64: 3 */ "keyspec_left_square_bracket",
- /* 65: 3 */ "keyspec_right_square_bracket",
- /* 66: 3 */ "keyspec_left_curly_bracket",
- /* 67: 3 */ "keyspec_right_curly_bracket",
- /* 68: 3 */ "keyspec_less_than",
- /* 69: 3 */ "keyspec_greater_than",
- /* 70: 3 */ "keyspec_less_than_equal",
- /* 71: 3 */ "keyspec_greater_than_equal",
- /* 72: 3 */ "keyspec_left_double_angle_quote",
- /* 73: 3 */ "keyspec_right_double_angle_quote",
- /* 74: 3 */ "keyspec_left_single_angle_quote",
- /* 75: 3 */ "keyspec_right_single_angle_quote",
- /* 76: 3 */ "keyspec_tablet_comma",
- /* 77: 3 */ "morekeys_tablet_period",
- /* 78: 3 */ "morekeys_question",
- /* 79: 2 */ "morekeys_h",
- /* 80: 2 */ "morekeys_w",
- /* 81: 2 */ "morekeys_east_slavic_row2_2",
- /* 82: 2 */ "morekeys_cyrillic_u",
- /* 83: 2 */ "morekeys_cyrillic_en",
- /* 84: 2 */ "morekeys_cyrillic_ghe",
- /* 85: 2 */ "morekeys_cyrillic_o",
- /* 86: 2 */ "morekeys_cyrillic_i",
- /* 87: 2 */ "keyspec_south_slavic_row1_6",
- /* 88: 2 */ "keyspec_south_slavic_row2_11",
- /* 89: 2 */ "keyspec_south_slavic_row3_1",
- /* 90: 2 */ "keyspec_south_slavic_row3_8",
- /* 91: 2 */ "keyspec_spanish_row2_10",
- /* 92: 2 */ "morekeys_bullet",
- /* 93: 2 */ "morekeys_left_parenthesis",
- /* 94: 2 */ "morekeys_right_parenthesis",
- /* 95: 2 */ "morekeys_arabic_diacritics",
- /* 96: 2 */ "keyspec_comma",
- /* 97: 2 */ "keyhintlabel_tablet_comma",
- /* 98: 2 */ "morekeys_tablet_comma",
- /* 99: 2 */ "keyhintlabel_period",
- /* 100: 2 */ "morekeys_period",
- /* 101: 2 */ "keyhintlabel_tablet_period",
- /* 102: 2 */ "keyspec_symbols_question",
- /* 103: 2 */ "keyspec_symbols_semicolon",
- /* 104: 2 */ "keyspec_symbols_percent",
- /* 105: 2 */ "morekeys_symbols_semicolon",
- /* 106: 2 */ "morekeys_symbols_percent",
- /* 107: 1 */ "morekeys_v",
- /* 108: 1 */ "morekeys_j",
- /* 109: 1 */ "morekeys_q",
- /* 110: 1 */ "morekeys_x",
- /* 111: 1 */ "keyspec_q",
- /* 112: 1 */ "keyspec_w",
- /* 113: 1 */ "keyspec_y",
- /* 114: 1 */ "keyspec_x",
- /* 115: 1 */ "morekeys_east_slavic_row2_11",
- /* 116: 1 */ "morekeys_cyrillic_ka",
- /* 117: 1 */ "morekeys_cyrillic_a",
- /* 118: 1 */ "morekeys_currency_dollar",
- /* 119: 1 */ "morekeys_tablet_punctuation",
- /* 120: 1 */ "morekeys_plus",
- /* 121: 1 */ "morekeys_less_than",
- /* 122: 1 */ "morekeys_greater_than",
- /* 123: 1 */ "keyspec_period",
- /* 124: 1 */ "keyspec_tablet_period",
+ /* 33: 4 */ "morekeys_punctuation",
+ /* 34: 4 */ "keyspec_symbols_1",
+ /* 35: 4 */ "keyspec_symbols_2",
+ /* 36: 4 */ "keyspec_symbols_3",
+ /* 37: 4 */ "keyspec_symbols_4",
+ /* 38: 4 */ "keyspec_symbols_5",
+ /* 39: 4 */ "keyspec_symbols_6",
+ /* 40: 4 */ "keyspec_symbols_7",
+ /* 41: 4 */ "keyspec_symbols_8",
+ /* 42: 4 */ "keyspec_symbols_9",
+ /* 43: 4 */ "keyspec_symbols_0",
+ /* 44: 4 */ "keylabel_to_symbol",
+ /* 45: 4 */ "additional_morekeys_symbols_1",
+ /* 46: 4 */ "additional_morekeys_symbols_2",
+ /* 47: 4 */ "additional_morekeys_symbols_3",
+ /* 48: 4 */ "additional_morekeys_symbols_4",
+ /* 49: 4 */ "additional_morekeys_symbols_5",
+ /* 50: 4 */ "additional_morekeys_symbols_6",
+ /* 51: 4 */ "additional_morekeys_symbols_7",
+ /* 52: 4 */ "additional_morekeys_symbols_8",
+ /* 53: 4 */ "additional_morekeys_symbols_9",
+ /* 54: 4 */ "additional_morekeys_symbols_0",
+ /* 55: 4 */ "keyspec_tablet_comma",
+ /* 56: 3 */ "keyspec_swiss_row1_11",
+ /* 57: 3 */ "keyspec_swiss_row2_10",
+ /* 58: 3 */ "keyspec_swiss_row2_11",
+ /* 59: 3 */ "morekeys_swiss_row1_11",
+ /* 60: 3 */ "morekeys_swiss_row2_10",
+ /* 61: 3 */ "morekeys_swiss_row2_11",
+ /* 62: 3 */ "morekeys_star",
+ /* 63: 3 */ "keyspec_left_parenthesis",
+ /* 64: 3 */ "keyspec_right_parenthesis",
+ /* 65: 3 */ "keyspec_left_square_bracket",
+ /* 66: 3 */ "keyspec_right_square_bracket",
+ /* 67: 3 */ "keyspec_left_curly_bracket",
+ /* 68: 3 */ "keyspec_right_curly_bracket",
+ /* 69: 3 */ "keyspec_less_than",
+ /* 70: 3 */ "keyspec_greater_than",
+ /* 71: 3 */ "keyspec_less_than_equal",
+ /* 72: 3 */ "keyspec_greater_than_equal",
+ /* 73: 3 */ "keyspec_left_double_angle_quote",
+ /* 74: 3 */ "keyspec_right_double_angle_quote",
+ /* 75: 3 */ "keyspec_left_single_angle_quote",
+ /* 76: 3 */ "keyspec_right_single_angle_quote",
+ /* 77: 3 */ "morekeys_tablet_comma",
+ /* 78: 3 */ "keyhintlabel_period",
+ /* 79: 3 */ "morekeys_tablet_period",
+ /* 80: 3 */ "morekeys_question",
+ /* 81: 2 */ "morekeys_h",
+ /* 82: 2 */ "morekeys_w",
+ /* 83: 2 */ "morekeys_east_slavic_row2_2",
+ /* 84: 2 */ "morekeys_cyrillic_u",
+ /* 85: 2 */ "morekeys_cyrillic_en",
+ /* 86: 2 */ "morekeys_cyrillic_ghe",
+ /* 87: 2 */ "morekeys_cyrillic_o",
+ /* 88: 2 */ "morekeys_cyrillic_i",
+ /* 89: 2 */ "keyspec_south_slavic_row1_6",
+ /* 90: 2 */ "keyspec_south_slavic_row2_11",
+ /* 91: 2 */ "keyspec_south_slavic_row3_1",
+ /* 92: 2 */ "keyspec_south_slavic_row3_8",
+ /* 93: 2 */ "morekeys_tablet_punctuation",
+ /* 94: 2 */ "keyspec_spanish_row2_10",
+ /* 95: 2 */ "morekeys_bullet",
+ /* 96: 2 */ "morekeys_left_parenthesis",
+ /* 97: 2 */ "morekeys_right_parenthesis",
+ /* 98: 2 */ "morekeys_arabic_diacritics",
+ /* 99: 2 */ "keyspec_comma",
+ /* 100: 2 */ "keyhintlabel_tablet_comma",
+ /* 101: 2 */ "keyspec_period",
+ /* 102: 2 */ "morekeys_period",
+ /* 103: 2 */ "keyspec_tablet_period",
+ /* 104: 2 */ "keyhintlabel_tablet_period",
+ /* 105: 2 */ "keyspec_symbols_question",
+ /* 106: 2 */ "keyspec_symbols_semicolon",
+ /* 107: 2 */ "keyspec_symbols_percent",
+ /* 108: 2 */ "morekeys_symbols_semicolon",
+ /* 109: 2 */ "morekeys_symbols_percent",
+ /* 110: 1 */ "morekeys_v",
+ /* 111: 1 */ "morekeys_j",
+ /* 112: 1 */ "morekeys_q",
+ /* 113: 1 */ "morekeys_x",
+ /* 114: 1 */ "keyspec_q",
+ /* 115: 1 */ "keyspec_w",
+ /* 116: 1 */ "keyspec_y",
+ /* 117: 1 */ "keyspec_x",
+ /* 118: 1 */ "morekeys_east_slavic_row2_11",
+ /* 119: 1 */ "morekeys_cyrillic_ka",
+ /* 120: 1 */ "morekeys_cyrillic_a",
+ /* 121: 1 */ "morekeys_currency_dollar",
+ /* 122: 1 */ "morekeys_plus",
+ /* 123: 1 */ "morekeys_less_than",
+ /* 124: 1 */ "morekeys_greater_than",
/* 125: 1 */ "morekeys_exclamation",
/* 126: 0 */ "morekeys_currency",
/* 127: 0 */ "morekeys_symbols_1",
@@ -278,6 +278,7 @@ public final class KeyboardTextsTable {
/* morekeys_r ~ */
EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
/* ~ morekeys_nordic_row2_11 */
+ /* morekeys_punctuation */ "!autoColumnOrder!8,\\,,?,!,#,!text/keyspec_right_parenthesis,!text/keyspec_left_parenthesis,/,;,',@,:,-,\",+,\\%,&",
/* keyspec_symbols_1 */ "1",
/* keyspec_symbols_2 */ "2",
/* keyspec_symbols_3 */ "3",
@@ -291,10 +292,12 @@ public final class KeyboardTextsTable {
// Label for "switch to symbols" key.
/* keylabel_to_symbol */ "?123",
/* additional_morekeys_symbols_1 ~ */
- EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
- EMPTY, EMPTY, EMPTY,
+ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
+ /* ~ additional_morekeys_symbols_0 */
+ /* keyspec_tablet_comma */ ",",
+ /* keyspec_swiss_row1_11 ~ */
+ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
/* ~ morekeys_swiss_row2_11 */
- /* morekeys_punctuation */ "!autoColumnOrder!8,\\,,?,!,#,!text/keyspec_right_parenthesis,!text/keyspec_left_parenthesis,/,;,',@,:,-,\",+,\\%,&",
// U+2020: "†" DAGGER
// U+2021: "‡" DOUBLE DAGGER
// U+2605: "★" BLACK STAR
@@ -321,13 +324,15 @@ public final class KeyboardTextsTable {
/* keyspec_right_double_angle_quote */ "\u00BB",
/* keyspec_left_single_angle_quote */ "\u2039",
/* keyspec_right_single_angle_quote */ "\u203A",
- /* keyspec_tablet_comma */ ",",
+ /* morekeys_tablet_comma */ EMPTY,
+ /* keyhintlabel_period */ EMPTY,
/* morekeys_tablet_period */ "!text/morekeys_tablet_punctuation",
// U+00BF: "¿" INVERTED QUESTION MARK
/* morekeys_question */ "\u00BF",
/* morekeys_h ~ */
EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
/* ~ keyspec_south_slavic_row3_8 */
+ /* morekeys_tablet_punctuation */ "!autoColumnOrder!7,\\,,',#,!text/keyspec_right_parenthesis,!text/keyspec_left_parenthesis,/,;,@,:,-,\",+,\\%,&",
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
/* keyspec_spanish_row2_10 */ "\u00F1",
// U+266A: "♪" EIGHTH NOTE
@@ -341,10 +346,11 @@ public final class KeyboardTextsTable {
/* morekeys_arabic_diacritics */ EMPTY,
// Comma key
/* keyspec_comma */ ",",
- /* keyhintlabel_tablet_comma ~ */
- EMPTY, EMPTY, EMPTY,
- /* ~ keyhintlabel_period */
+ /* keyhintlabel_tablet_comma */ EMPTY,
+ // Period key
+ /* keyspec_period */ ".",
/* morekeys_period */ "!text/morekeys_punctuation",
+ /* keyspec_tablet_period */ ".",
/* keyhintlabel_tablet_period */ EMPTY,
/* keyspec_symbols_question */ "?",
/* keyspec_symbols_semicolon */ ";",
@@ -368,14 +374,10 @@ public final class KeyboardTextsTable {
// U+00A5: "¥" YEN SIGN
// U+20B1: "₱" PESO SIGN
/* morekeys_currency_dollar */ "\u00A2,\u00A3,\u20AC,\u00A5,\u20B1",
- /* morekeys_tablet_punctuation */ "!autoColumnOrder!7,\\,,',#,!text/keyspec_right_parenthesis,!text/keyspec_left_parenthesis,/,;,@,:,-,\",+,\\%,&",
// U+00B1: "±" PLUS-MINUS SIGN
/* morekeys_plus */ "\u00B1",
/* morekeys_less_than */ "!fixedColumnOrder!3,!text/keyspec_left_single_angle_quote,!text/keyspec_less_than_equal,!text/keyspec_left_double_angle_quote",
/* morekeys_greater_than */ "!fixedColumnOrder!3,!text/keyspec_right_single_angle_quote,!text/keyspec_greater_than_equal,!text/keyspec_right_double_angle_quote",
- // Period key
- /* keyspec_period */ ".",
- /* keyspec_tablet_period */ ".",
// U+00A1: "¡" INVERTED EXCLAMATION MARK
/* morekeys_exclamation */ "\u00A1",
/* morekeys_currency */ "$,\u00A2,\u20AC,\u00A3,\u00A5,\u20B1",
@@ -534,8 +536,8 @@ public final class KeyboardTextsTable {
/* keylabel_to_alpha */ "\u0623\u200C\u0628\u200C\u062C",
/* morekeys_s ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null, null,
- /* ~ morekeys_nordic_row2_11 */
+ null, null, null, null, null, null, null, null, null,
+ /* ~ morekeys_punctuation */
// U+0661: "١" ARABIC-INDIC DIGIT ONE
/* keyspec_symbols_1 */ "\u0661",
// U+0662: "٢" ARABIC-INDIC DIGIT TWO
@@ -571,9 +573,13 @@ public final class KeyboardTextsTable {
// U+066B: "٫" ARABIC DECIMAL SEPARATOR
// U+066C: "٬" ARABIC THOUSANDS SEPARATOR
/* additional_morekeys_symbols_0 */ "0,\u066B,\u066C",
+ // U+061F: "؟" ARABIC QUESTION MARK
+ // U+060C: "،" ARABIC COMMA
+ // U+061B: "؛" ARABIC SEMICOLON
+ /* keyspec_tablet_comma */ "\u060C",
/* keyspec_swiss_row1_11 ~ */
- null, null, null, null, null, null, null,
- /* ~ morekeys_punctuation */
+ null, null, null, null, null, null,
+ /* ~ morekeys_swiss_row2_11 */
// U+2605: "★" BLACK STAR
// U+066D: "٭" ARABIC FIVE POINTED STAR
/* morekeys_star */ "\u2605,\u066D",
@@ -597,15 +603,14 @@ public final class KeyboardTextsTable {
/* keyspec_right_double_angle_quote */ "\u00BB|\u00AB",
/* keyspec_left_single_angle_quote */ "\u2039|\u203A",
/* keyspec_right_single_angle_quote */ "\u203A|\u2039",
- // U+061F: "؟" ARABIC QUESTION MARK
- // U+060C: "،" ARABIC COMMA
- // U+061B: "؛" ARABIC SEMICOLON
- /* keyspec_tablet_comma */ "\u060C",
+ /* morekeys_tablet_comma */ "!fixedColumnOrder!4,:,!,\u061F,\u061B,-,/,\",\'",
+ // U+0651: "ّ" ARABIC SHADDA
+ /* keyhintlabel_period */ "\u0651",
/* morekeys_tablet_period */ "!text/morekeys_arabic_diacritics",
// U+00BF: "¿" INVERTED QUESTION MARK
/* morekeys_question */ "?,\u00BF",
/* morekeys_h ~ */
- null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null,
/* ~ keyspec_spanish_row2_10 */
// U+266A: "♪" EIGHTH NOTE
/* morekeys_bullet */ "\u266A",
@@ -635,10 +640,9 @@ public final class KeyboardTextsTable {
// U+060C: "،" ARABIC COMMA
/* keyspec_comma */ "\u060C",
/* keyhintlabel_tablet_comma */ "\u061F",
- /* morekeys_tablet_comma */ "!fixedColumnOrder!4,:,!,\u061F,\u061B,-,/,\",\'",
- // U+0651: "ّ" ARABIC SHADDA
- /* keyhintlabel_period */ "\u0651",
+ /* keyspec_period */ null,
/* morekeys_period */ "!text/morekeys_arabic_diacritics",
+ /* keyspec_tablet_period */ null,
/* keyhintlabel_tablet_period */ "\u0651",
/* keyspec_symbols_question */ "\u061F",
/* keyspec_symbols_semicolon */ "\u061B",
@@ -806,22 +810,19 @@ public final class KeyboardTextsTable {
/* morekeys_l */ "l\u00B7l,\u0142",
/* morekeys_g ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- /* ~ morekeys_swiss_row2_11 */
+ null, null,
+ /* ~ morekeys_nordic_row2_11 */
// U+00B7: "·" MIDDLE DOT
/* morekeys_punctuation */ "!autoColumnOrder!9,\\,,?,!,\u00B7,#,),(,/,;,',@,:,-,\",+,\\%,&",
- /* morekeys_star ~ */
+ /* keyspec_symbols_1 ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, 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_south_slavic_row3_8 */
+ /* morekeys_tablet_punctuation */ "!autoColumnOrder!8,\\,,',\u00B7,#,),(,/,;,@,:,-,\",+,\\%,&",
// U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
/* keyspec_spanish_row2_10 */ "\u00E7",
- /* morekeys_bullet ~ */
- null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null, null, null, null, null, null,
- /* ~ morekeys_currency_dollar */
- /* morekeys_tablet_punctuation */ "!autoColumnOrder!8,\\,,',\u00B7,#,),(,/,;,@,:,-,\",+,\\%,&",
};
/* Locale cs: Czech */
@@ -1023,8 +1024,8 @@ public final class KeyboardTextsTable {
/* keyspec_currency ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null,
- /* ~ additional_morekeys_symbols_0 */
+ null, null, null, null, null, null, null,
+ /* ~ keyspec_tablet_comma */
// U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
/* keyspec_swiss_row1_11 */ "\u00FC",
// U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
@@ -1218,7 +1219,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, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null,
/* ~ morekeys_question */
// U+0125: "ĥ" LATIN SMALL LETTER H WITH CIRCUMFLEX
// U+0127: "ħ" LATIN SMALL LETTER H WITH STROKE
@@ -1226,8 +1227,8 @@ public final class KeyboardTextsTable {
// U+0175: "ŵ" LATIN SMALL LETTER W WITH CIRCUMFLEX
/* morekeys_w */ "w,\u0175",
/* morekeys_east_slavic_row2_2 ~ */
- null, null, null, null, null, null, null, null, null, null,
- /* ~ keyspec_south_slavic_row3_8 */
+ null, null, null, null, null, null, null, null, null, null, null,
+ /* ~ morekeys_tablet_punctuation */
// U+0135: "ĵ" LATIN SMALL LETTER J WITH CIRCUMFLEX
/* keyspec_spanish_row2_10 */ "\u0135",
/* morekeys_bullet ~ */
@@ -1302,10 +1303,8 @@ public final class KeyboardTextsTable {
/* morekeys_n */ "\u00F1,\u0144",
/* single_quotes ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null,
- /* ~ morekeys_swiss_row2_11 */
+ null, null, null, null, null, null, null, null, null, null,
+ /* ~ morekeys_nordic_row2_11 */
// U+00A1: "¡" INVERTED EXCLAMATION MARK
// U+00BF: "¿" INVERTED QUESTION MARK
/* morekeys_punctuation */ "!autoColumnOrder!9,\\,,?,!,#,),(,/,;,\u00A1,',@,:,-,\",+,\\%,&,\u00BF",
@@ -1485,8 +1484,8 @@ public final class KeyboardTextsTable {
// U+FDFC: "﷼" RIAL SIGN
/* keyspec_currency */ "\uFDFC",
/* morekeys_r ~ */
- null, null, null, null, null, null, null, null, null, null, null, null, null,
- /* ~ morekeys_nordic_row2_11 */
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ /* ~ morekeys_punctuation */
// U+06F1: "۱" EXTENDED ARABIC-INDIC DIGIT ONE
/* keyspec_symbols_1 */ "\u06F1",
// U+06F2: "۲" EXTENDED ARABIC-INDIC DIGIT TWO
@@ -1522,9 +1521,15 @@ public final class KeyboardTextsTable {
// U+066B: "٫" ARABIC DECIMAL SEPARATOR
// U+066C: "٬" ARABIC THOUSANDS SEPARATOR
/* additional_morekeys_symbols_0 */ "0,\u066B,\u066C",
+ // U+060C: "،" ARABIC COMMA
+ // U+061B: "؛" ARABIC SEMICOLON
+ // U+061F: "؟" ARABIC QUESTION MARK
+ // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ /* keyspec_tablet_comma */ "\u060C",
/* keyspec_swiss_row1_11 ~ */
- null, null, null, null, null, null, null,
- /* ~ morekeys_punctuation */
+ null, null, null, null, null, null,
+ /* ~ morekeys_swiss_row2_11 */
// U+2605: "★" BLACK STAR
// U+066D: "٭" ARABIC FIVE POINTED STAR
/* morekeys_star */ "\u2605,\u066D",
@@ -1542,17 +1547,14 @@ public final class KeyboardTextsTable {
/* keyspec_right_double_angle_quote */ "\u00BB|\u00AB",
/* keyspec_left_single_angle_quote */ "\u2039|\u203A",
/* keyspec_right_single_angle_quote */ "\u203A|\u2039",
- // U+060C: "،" ARABIC COMMA
- // U+061B: "؛" ARABIC SEMICOLON
- // U+061F: "؟" ARABIC QUESTION MARK
- // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
- // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
- /* keyspec_tablet_comma */ "\u060C",
+ /* morekeys_tablet_comma */ "!fixedColumnOrder!4,:,!,\u061F,\u061B,-,/,!text/keyspec_left_double_angle_quote,!text/keyspec_right_double_angle_quote",
+ // U+064B: "ً" ARABIC FATHATAN
+ /* keyhintlabel_period */ "\u064B",
/* morekeys_tablet_period */ "!text/morekeys_arabic_diacritics",
// U+00BF: "¿" INVERTED QUESTION MARK
/* morekeys_question */ "?,\u00BF",
/* morekeys_h ~ */
- null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null,
/* ~ keyspec_spanish_row2_10 */
// U+266A: "♪" EIGHTH NOTE
/* morekeys_bullet */ "\u266A",
@@ -1582,10 +1584,9 @@ public final class KeyboardTextsTable {
// U+060C: "،" ARABIC COMMA
/* keyspec_comma */ "\u060C",
/* keyhintlabel_tablet_comma */ "\u061F",
- /* morekeys_tablet_comma */ "!fixedColumnOrder!4,:,!,\u061F,\u061B,-,/,!text/keyspec_left_double_angle_quote,!text/keyspec_right_double_angle_quote",
- // U+064B: "ً" ARABIC FATHATAN
- /* keyhintlabel_period */ "\u064B",
+ /* keyspec_period */ null,
/* morekeys_period */ "!text/morekeys_arabic_diacritics",
+ /* keyspec_tablet_period */ null,
/* keyhintlabel_tablet_period */ "\u064B",
/* keyspec_symbols_question */ "\u061F",
/* keyspec_symbols_semicolon */ "\u061B",
@@ -1595,7 +1596,7 @@ public final class KeyboardTextsTable {
// U+2030: "‰" PER MILLE SIGN
/* morekeys_symbols_percent */ "\\%,\u2030",
/* morekeys_v ~ */
- null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null, null, null,
/* ~ morekeys_plus */
// U+2264: "≤" LESS-THAN OR EQUAL TO
// U+2265: "≥" GREATER-THAN EQUAL TO
@@ -1712,8 +1713,8 @@ public final class KeyboardTextsTable {
/* morekeys_d ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null, null, null, null, null, null,
- /* ~ additional_morekeys_symbols_0 */
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ /* ~ keyspec_tablet_comma */
// U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
/* keyspec_swiss_row1_11 */ "\u00E8",
// U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
@@ -1798,8 +1799,8 @@ public final class KeyboardTextsTable {
// U+20B9: "₹" INDIAN RUPEE SIGN
/* keyspec_currency */ "\u20B9",
/* morekeys_r ~ */
- null, null, null, null, null, null, null, null, null, null, null, null, null,
- /* ~ morekeys_nordic_row2_11 */
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ /* ~ morekeys_punctuation */
// U+0967: "१" DEVANAGARI DIGIT ONE
/* keyspec_symbols_1 */ "\u0967",
// U+0968: "२" DEVANAGARI DIGIT TWO
@@ -1933,10 +1934,8 @@ public final class KeyboardTextsTable {
/* keylabel_to_alpha */ "\u0531\u0532\u0533",
/* morekeys_s ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null,
- /* ~ morekeys_swiss_row2_11 */
+ null, null, null, null, null, null, null, null,
+ /* ~ morekeys_nordic_row2_11 */
// U+055E: "՞" ARMENIAN QUESTION MARK
// U+055C: "՜" ARMENIAN EXCLAMATION MARK
// U+055A: "՚" ARMENIAN APOSTROPHE
@@ -1948,27 +1947,36 @@ public final class KeyboardTextsTable {
// U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
// U+055F: "՟" ARMENIAN ABBREVIATION MARK
/* morekeys_punctuation */ "!autoColumnOrder!8,\\,,\u055E,\u055C,.,\u055A,\u0559,?,!,\u055D,\u055B,\u058A,\u00BB,\u00AB,\u055F,;,:",
- /* morekeys_star ~ */
+ /* keyspec_symbols_1 ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- /* ~ keyspec_right_single_angle_quote */
+ null, null, null, null, null, null,
+ /* ~ additional_morekeys_symbols_0 */
// U+058F: "֏" ARMENIAN DRAM SIGN
// TODO: Enable this when we have glyph for the following letter
// <string name="keyspec_currency">&#x058F;</string>
//
// U+055D: "՝" ARMENIAN COMMA
/* keyspec_tablet_comma */ "\u055D",
+ /* keyspec_swiss_row1_11 ~ */
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null,
+ /* ~ keyhintlabel_period */
/* morekeys_tablet_period */ "!text/morekeys_punctuation",
// U+055E: "՞" ARMENIAN QUESTION MARK
// U+00BF: "¿" INVERTED QUESTION MARK
/* morekeys_question */ "\u055E,\u00BF",
/* morekeys_h ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- /* ~ morekeys_greater_than */
+ null, null, null, null, null,
+ /* ~ keyhintlabel_tablet_comma */
// U+0589: "։" ARMENIAN FULL STOP
/* keyspec_period */ "\u0589",
+ /* morekeys_period */ null,
/* keyspec_tablet_period */ "\u0589",
+ /* keyhintlabel_tablet_period ~ */
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null,
+ /* ~ morekeys_greater_than */
// U+055C: "՜" ARMENIAN EXCLAMATION MARK
// U+00A1: "¡" INVERTED EXCLAMATION MARK
/* morekeys_exclamation */ "\u055C,\u00A1",
@@ -2078,8 +2086,8 @@ 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, null, null, null, null, null, null, null, null, null,
- null, null, null, null,
- /* ~ additional_morekeys_symbols_0 */
+ null, null, null, null, null, null,
+ /* ~ keyspec_tablet_comma */
// U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
/* keyspec_swiss_row1_11 */ "\u00FC",
// U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
@@ -2115,8 +2123,8 @@ public final class KeyboardTextsTable {
/* morekeys_r ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null, null, null, null, null,
- /* ~ morekeys_punctuation */
+ null, null, null, null, null, null, null, null, null, null, null, null,
+ /* ~ morekeys_swiss_row2_11 */
// U+2605: "★" BLACK STAR
/* morekeys_star */ "\u2605",
// The all letters need to be mirrored are found at
@@ -2141,11 +2149,11 @@ public final class KeyboardTextsTable {
/* keyspec_right_double_angle_quote */ "\u00BB|\u00AB",
/* keyspec_left_single_angle_quote */ "\u2039|\u203A",
/* keyspec_right_single_angle_quote */ "\u203A|\u2039",
- /* keyspec_tablet_comma ~ */
+ /* morekeys_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,
- /* ~ morekeys_tablet_punctuation */
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ /* ~ morekeys_currency_dollar */
// U+00B1: "±" PLUS-MINUS SIGN
// U+FB29: "﬩" HEBREW LETTER ALTERNATIVE PLUS SIGN
/* morekeys_plus */ "\u00B1,\uFB29",
@@ -2198,7 +2206,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, null, null, null, null, null, null, null, null, null,
- null, null, null, null,
+ null, null, null, null, null, null,
/* ~ morekeys_w */
// U+0456: "і" CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
/* morekeys_east_slavic_row2_2 */ "\u0456",
@@ -2213,7 +2221,7 @@ public final class KeyboardTextsTable {
/* morekeys_cyrillic_o */ "\u04E9",
/* morekeys_cyrillic_i ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
/* ~ keyspec_x */
// U+04BB: "һ" CYRILLIC SMALL LETTER SHHA
/* morekeys_east_slavic_row2_11 */ "\u04BB",
@@ -2241,7 +2249,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, null, null, null, null, null, null, null, null, null,
- null, null, null,
+ null, null, null, null, null, null,
/* ~ morekeys_cyrillic_a */
// U+17DB: "៛" KHMER CURRENCY SYMBOL RIEL
/* morekeys_currency_dollar */ "\u17DB,\u00A2,\u00A3,\u20AC,\u00A5,\u20B1",
@@ -2279,7 +2287,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, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null,
+ null, null, null, null, null, null, null,
/* ~ morekeys_east_slavic_row2_2 */
// U+04AF: "ү" CYRILLIC SMALL LETTER STRAIGHT U
/* morekeys_cyrillic_u */ "\u04AF",
@@ -2519,7 +2527,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, null, null, null, null, null, null, null, null, null,
- null, null, null,
+ null, null, null, null, null,
/* ~ morekeys_cyrillic_o */
// U+045D: "ѝ" CYRILLIC SMALL LETTER I WITH GRAVE
/* morekeys_cyrillic_i */ "\u045D",
@@ -2560,6 +2568,34 @@ public final class KeyboardTextsTable {
// U+1001: "ခ" MYANMAR LETTER KHA
// U+1002: "ဂ" MYANMAR LETTER GA
/* keylabel_to_alpha */ "\u1000\u1001\u1002",
+ /* morekeys_s ~ */
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null,
+ /* ~ morekeys_nordic_row2_11 */
+ /* morekeys_punctuation */ "!autoColumnOrder!9,\u104A,.,?,!,#,),(,/,;,...,',@,:,-,\",+,\\%,&",
+ /* keyspec_symbols_1 ~ */
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null,
+ /* ~ additional_morekeys_symbols_0 */
+ // U+104A: "၊" MYANMAR SIGN LITTLE SECTION
+ // U+104B: "။" MYANMAR SIGN SECTION
+ /* keyspec_tablet_comma */ "\u104A",
+ /* keyspec_swiss_row1_11 ~ */
+ 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 */
+ /* morekeys_tablet_comma */ "\\,",
+ /* keyhintlabel_period */ "\u104A",
+ /* morekeys_tablet_period ~ */
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ /* ~ keyspec_south_slavic_row3_8 */
+ /* morekeys_tablet_punctuation */ "!autoColumnOrder!8,.,',#,),(,/,;,@,...,:,-,\",+,\\%,&",
+ /* keyspec_spanish_row2_10 ~ */
+ null, null, null, null, null, null, null,
+ /* ~ keyhintlabel_tablet_comma */
+ /* keyspec_period */ "\u104B",
+ /* morekeys_period */ null,
+ /* keyspec_tablet_period */ "\u104B",
};
/* Locale nb: Norwegian Bokmål */
@@ -2632,8 +2668,8 @@ public final class KeyboardTextsTable {
// U+0930/U+0941/U+002E "रु." NEPALESE RUPEE SIGN
/* keyspec_currency */ "\u0930\u0941.",
/* morekeys_r ~ */
- null, null, null, null, null, null, null, null, null, null, null, null, null,
- /* ~ morekeys_nordic_row2_11 */
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ /* ~ morekeys_punctuation */
// U+0967: "१" DEVANAGARI DIGIT ONE
/* keyspec_symbols_1 */ "\u0967",
// U+0968: "२" DEVANAGARI DIGIT TWO
@@ -3061,7 +3097,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, null, null, null, null, null, null, null, null, null,
- null, null, null,
+ null, null, null, null, null,
/* ~ morekeys_cyrillic_o */
// U+045D: "ѝ" CYRILLIC SMALL LETTER I WITH GRAVE
/* morekeys_cyrillic_i */ "\u045D",
@@ -3386,7 +3422,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, null, null, null, null, null, null, null, null, null,
- null, null, null, null,
+ null, null, null, null, null, null,
/* ~ morekeys_w */
// U+0457: "ї" CYRILLIC SMALL LETTER YI
/* morekeys_east_slavic_row2_2 */ "\u0457",
@@ -3656,7 +3692,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, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null,
/* ~ morekeys_question */
// U+0125: "ĥ" LATIN SMALL LETTER H WITH CIRCUMFLEX
/* morekeys_h */ "\u0125",
@@ -3664,7 +3700,7 @@ public final class KeyboardTextsTable {
/* morekeys_w */ "\u0175",
/* morekeys_east_slavic_row2_2 ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null, null, null,
/* ~ morekeys_v */
// U+0135: "ĵ" LATIN SMALL LETTER J WITH CIRCUMFLEX
/* morekeys_j */ "\u0135",
@@ -3674,43 +3710,43 @@ public final class KeyboardTextsTable {
// "locale", TEXT_ARRAY, /* numberOfNonNullText/lengthOf_TEXT_ARRAY localeName */
"DEFAULT", TEXTS_DEFAULT, /* 168/168 DEFAULT */
"af" , TEXTS_af, /* 7/ 12 Afrikaans */
- "ar" , TEXTS_ar, /* 55/107 Arabic */
+ "ar" , TEXTS_ar, /* 55/110 Arabic */
"az_AZ" , TEXTS_az_AZ, /* 8/ 17 Azerbaijani (Azerbaijan) */
"be_BY" , TEXTS_be_BY, /* 9/ 32 Belarusian (Belarus) */
"bg" , TEXTS_bg, /* 2/ 10 Bulgarian */
- "ca" , TEXTS_ca, /* 11/120 Catalan */
+ "ca" , TEXTS_ca, /* 11/ 95 Catalan */
"cs" , TEXTS_cs, /* 17/ 21 Czech */
"da" , TEXTS_da, /* 19/ 33 Danish */
- "de" , TEXTS_de, /* 16/ 60 German */
+ "de" , TEXTS_de, /* 16/ 62 German */
"el" , TEXTS_el, /* 1/ 10 Greek */
"en" , TEXTS_en, /* 8/ 11 English */
- "eo" , TEXTS_eo, /* 26/115 Esperanto */
- "es" , TEXTS_es, /* 8/ 61 Spanish */
+ "eo" , TEXTS_eo, /* 26/118 Esperanto */
+ "es" , TEXTS_es, /* 8/ 34 Spanish */
"et_EE" , TEXTS_et_EE, /* 22/ 27 Estonian (Estonia) */
"eu_ES" , TEXTS_eu_ES, /* 7/ 8 Basque (Spain) */
- "fa" , TEXTS_fa, /* 58/123 Persian */
+ "fa" , TEXTS_fa, /* 58/125 Persian */
"fi" , TEXTS_fi, /* 10/ 33 Finnish */
- "fr" , TEXTS_fr, /* 13/ 60 French */
+ "fr" , TEXTS_fr, /* 13/ 62 French */
"gl_ES" , TEXTS_gl_ES, /* 7/ 8 Gallegan (Spain) */
- "hi" , TEXTS_hi, /* 23/ 54 Hindi */
+ "hi" , TEXTS_hi, /* 23/ 55 Hindi */
"hr" , TEXTS_hr, /* 9/ 19 Croatian */
"hu" , TEXTS_hu, /* 9/ 19 Hungarian */
"hy_AM" , TEXTS_hy_AM, /* 8/126 Armenian (Armenia) */
"is" , TEXTS_is, /* 10/ 15 Icelandic */
- "it" , TEXTS_it, /* 11/ 60 Italian */
- "iw" , TEXTS_iw, /* 20/121 Hebrew */
+ "it" , TEXTS_it, /* 11/ 62 Italian */
+ "iw" , TEXTS_iw, /* 20/123 Hebrew */
"ka_GE" , TEXTS_ka_GE, /* 3/ 10 Georgian (Georgia) */
- "kk" , TEXTS_kk, /* 15/118 Kazakh */
- "km_KH" , TEXTS_km_KH, /* 2/119 Khmer (Cambodia) */
- "ky" , TEXTS_ky, /* 10/ 86 Kirghiz */
+ "kk" , TEXTS_kk, /* 15/121 Kazakh */
+ "km_KH" , TEXTS_km_KH, /* 2/122 Khmer (Cambodia) */
+ "ky" , TEXTS_ky, /* 10/ 88 Kirghiz */
"lo_LA" , TEXTS_lo_LA, /* 2/ 20 Lao (Laos) */
"lt" , TEXTS_lt, /* 18/ 22 Lithuanian */
"lv" , TEXTS_lv, /* 18/ 22 Latvian */
- "mk" , TEXTS_mk, /* 9/ 91 Macedonian */
+ "mk" , TEXTS_mk, /* 9/ 93 Macedonian */
"mn_MN" , TEXTS_mn_MN, /* 2/ 20 Mongolian (Mongolia) */
- "my_MM" , TEXTS_my_MM, /* 1/ 10 Burmese (Myanmar) */
+ "my_MM" , TEXTS_my_MM, /* 8/104 Burmese (Myanmar) */
"nb" , TEXTS_nb, /* 11/ 33 Norwegian Bokmål */
- "ne_NP" , TEXTS_ne_NP, /* 23/ 54 Nepali (Nepal) */
+ "ne_NP" , TEXTS_ne_NP, /* 23/ 55 Nepali (Nepal) */
"nl" , TEXTS_nl, /* 9/ 12 Dutch */
"pl" , TEXTS_pl, /* 10/ 16 Polish */
"pt" , TEXTS_pt, /* 6/ 6 Portuguese */
@@ -3719,16 +3755,16 @@ public final class KeyboardTextsTable {
"ru" , TEXTS_ru, /* 9/ 32 Russian */
"sk" , TEXTS_sk, /* 20/ 22 Slovak */
"sl" , TEXTS_sl, /* 8/ 19 Slovenian */
- "sr" , TEXTS_sr, /* 11/ 91 Serbian */
+ "sr" , TEXTS_sr, /* 11/ 93 Serbian */
"sv" , TEXTS_sv, /* 21/ 33 Swedish */
"sw" , TEXTS_sw, /* 9/ 17 Swahili */
"th" , TEXTS_th, /* 2/ 20 Thai */
"tl" , TEXTS_tl, /* 7/ 8 Tagalog */
"tr" , TEXTS_tr, /* 7/ 17 Turkish */
- "uk" , TEXTS_uk, /* 11/ 85 Ukrainian */
+ "uk" , TEXTS_uk, /* 11/ 87 Ukrainian */
"vi" , TEXTS_vi, /* 8/ 20 Vietnamese */
"zu" , TEXTS_zu, /* 8/ 11 Zulu */
- "zz" , TEXTS_zz, /* 19/109 Alphabet */
+ "zz" , TEXTS_zz, /* 19/112 Alphabet */
};
static {
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 1f15a9759..0594c68cc 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -199,7 +199,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
latinIme.mSettings.getCurrent());
break;
case MSG_UPDATE_SHIFT_STATE:
- switcher.requestUpdatingShiftState();
+ switcher.requestUpdatingShiftState(latinIme.getCurrentAutoCapsState(),
+ latinIme.getCurrentRecapitalizeState());
break;
case MSG_SHOW_GESTURE_PREVIEW_AND_SUGGESTION_STRIP:
if (msg.arg1 == ARG1_NOT_GESTURE_INPUT) {
@@ -843,7 +844,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
// we need to re-evaluate the shift state, but not the whole layout which would be
// disruptive.
// Space state must be updated before calling updateShiftState
- switcher.requestUpdatingShiftState();
+ switcher.requestUpdatingShiftState(getCurrentAutoCapsState(),
+ getCurrentRecapitalizeState());
}
// This will set the punctuation suggestions if next word suggestion is off;
// otherwise it will clear the suggestion strip.
@@ -922,7 +924,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
// TODO: find a better way to simulate actual execution.
if (isInputViewShown() &&
mInputLogic.onUpdateSelection(oldSelStart, oldSelEnd, newSelStart, newSelEnd)) {
- mKeyboardSwitcher.requestUpdatingShiftState();
+ mKeyboardSwitcher.requestUpdatingShiftState(getCurrentAutoCapsState(),
+ getCurrentRecapitalizeState());
}
mSubtypeState.currentSubtypeUsed();
@@ -1266,7 +1269,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
// 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.requestUpdatingShiftState();
+ mKeyboardSwitcher.requestUpdatingShiftState(getCurrentAutoCapsState(),
+ getCurrentRecapitalizeState());
mKeyboardSwitcher.onCodeInput(Constants.CODE_OUTPUT_TEXT, getCurrentAutoCapsState());
}
@@ -1510,7 +1514,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
mHandler.postUpdateShiftState();
break;
case InputTransaction.SHIFT_UPDATE_NOW:
- mKeyboardSwitcher.requestUpdatingShiftState();
+ mKeyboardSwitcher.requestUpdatingShiftState(getCurrentAutoCapsState(),
+ getCurrentRecapitalizeState());
break;
default: // SHIFT_NO_UPDATE
}
diff --git a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
index 0754b1fa9..bf8467eb6 100644
--- a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
+++ b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
@@ -548,7 +548,8 @@ public final class InputLogic {
// after typing some letters and a period, then gesturing; the keyboard is not in
// caps mode yet, but since a gesture is starting, it should go in caps mode,
// unless the user explictly said it should not.
- keyboardSwitcher.requestUpdatingShiftState();
+ keyboardSwitcher.requestUpdatingShiftState(getCurrentAutoCapsState(settingsValues),
+ getCurrentRecapitalizeState());
}
}
mConnection.endBatchEdit();
@@ -590,7 +591,8 @@ public final class InputLogic {
promotePhantomSpace(settingsValues);
mConnection.commitText(commitParts[0], 0);
mSpaceState = SpaceState.PHANTOM;
- keyboardSwitcher.requestUpdatingShiftState();
+ keyboardSwitcher.requestUpdatingShiftState(
+ getCurrentAutoCapsState(settingsValues), getCurrentRecapitalizeState());
mWordComposer.setCapitalizedModeAndPreviousWordAtStartComposingTime(
getActualCapsMode(settingsValues,
keyboardSwitcher.getKeyboardShiftMode()), commitParts[0]);
@@ -1830,7 +1832,8 @@ public final class InputLogic {
}
// Space state must be updated before calling updateShiftState
mSpaceState = SpaceState.PHANTOM;
- keyboardSwitcher.requestUpdatingShiftState();
+ keyboardSwitcher.requestUpdatingShiftState(getCurrentAutoCapsState(settingsValues),
+ getCurrentRecapitalizeState());
}
/**
diff --git a/java/src/com/android/inputmethod/latin/utils/SpacebarLanguageUtils.java b/java/src/com/android/inputmethod/latin/utils/SpacebarLanguageUtils.java
index 89837c641..1ca895fdb 100644
--- a/java/src/com/android/inputmethod/latin/utils/SpacebarLanguageUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/SpacebarLanguageUtils.java
@@ -18,8 +18,6 @@ package com.android.inputmethod.latin.utils;
import android.view.inputmethod.InputMethodSubtype;
-import java.util.Locale;
-
public final class SpacebarLanguageUtils {
private SpacebarLanguageUtils() {
// Intentional empty constructor for utility class.
@@ -55,7 +53,6 @@ public final class SpacebarLanguageUtils {
if (SubtypeLocaleUtils.isNoLanguage(subtype)) {
return SubtypeLocaleUtils.getKeyboardLayoutSetDisplayName(subtype);
}
- final Locale locale = SubtypeLocaleUtils.getSubtypeLocale(subtype);
- return SubtypeLocaleUtils.getSubtypeLocaleDisplayName(locale.getLanguage());
+ return SubtypeLocaleUtils.getSubtypeLanguageDisplayName(subtype.getLocale());
}
}
diff --git a/java/src/com/android/inputmethod/latin/utils/SubtypeLocaleUtils.java b/java/src/com/android/inputmethod/latin/utils/SubtypeLocaleUtils.java
index 2452864d5..b37779bdc 100644
--- a/java/src/com/android/inputmethod/latin/utils/SubtypeLocaleUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/SubtypeLocaleUtils.java
@@ -25,7 +25,7 @@ import android.os.Build;
import android.util.Log;
import android.view.inputmethod.InputMethodSubtype;
-import com.android.inputmethod.latin.DictionaryFactory;
+import com.android.inputmethod.latin.Constants;
import com.android.inputmethod.latin.R;
import java.util.Arrays;
@@ -33,10 +33,10 @@ import java.util.HashMap;
import java.util.Locale;
public final class SubtypeLocaleUtils {
- static final String TAG = SubtypeLocaleUtils.class.getSimpleName();
- // This class must be located in the same package as LatinIME.java.
- private static final String RESOURCE_PACKAGE_NAME =
- DictionaryFactory.class.getPackage().getName();
+ private static final String TAG = SubtypeLocaleUtils.class.getSimpleName();
+
+ // This reference class {@link Constants} must be located in the same package as LatinIME.java.
+ private static final String RESOURCE_PACKAGE_NAME = Constants.class.getPackage().getName();
// Special language code to represent "no language".
public static final String NO_LANGUAGE = "zz";
@@ -44,7 +44,8 @@ public final class SubtypeLocaleUtils {
public static final String EMOJI = "emoji";
public static final int UNKNOWN_KEYBOARD_LAYOUT = R.string.subtype_generic;
- private static boolean sInitialized = false;
+ private static volatile boolean sInitialized = false;
+ private static final Object sInitializeLock = new Object();
private static Resources sResources;
private static String[] sPredefinedKeyboardLayoutSet;
// Keyboard layout to its display name map.
@@ -77,9 +78,16 @@ public final class SubtypeLocaleUtils {
}
// Note that this initialization method can be called multiple times.
- public static synchronized void init(final Context context) {
- if (sInitialized) return;
+ public static void init(final Context context) {
+ synchronized (sInitializeLock) {
+ if (sInitialized == false) {
+ initLocked(context);
+ sInitialized = true;
+ }
+ }
+ }
+ private static void initLocked(final Context context) {
final Resources res = context.getResources();
sResources = res;
@@ -122,8 +130,6 @@ public final class SubtypeLocaleUtils {
final String keyboardLayoutSet = keyboardLayoutSetMap[i + 1];
sLocaleAndExtraValueToKeyboardLayoutSetMap.put(key, keyboardLayoutSet);
}
-
- sInitialized = true;
}
public static String[] getPredefinedKeyboardLayoutSet() {
@@ -167,8 +173,18 @@ public final class SubtypeLocaleUtils {
return getSubtypeLocaleDisplayNameInternal(localeString, displayLocale);
}
+ public static String getSubtypeLanguageDisplayName(final String localeString) {
+ final Locale locale = LocaleUtils.constructLocaleFromString(localeString);
+ final Locale displayLocale = getDisplayLocaleOfSubtypeLocale(localeString);
+ return getSubtypeLocaleDisplayNameInternal(locale.getLanguage(), displayLocale);
+ }
+
private static String getSubtypeLocaleDisplayNameInternal(final String localeString,
final Locale displayLocale) {
+ if (NO_LANGUAGE.equals(localeString)) {
+ // No language subtype should be displayed in system locale.
+ return sResources.getString(R.string.subtype_no_language);
+ }
final Integer exceptionalNameResId = sExceptionalLocaleToNameIdsMap.get(localeString);
final String displayName;
if (exceptionalNameResId != null) {
@@ -179,9 +195,6 @@ public final class SubtypeLocaleUtils {
}
};
displayName = getExceptionalName.runInLocale(sResources, displayLocale);
- } else if (NO_LANGUAGE.equals(localeString)) {
- // No language subtype should be displayed in system locale.
- return sResources.getString(R.string.subtype_no_language);
} else {
final Locale locale = LocaleUtils.constructLocaleFromString(localeString);
displayName = locale.getDisplayName(displayLocale);
diff --git a/native/jni/src/suggest/core/dictionary/multi_bigram_map.cpp b/native/jni/src/suggest/core/dictionary/multi_bigram_map.cpp
index 49d82e69a..105224126 100644
--- a/native/jni/src/suggest/core/dictionary/multi_bigram_map.cpp
+++ b/native/jni/src/suggest/core/dictionary/multi_bigram_map.cpp
@@ -17,6 +17,7 @@
#include "suggest/core/dictionary/multi_bigram_map.h"
#include <cstddef>
+#include <unordered_map>
namespace latinime {
@@ -35,7 +36,7 @@ const int MultiBigramMap::BigramMap::DEFAULT_HASH_MAP_SIZE_FOR_EACH_BIGRAM_MAP =
int MultiBigramMap::getBigramProbability(
const DictionaryStructureWithBufferPolicy *const structurePolicy,
const int wordPosition, const int nextWordPosition, const int unigramProbability) {
- hash_map_compat<int, BigramMap>::const_iterator mapPosition =
+ std::unordered_map<int, BigramMap>::const_iterator mapPosition =
mBigramMaps.find(wordPosition);
if (mapPosition != mBigramMaps.end()) {
return mapPosition->second.getBigramProbability(structurePolicy, nextWordPosition,
@@ -70,7 +71,7 @@ int MultiBigramMap::BigramMap::getBigramProbability(
const int nextWordPosition, const int unigramProbability) const {
int bigramProbability = NOT_A_PROBABILITY;
if (mBloomFilter.isInFilter(nextWordPosition)) {
- const hash_map_compat<int, int>::const_iterator bigramProbabilityIt =
+ const std::unordered_map<int, int>::const_iterator bigramProbabilityIt =
mBigramMap.find(nextWordPosition);
if (bigramProbabilityIt != mBigramMap.end()) {
bigramProbability = bigramProbabilityIt->second;
diff --git a/native/jni/src/suggest/core/dictionary/multi_bigram_map.h b/native/jni/src/suggest/core/dictionary/multi_bigram_map.h
index 421b2681c..195b5e22f 100644
--- a/native/jni/src/suggest/core/dictionary/multi_bigram_map.h
+++ b/native/jni/src/suggest/core/dictionary/multi_bigram_map.h
@@ -18,12 +18,12 @@
#define LATINIME_MULTI_BIGRAM_MAP_H
#include <cstddef>
+#include <unordered_map>
#include "defines.h"
#include "suggest/core/dictionary/binary_dictionary_bigrams_iterator.h"
#include "suggest/core/dictionary/bloom_filter.h"
#include "suggest/core/policy/dictionary_structure_with_buffer_policy.h"
-#include "utils/hash_map_compat.h"
namespace latinime {
@@ -63,7 +63,7 @@ class MultiBigramMap {
// NOTE: The BigramMap class doesn't use DISALLOW_COPY_AND_ASSIGN() because its default
// copy constructor is needed for use in hash_map.
static const int DEFAULT_HASH_MAP_SIZE_FOR_EACH_BIGRAM_MAP;
- hash_map_compat<int, int> mBigramMap;
+ std::unordered_map<int, int> mBigramMap;
BloomFilter mBloomFilter;
};
@@ -75,7 +75,7 @@ class MultiBigramMap {
const int nextWordPosition, const int unigramProbability);
static const size_t MAX_CACHED_PREV_WORDS_IN_BIGRAM_MAP;
- hash_map_compat<int, BigramMap> mBigramMaps;
+ std::unordered_map<int, BigramMap> mBigramMaps;
};
} // namespace latinime
#endif // LATINIME_MULTI_BIGRAM_MAP_H
diff --git a/native/jni/src/suggest/core/layout/proximity_info.h b/native/jni/src/suggest/core/layout/proximity_info.h
index b72c29394..56711d1ff 100644
--- a/native/jni/src/suggest/core/layout/proximity_info.h
+++ b/native/jni/src/suggest/core/layout/proximity_info.h
@@ -17,10 +17,11 @@
#ifndef LATINIME_PROXIMITY_INFO_H
#define LATINIME_PROXIMITY_INFO_H
+#include <unordered_map>
+
#include "defines.h"
#include "jni.h"
#include "suggest/core/layout/proximity_info_utils.h"
-#include "utils/hash_map_compat.h"
namespace latinime {
@@ -114,7 +115,7 @@ class ProximityInfo {
// Sweet spots for geometric input. Note that we have extra sweet spots only for Y coordinates.
float mSweetSpotCenterYsG[MAX_KEY_COUNT_IN_A_KEYBOARD];
float mSweetSpotRadii[MAX_KEY_COUNT_IN_A_KEYBOARD];
- hash_map_compat<int, int> mLowerCodePointToKeyMap;
+ std::unordered_map<int, int> mLowerCodePointToKeyMap;
int mKeyIndexToOriginalCodePoint[MAX_KEY_COUNT_IN_A_KEYBOARD];
int mKeyIndexToLowerCodePointG[MAX_KEY_COUNT_IN_A_KEYBOARD];
int mCenterXsG[MAX_KEY_COUNT_IN_A_KEYBOARD];
diff --git a/native/jni/src/suggest/core/layout/proximity_info_state.cpp b/native/jni/src/suggest/core/layout/proximity_info_state.cpp
index e585f9088..91469e26d 100644
--- a/native/jni/src/suggest/core/layout/proximity_info_state.cpp
+++ b/native/jni/src/suggest/core/layout/proximity_info_state.cpp
@@ -21,6 +21,7 @@
#include <algorithm>
#include <cstring> // for memset() and memmove()
#include <sstream> // for debug prints
+#include <unordered_map>
#include <vector>
#include "defines.h"
@@ -296,7 +297,7 @@ bool ProximityInfoState::hasSpaceProximity(const int index) const {
// Returns a probability of mapping index to keyIndex.
float ProximityInfoState::getProbability(const int index, const int keyIndex) const {
ASSERT(0 <= index && index < mSampledInputSize);
- hash_map_compat<int, float>::const_iterator it = mCharProbabilities[index].find(keyIndex);
+ std::unordered_map<int, float>::const_iterator it = mCharProbabilities[index].find(keyIndex);
if (it != mCharProbabilities[index].end()) {
return it->second;
}
diff --git a/native/jni/src/suggest/core/layout/proximity_info_state.h b/native/jni/src/suggest/core/layout/proximity_info_state.h
index d66121b74..6b1a319aa 100644
--- a/native/jni/src/suggest/core/layout/proximity_info_state.h
+++ b/native/jni/src/suggest/core/layout/proximity_info_state.h
@@ -18,12 +18,12 @@
#define LATINIME_PROXIMITY_INFO_STATE_H
#include <cstring> // for memset()
+#include <unordered_map>
#include <vector>
#include "defines.h"
#include "suggest/core/layout/proximity_info_params.h"
#include "suggest/core/layout/proximity_info_state_utils.h"
-#include "utils/hash_map_compat.h"
namespace latinime {
@@ -215,7 +215,7 @@ class ProximityInfoState {
std::vector<float> mSpeedRates;
std::vector<float> mDirections;
// probabilities of skipping or mapping to a key for each point.
- std::vector<hash_map_compat<int, float> > mCharProbabilities;
+ std::vector<std::unordered_map<int, float> > mCharProbabilities;
// The vector for the key code set which holds nearby keys of some trailing sampled input points
// for each sampled input point. These nearby keys contain the next characters which can be in
// the dictionary. Specifically, currently we are looking for keys nearby trailing sampled
diff --git a/native/jni/src/suggest/core/layout/proximity_info_state_utils.cpp b/native/jni/src/suggest/core/layout/proximity_info_state_utils.cpp
index 72bb68fc4..ea3b02216 100644
--- a/native/jni/src/suggest/core/layout/proximity_info_state_utils.cpp
+++ b/native/jni/src/suggest/core/layout/proximity_info_state_utils.cpp
@@ -20,6 +20,7 @@
#include <cmath>
#include <cstring> // for memset()
#include <sstream> // for debug prints
+#include <unordered_map>
#include <vector>
#include "defines.h"
@@ -620,7 +621,7 @@ namespace latinime {
const std::vector<int> *const sampledLengthCache,
const std::vector<float> *const sampledNormalizedSquaredLengthCache,
const ProximityInfo *const proximityInfo,
- std::vector<hash_map_compat<int, float> > *charProbabilities) {
+ std::vector<std::unordered_map<int, float> > *charProbabilities) {
charProbabilities->resize(sampledInputSize);
// Calculates probabilities of using a point as a correlated point with the character
// for each point.
@@ -762,7 +763,7 @@ namespace latinime {
sstream << "Speed: "<< (*sampledSpeedRates)[i] << ", ";
sstream << "Angle: "<< getPointAngle(sampledInputXs, sampledInputYs, i) << ", \n";
- for (hash_map_compat<int, float>::iterator it = (*charProbabilities)[i].begin();
+ for (std::unordered_map<int, float>::iterator it = (*charProbabilities)[i].begin();
it != (*charProbabilities)[i].end(); ++it) {
if (it->first == NOT_AN_INDEX) {
sstream << it->first
@@ -804,7 +805,7 @@ namespace latinime {
// Converting from raw probabilities to log probabilities to calculate spatial distance.
for (int i = start; i < sampledInputSize; ++i) {
for (int j = 0; j < keyCount; ++j) {
- hash_map_compat<int, float>::iterator it = (*charProbabilities)[i].find(j);
+ std::unordered_map<int, float>::iterator it = (*charProbabilities)[i].find(j);
if (it == (*charProbabilities)[i].end()){
continue;
} else if(it->second < ProximityInfoParams::MIN_PROBABILITY) {
@@ -821,7 +822,7 @@ namespace latinime {
/* static */ void ProximityInfoStateUtils::updateSampledSearchKeySets(
const ProximityInfo *const proximityInfo, const int sampledInputSize,
const int lastSavedInputSize, const std::vector<int> *const sampledLengthCache,
- const std::vector<hash_map_compat<int, float> > *const charProbabilities,
+ const std::vector<std::unordered_map<int, float> > *const charProbabilities,
std::vector<NearKeycodesSet> *sampledSearchKeySets,
std::vector<std::vector<int> > *sampledSearchKeyVectors) {
sampledSearchKeySets->resize(sampledInputSize);
@@ -867,7 +868,7 @@ namespace latinime {
/* static */ bool ProximityInfoStateUtils::suppressCharProbabilities(const int mostCommonKeyWidth,
const int sampledInputSize, const std::vector<int> *const lengthCache,
const int index0, const int index1,
- std::vector<hash_map_compat<int, float> > *charProbabilities) {
+ std::vector<std::unordered_map<int, float> > *charProbabilities) {
ASSERT(0 <= index0 && index0 < sampledInputSize);
ASSERT(0 <= index1 && index1 < sampledInputSize);
const float keyWidthFloat = static_cast<float>(mostCommonKeyWidth);
@@ -878,9 +879,9 @@ namespace latinime {
const float suppressionRate = ProximityInfoParams::MIN_SUPPRESSION_RATE
+ diff / keyWidthFloat / ProximityInfoParams::SUPPRESSION_LENGTH_WEIGHT
* ProximityInfoParams::SUPPRESSION_WEIGHT;
- for (hash_map_compat<int, float>::iterator it = (*charProbabilities)[index0].begin();
+ for (std::unordered_map<int, float>::iterator it = (*charProbabilities)[index0].begin();
it != (*charProbabilities)[index0].end(); ++it) {
- hash_map_compat<int, float>::iterator it2 = (*charProbabilities)[index1].find(it->first);
+ std::unordered_map<int, float>::iterator it2 = (*charProbabilities)[index1].find(it->first);
if (it2 != (*charProbabilities)[index1].end() && it->second < it2->second) {
const float newProbability = it->second * suppressionRate;
const float suppression = it->second - newProbability;
@@ -932,7 +933,7 @@ namespace latinime {
// returns probability of generating the word.
/* static */ float ProximityInfoStateUtils::getMostProbableString(
const ProximityInfo *const proximityInfo, const int sampledInputSize,
- const std::vector<hash_map_compat<int, float> > *const charProbabilities,
+ const std::vector<std::unordered_map<int, float> > *const charProbabilities,
int *const codePointBuf) {
ASSERT(sampledInputSize >= 0);
memset(codePointBuf, 0, sizeof(codePointBuf[0]) * MAX_WORD_LENGTH);
@@ -942,7 +943,7 @@ namespace latinime {
for (int i = 0; i < sampledInputSize && index < MAX_WORD_LENGTH - 1; ++i) {
float minLogProbability = static_cast<float>(MAX_VALUE_FOR_WEIGHTING);
int character = NOT_AN_INDEX;
- for (hash_map_compat<int, float>::const_iterator it = (*charProbabilities)[i].begin();
+ for (std::unordered_map<int, float>::const_iterator it = (*charProbabilities)[i].begin();
it != (*charProbabilities)[i].end(); ++it) {
const float logProbability = (it->first != NOT_AN_INDEX)
? it->second + ProximityInfoParams::DEMOTION_LOG_PROBABILITY : it->second;
diff --git a/native/jni/src/suggest/core/layout/proximity_info_state_utils.h b/native/jni/src/suggest/core/layout/proximity_info_state_utils.h
index 7aa20c3d1..71e83a80c 100644
--- a/native/jni/src/suggest/core/layout/proximity_info_state_utils.h
+++ b/native/jni/src/suggest/core/layout/proximity_info_state_utils.h
@@ -18,10 +18,10 @@
#define LATINIME_PROXIMITY_INFO_STATE_UTILS_H
#include <bitset>
+#include <unordered_map>
#include <vector>
#include "defines.h"
-#include "utils/hash_map_compat.h"
namespace latinime {
class ProximityInfo;
@@ -29,7 +29,7 @@ class ProximityInfoParams;
class ProximityInfoStateUtils {
public:
- typedef hash_map_compat<int, float> NearKeysDistanceMap;
+ typedef std::unordered_map<int, float> NearKeysDistanceMap;
typedef std::bitset<MAX_KEY_COUNT_IN_A_KEYBOARD> NearKeycodesSet;
static int trimLastTwoTouchPoints(std::vector<int> *sampledInputXs,
@@ -72,11 +72,11 @@ class ProximityInfoStateUtils {
const std::vector<int> *const sampledLengthCache,
const std::vector<float> *const sampledNormalizedSquaredLengthCache,
const ProximityInfo *const proximityInfo,
- std::vector<hash_map_compat<int, float> > *charProbabilities);
+ std::vector<std::unordered_map<int, float> > *charProbabilities);
static void updateSampledSearchKeySets(const ProximityInfo *const proximityInfo,
const int sampledInputSize, const int lastSavedInputSize,
const std::vector<int> *const sampledLengthCache,
- const std::vector<hash_map_compat<int, float> > *const charProbabilities,
+ const std::vector<std::unordered_map<int, float> > *const charProbabilities,
std::vector<NearKeycodesSet> *sampledSearchKeySets,
std::vector<std::vector<int> > *sampledSearchKeyVectors);
static float getPointToKeyByIdLength(const float maxPointToKeyLength,
@@ -105,7 +105,7 @@ class ProximityInfoStateUtils {
// TODO: Move to most_probable_string_utils.h
static float getMostProbableString(const ProximityInfo *const proximityInfo,
const int sampledInputSize,
- const std::vector<hash_map_compat<int, float> > *const charProbabilities,
+ const std::vector<std::unordered_map<int, float> > *const charProbabilities,
int *const codePointBuf);
private:
@@ -147,7 +147,7 @@ class ProximityInfoStateUtils {
const int index2);
static bool suppressCharProbabilities(const int mostCommonKeyWidth,
const int sampledInputSize, const std::vector<int> *const lengthCache, const int index0,
- const int index1, std::vector<hash_map_compat<int, float> > *charProbabilities);
+ const int index1, std::vector<std::unordered_map<int, float> > *charProbabilities);
static float calculateSquaredDistanceFromSweetSpotCenter(
const ProximityInfo *const proximityInfo, const std::vector<int> *const sampledInputXs,
const std::vector<int> *const sampledInputYs, const int keyIndex,
diff --git a/native/jni/src/suggest/core/layout/proximity_info_utils.h b/native/jni/src/suggest/core/layout/proximity_info_utils.h
index c273ef456..178aada2d 100644
--- a/native/jni/src/suggest/core/layout/proximity_info_utils.h
+++ b/native/jni/src/suggest/core/layout/proximity_info_utils.h
@@ -18,18 +18,18 @@
#define LATINIME_PROXIMITY_INFO_UTILS_H
#include <cmath>
+#include <unordered_map>
#include "defines.h"
#include "suggest/core/layout/additional_proximity_chars.h"
#include "suggest/core/layout/geometry_utils.h"
#include "utils/char_utils.h"
-#include "utils/hash_map_compat.h"
namespace latinime {
class ProximityInfoUtils {
public:
static AK_FORCE_INLINE int getKeyIndexOf(const int keyCount, const int c,
- const hash_map_compat<int, int> *const codeToKeyMap) {
+ const std::unordered_map<int, int> *const codeToKeyMap) {
if (keyCount == 0) {
// We do not have the coordinate data
return NOT_AN_INDEX;
@@ -38,7 +38,7 @@ class ProximityInfoUtils {
return NOT_AN_INDEX;
}
const int lowerCode = CharUtils::toLowerCase(c);
- hash_map_compat<int, int>::const_iterator mapPos = codeToKeyMap->find(lowerCode);
+ std::unordered_map<int, int>::const_iterator mapPos = codeToKeyMap->find(lowerCode);
if (mapPos != codeToKeyMap->end()) {
return mapPos->second;
}
@@ -52,7 +52,7 @@ class ProximityInfoUtils {
const int *const proximityCharsArray, const int cellHeight, const int cellWidth,
const int gridWidth, const int mostCommonKeyWidth, const int keyCount,
const char *const localeStr,
- const hash_map_compat<int, int> *const codeToKeyMap, int *inputProximities) {
+ const std::unordered_map<int, int> *const codeToKeyMap, int *inputProximities) {
// Initialize
// - mInputCodes
// - mNormalizedSquaredDistances
@@ -144,7 +144,7 @@ class ProximityInfoUtils {
const int *const proximityCharsArray, const int cellHeight, const int cellWidth,
const int gridWidth, const int mostCommonKeyWidth, const int keyCount,
const int x, const int y, const int primaryKey, const char *const localeStr,
- const hash_map_compat<int, int> *const codeToKeyMap, int *proximities) {
+ const std::unordered_map<int, int> *const codeToKeyMap, int *proximities) {
const int mostCommonKeyWidthSquare = mostCommonKeyWidth * mostCommonKeyWidth;
int insertPos = 0;
proximities[insertPos++] = primaryKey;
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_gc_event_listeners.h b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_gc_event_listeners.h
index d8867754d..2aa402748 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_gc_event_listeners.h
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_gc_event_listeners.h
@@ -23,7 +23,6 @@
#include "suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_reading_helper.h"
#include "suggest/policyimpl/dictionary/structure/pt_common/pt_node_writer.h"
#include "suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h"
-#include "utils/hash_map_compat.h"
namespace latinime {
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_updating_helper.h b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_updating_helper.h
index f703baf85..9b2815263 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_updating_helper.h
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_updating_helper.h
@@ -19,7 +19,6 @@
#include "defines.h"
#include "suggest/policyimpl/dictionary/structure/pt_common/pt_node_params.h"
-#include "utils/hash_map_compat.h"
namespace latinime {
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/pt_node_writer.h b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/pt_node_writer.h
index 84dd6870e..e843f074a 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/pt_node_writer.h
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/pt_node_writer.h
@@ -17,18 +17,18 @@
#ifndef LATINIME_PT_NODE_WRITER_H
#define LATINIME_PT_NODE_WRITER_H
-#include "defines.h"
+#include <unordered_map>
+#include "defines.h"
#include "suggest/policyimpl/dictionary/structure/pt_common/pt_node_params.h"
-#include "utils/hash_map_compat.h"
namespace latinime {
// Interface class used to write PtNode information.
class PtNodeWriter {
public:
- typedef hash_map_compat<int, int> PtNodeArrayPositionRelocationMap;
- typedef hash_map_compat<int, int> PtNodePositionRelocationMap;
+ typedef std::unordered_map<int, int> PtNodeArrayPositionRelocationMap;
+ typedef std::unordered_map<int, int> PtNodePositionRelocationMap;
struct DictPositionRelocationMap {
public:
DictPositionRelocationMap()
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/terminal_position_lookup_table.h b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/terminal_position_lookup_table.h
index f73e22754..816059560 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/terminal_position_lookup_table.h
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/terminal_position_lookup_table.h
@@ -17,16 +17,17 @@
#ifndef LATINIME_TERMINAL_POSITION_LOOKUP_TABLE_H
#define LATINIME_TERMINAL_POSITION_LOOKUP_TABLE_H
+#include <unordered_map>
+
#include "defines.h"
#include "suggest/policyimpl/dictionary/structure/v4/content/single_dict_content.h"
#include "suggest/policyimpl/dictionary/structure/v4/ver4_dict_constants.h"
-#include "utils/hash_map_compat.h"
namespace latinime {
class TerminalPositionLookupTable : public SingleDictContent {
public:
- typedef hash_map_compat<int, int> TerminalIdMap;
+ typedef std::unordered_map<int, int> TerminalIdMap;
TerminalPositionLookupTable(const char *const dictPath, const bool isUpdatable)
: SingleDictContent(dictPath,
diff --git a/native/jni/src/utils/hash_map_compat.h b/native/jni/src/utils/hash_map_compat.h
deleted file mode 100644
index 7bf35a660..000000000
--- a/native/jni/src/utils/hash_map_compat.h
+++ /dev/null
@@ -1,28 +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.
- */
-
-#ifndef LATINIME_HASH_MAP_COMPAT_H
-#define LATINIME_HASH_MAP_COMPAT_H
-
-#include <unordered_map>
-
-#define hash_map_compat std::unordered_map
-
-#if 0 // TODO: Use this instead of the above macro.
-template <typename TKey, typename TValue> using hash_map_compat = std::unordered_map<TKey, TValue>;
-#endif
-
-#endif // LATINIME_HASH_MAP_COMPAT_H
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Myanmar.java b/tests/src/com/android/inputmethod/keyboard/layout/Myanmar.java
new file mode 100644
index 000000000..2d1c901b9
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Myanmar.java
@@ -0,0 +1,252 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import com.android.inputmethod.keyboard.KeyboardId;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+import com.android.inputmethod.latin.Constants;
+
+import java.util.Locale;
+
+/**
+ * The Myanmar alphabet keyboard.
+ */
+public final class Myanmar extends LayoutBase {
+ private static final String LAYOUT_NAME = "myanmar";
+
+ public Myanmar(final LayoutCustomizer customizer) {
+ super(customizer, Symbols.class, SymbolsShifted.class);
+ }
+
+ @Override
+ public String getName() { return LAYOUT_NAME; }
+
+ public static class MyanmarCustomizer extends LayoutCustomizer {
+ public MyanmarCustomizer(final Locale locale) { super(locale); }
+
+ @Override
+ public ExpectedKey getAlphabetKey() { return MYANMAR_ALPHABET_KEY; }
+
+ @Override
+ public ExpectedKey[] getRightShiftKeys(final boolean isPhone) {
+ return isPhone ? EMPTY_KEYS : EXCLAMATION_AND_QUESTION_MARKS;
+ }
+
+ @Override
+ public ExpectedKey[] getKeysRightToSpacebar(final boolean isPhone) {
+ // U+104B: "။" MYANMAR SIGN SECTION
+ // U+104A: "၊" MYANMAR SIGN LITTLE SECTION
+ final ExpectedKey periodKey = key("\u104B", getPunctuationMoreKeys(isPhone));
+ final ExpectedKey commaKey = key("\u104A", moreKey(","));
+ return isPhone ? joinKeys(periodKey) : joinKeys(commaKey, periodKey);
+ }
+
+ @Override
+ public ExpectedKey[] getPunctuationMoreKeys(final boolean isPhone) {
+ return isPhone ? MYANMAR_PHONE_PUNCTUATION_MORE_KEYS
+ : MYANMAR_TABLET_PUNCTUATION_MORE_KEYS;
+ }
+
+ // U+1000: "က" MYANMAR LETTER KA
+ // U+1001: "ခ" MYANMAR LETTER KHA
+ // U+1002: "ဂ" MYANMAR LETTER GA
+ private static final ExpectedKey MYANMAR_ALPHABET_KEY = key(
+ "\u1000\u1001\u1002", Constants.CODE_SWITCH_ALPHA_SYMBOL);
+
+ // U+104A: "၊" MYANMAR SIGN LITTLE SECTION
+ // Punctuation more keys for phone form factor.
+ private static final ExpectedKey[] MYANMAR_PHONE_PUNCTUATION_MORE_KEYS = joinKeys(
+ "\u104A", ".", "?", "!", "#", ")", "(", "/", ";",
+ "...", "'", "@", ":", "-", "\"", "+", "%", "&");
+ // Punctuation more keys for tablet form factor.
+ private static final ExpectedKey[] MYANMAR_TABLET_PUNCTUATION_MORE_KEYS = joinKeys(
+ ".", "'", "#", ")", "(", "/", ";", "@",
+ "...", ":", "-", "\"", "+", "%", "&");
+ }
+
+ @Override
+ ExpectedKey[][] getCommonAlphabetLayout(final boolean isPhone) { return ALPHABET_COMMON; }
+
+ @Override
+ public ExpectedKey[][] getCommonAlphabetShiftLayout(final boolean isPhone,
+ final int elementId) {
+ if (elementId == KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED) {
+ return getCommonAlphabetLayout(isPhone);
+ }
+ return ALPHABET_SHIFTED_COMMON;
+ }
+
+ // Helper method to create alphabet layout by adding special function keys.
+ @Override
+ ExpectedKeyboardBuilder convertCommonLayoutToKeyboard(final ExpectedKeyboardBuilder builder,
+ final boolean isPhone) {
+ final LayoutCustomizer customizer = getCustomizer();
+ builder.setKeysOfRow(5, (Object[])customizer.getSpaceKeys(isPhone));
+ builder.addKeysOnTheLeftOfRow(5, (Object[])customizer.getKeysLeftToSpacebar(isPhone));
+ builder.addKeysOnTheRightOfRow(5, (Object[])customizer.getKeysRightToSpacebar(isPhone));
+ if (isPhone) {
+ builder.addKeysOnTheRightOfRow(4, DELETE_KEY)
+ .addKeysOnTheLeftOfRow(5, customizer.getSymbolsKey())
+ .addKeysOnTheRightOfRow(5, key(ENTER_KEY, EMOJI_KEY));
+ } else {
+ builder.addKeysOnTheRightOfRow(1, DELETE_KEY)
+ .addKeysOnTheRightOfRow(3, ENTER_KEY)
+ .addKeysOnTheLeftOfRow(5, customizer.getSymbolsKey(), SETTINGS_KEY)
+ .addKeysOnTheRightOfRow(5, EMOJI_KEY);
+ }
+ builder.addKeysOnTheLeftOfRow(4, (Object[])customizer.getLeftShiftKeys(isPhone))
+ .addKeysOnTheRightOfRow(4, (Object[])customizer.getRightShiftKeys(isPhone));
+ return builder;
+ }
+
+ private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
+ .setKeysOfRow(1,
+ // U+1041: "၁" MYANMAR DIGIT ONE
+ key("\u1041", moreKey("1")),
+ // U+1042: "၂" MYANMAR DIGIT TWO
+ key("\u1042", moreKey("2")),
+ // U+1043: "၃" MYANMAR DIGIT THREE
+ key("\u1043", moreKey("3")),
+ // U+1044: "၄" MYANMAR DIGIT FOUR
+ key("\u1044", moreKey("4")),
+ // U+1045: "၅" MYANMAR DIGIT FIVE
+ key("\u1045", moreKey("5")),
+ // U+1046: "၆" MYANMAR DIGIT SIX
+ key("\u1046", moreKey("6")),
+ // U+1047: "၇" MYANMAR DIGIT SEVEN
+ key("\u1047", moreKey("7")),
+ // U+1048: "၈" MYANMAR DIGIT EIGHT
+ key("\u1048", moreKey("8")),
+ // U+1049: "၉" MYANMAR DIGIT NINE
+ key("\u1049", moreKey("9")),
+ // U+1040: "၀" MYANMAR DIGIT ZERO
+ key("\u1040", moreKey("0")))
+ .setKeysOfRow(2,
+ // U+1006: "ဆ" MYANMAR LETTER CHA
+ // U+1010: "တ" MYANMAR LETTER TA
+ // U+1014: "န" MYANMAR LETTER NA
+ // U+1019: "မ" MYANMAR LETTER MA
+ // U+1021: "အ" MYANMAR LETTER A
+ // U+1015: "ပ" MYANMAR LETTER PA
+ // U+1000: "က" MYANMAR LETTER KA
+ // U+1004: "င" MYANMAR LETTER NGA
+ // U+101E: "သ" MYANMAR LETTER SA
+ // U+1005: "စ" MYANMAR LETTER CA
+ "\u1006", "\u1010", "\u1014", "\u1019", "\u1021", "\u1015", "\u1000", "\u1004",
+ "\u101E", "\u1005")
+ .setKeysOfRow(3,
+ // U+1031: "ေ" MYANMAR VOWEL SIGN E
+ // U+103B: "ျ" MYANMAR CONSONANT SIGN MEDIAL YA
+ // U+103C: "ြ" MYANMAR CONSONANT SIGN MEDIAL RA
+ "\u1031", "\u103B", "\u103C",
+ // U+103D: "ွ" MYANMAR CONSONANT SIGN MEDIAL WA
+ // U+103E: "ှ" MYANMAR CONSONANT SIGN MEDIAL HA
+ // U+103D/U+103E:
+ // "ွှ" MYANMAR CONSONANT SIGN MEDIAL WA/MYANMAR CONSONANT SIGN MEDIAL HA
+ key("\u103D", joinMoreKeys("\u103E", "\u103D\u103E")),
+ // U+102D: "ိ" MYANMAR VOWEL SIGN I
+ // U+102E: "ီ" MYANMAR VOWEL SIGN II
+ key("\u102D", moreKey("\u102E")),
+ // U+102F: "ု" MYANMAR VOWEL SIGN U
+ // U+1030: "ူ" MYANMAR VOWEL SIGN UU
+ key("\u102F", moreKey("\u1030")),
+ // U+102C: "ာ" MYANMAR VOWEL SIGN AA
+ "\u102C",
+ // U+103A: "်" MYANMAR SIGN ASAT
+ // U+1032: "ဲ" MYANMAR VOWEL SIGN AI
+ key("\u103A", moreKey("\u1032")),
+ // U+1037: "့" MYANMAR SIGN DOT BELOW
+ // U+1036: "ံ" MYANMAR SIGN ANUSVARA
+ key("\u1037", moreKey("\u1036")),
+ // U+1038: "း" MYANMAR SIGN VISARGA
+ "\u1038")
+ .setKeysOfRow(4,
+ // U+1016: "ဖ" MYANMAR LETTER PHA
+ // U+1011: "ထ" MYANMAR LETTER THA
+ // U+1001: "ခ" MYANMAR LETTER KHA
+ // U+101C: "လ" MYANMAR LETTER LA
+ // U+1018: "ဘ" MYANMAR LETTER BHA
+ "\u1016", "\u1011", "\u1001", "\u101C", "\u1018",
+ // U+100A: "ည" MYANMAR LETTER NNYA
+ // U+1009: "ဉ" MYANMAR LETTER NYA
+ key("\u100A", moreKey("\u1009")),
+ // U+101B: "ရ" MYANMAR LETTER RA
+ // U+101D: "ဝ" MYANMAR LETTER WA
+ "\u101B", "\u101D")
+ .build();
+
+ private static final ExpectedKey[][] ALPHABET_SHIFTED_COMMON = new ExpectedKeyboardBuilder()
+ .setKeysOfRow(1,
+ // U+1027: "ဧ" MYANMAR LETTER E
+ // U+104F: "၏" MYANMAR SYMBOL GENITIVE
+ // U+1024: "ဤ" MYANMAR LETTER II
+ // U+1023: "ဣ" MYANMAR LETTER I
+ // U+104E: "၎" MYANMAR SYMBOL AFOREMENTIONED
+ // U+1000/U+103B/U+1015/U+103A: "ကျပ်" MYANMAR LETTER KA
+ // /MYANMAR CONSONANT SIGN MEDIAL YA/MYANMAR LETTER PA/MYANMAR SIGN ASAT
+ // U+1029: "ဩ" MYANMAR LETTER O
+ // U+102A: "ဪ" MYANMAR LETTER AU
+ // U+104D: "၍" MYANMAR SYMBOL COMPLETED
+ // U+104C: "၌" MYANMAR SYMBOL LOCATIVE
+ "\u1027", "\u104F", "\u1024", "\u1023", "\u104E", "\u1000\u103B\u1015\u103A",
+ "\u1029", "\u102A", "\u104D", "\u104C")
+ .setKeysOfRow(2,
+ // U+1017: "ဗ" MYANMAR LETTER BA
+ // U+1012: "ဒ" MYANMAR LETTER DA
+ // U+1013: "ဓ" MYANMAR LETTER DHA
+ // U+1003: "ဃ" MYANMAR LETTER GHA
+ // U+100E: "ဎ" MYANMAR LETTER DDHA
+ // U+103F: "ဿ" MYANMAR LETTER GREAT SA
+ // U+100F: "ဏ" MYANMAR LETTER NNA
+ // U+1008: "ဈ" MYANMAR LETTER JHA
+ // U+1007: "ဇ" MYANMAR LETTER JA
+ // U+1002: "ဂ" MYANMAR LETTER GA
+ "\u1017", "\u1012", "\u1013", "\u1003", "\u100E", "\u103F", "\u100F", "\u1008",
+ "\u1007", "\u1002")
+ .setKeysOfRow(3,
+ // U+101A: "ယ" MYANMAR LETTER YA
+ // U+1039: "္" MYANMAR SIGN VIRAMA
+ // U+1004/U+103A/U+1039: "င်္င" MYANMAR LETTER NGA
+ // /MYANMAR SIGN ASAT/MYANMAR SIGN VIRAMA
+ // U+103E: "ှ" MYANMAR CONSONANT SIGN MEDIAL HA
+ // U+102E: "ီ" MYANMAR VOWEL SIGN II
+ // U+1030: "ူ" MYANMAR VOWEL SIGN UU
+ // U+102B: "ါ" MYANMAR VOWEL SIGN TALL AA
+ // U+1032: "ဲ" MYANMAR VOWEL SIGN AI
+ // U+1036: "ံ" MYANMAR SIGN ANUSVARA
+ // U+101F: "ဟ" MYANMAR LETTER HA
+ "\u101A", "\u1039", "\u1004\u103A\u1039", "\u103E", "\u102E", "\u1030",
+ "\u102B", "\u1032", "\u1036", "\u101F")
+ .setKeysOfRow(4,
+ // U+1025: "ဥ" MYANMAR LETTER U
+ // U+1026: "ဦ" MYANMAR LETTER UU
+ // U+100C: "ဌ" MYANMAR LETTER TTHA
+ // U+100B: "ဋ" MYANMAR LETTER TTA
+ // U+100D: "ဍ" MYANMAR LETTER DDA
+ // U+1020: "ဠ" MYANMAR LETTER LLA
+ // U+100B/U+1039/U+100C: "ဋ္ဌ" MYANMAR LETTER TTA
+ // /MYANMAR SIGN VIRAMA/MYANMAR LETTER TTHA
+ "\u1025", "\u1026", "\u100C", "\u100B", "\u100D", "\u1020",
+ "\u100B\u1039\u100C",
+ // U+100F/U+1039/U+100D: "ဏ္ဍ" MYANMAR LETTER NNA
+ // /MYANMAR SIGN VIRAMA/MYANMAR LETTER DDA
+ // U+100F/U+1039/U+100C: "ဏ္ဌ" MYANMAR LETTER NNA
+ // /MYANMAR SIGN VIRAMA/MYANMAR LETTER TTHA
+ key("\u100F\u1039\u100D", moreKey("\u100F\u1039\u100C")))
+ .build();
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsMyanmarMM.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsMyanmarMM.java
new file mode 100644
index 000000000..e6d3b3b92
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsMyanmarMM.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.Myanmar;
+import com.android.inputmethod.keyboard.layout.Myanmar.MyanmarCustomizer;
+
+import java.util.Locale;
+
+/**
+ * my_MM: Myanmar (Myanmar)/myanmar
+ */
+@SmallTest
+public final class TestsMyanmarMM extends LayoutTestsBase {
+ private static final Locale LOCALE = new Locale("my", "MM");
+ private static final LayoutBase LAYOUT = new Myanmar(new MyanmarCustomizer(LOCALE));
+
+ @Override
+ LayoutBase getLayout() { return LAYOUT; }
+}
diff --git a/tools/make-keyboard-text/res/values-my-rMM/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-my-rMM/donottranslate-more-keys.xml
index f6186ffac..f408f588a 100644
--- a/tools/make-keyboard-text/res/values-my-rMM/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-my-rMM/donottranslate-more-keys.xml
@@ -23,4 +23,13 @@
U+1001: "ခ" MYANMAR LETTER KHA
U+1002: "ဂ" MYANMAR LETTER GA -->
<string name="keylabel_to_alpha">&#x1000;&#x1001;&#x1002;</string>
+ <!-- U+104A: "၊" MYANMAR SIGN LITTLE SECTION
+ U+104B: "။" MYANMAR SIGN SECTION -->
+ <string name="keyspec_tablet_comma">&#x104A;</string>
+ <string name="morekeys_tablet_comma">"\\,"</string>
+ <string name="keyspec_tablet_period">&#x104B;</string>
+ <string name="keyspec_period">&#x104B;</string>
+ <string name="keyhintlabel_period">&#x104A;</string>
+ <string name="morekeys_punctuation">"!autoColumnOrder!9,&#x104A;,.,?,!,#,),(,/,;,...,',@,:,-,\",+,\\%,&amp;"</string>
+ <string name="morekeys_tablet_punctuation">"!autoColumnOrder!8,.,',#,),(,/,;,@,...,:,-,\",+,\\%,&amp;"</string>
</resources>