diff options
48 files changed, 273 insertions, 201 deletions
diff --git a/java/res/xml-sw600dp/keys_dvorak_123.xml b/java/res/xml-sw600dp/keys_dvorak_123.xml index 635ea0476..851c14b5e 100644 --- a/java/res/xml-sw600dp/keys_dvorak_123.xml +++ b/java/res/xml-sw600dp/keys_dvorak_123.xml @@ -21,20 +21,40 @@ <merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > - <Key - latin:keyLabel="\'" - latin:keyHintLabel=""" - latin:moreKeys="!" - latin:keyStyle="hasShiftedLetterHintStyle" /> - <Key - latin:keyLabel="," - latin:keyHintLabel="<" - latin:moreKeys="\?" - latin:keyStyle="hasShiftedLetterHintStyle" /> - <Key - latin:keyLabel="." - latin:keyHintLabel=">" - latin:keyLabelFlags="hasPopupHint|preserveCase" - latin:moreKeys="!text/more_keys_for_punctuation" - latin:keyStyle="hasShiftedLetterHintStyle" /> + <switch> + <case + latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted" + > + <Key + latin:keyLabel=""" + latin:keyHintLabel="1" + latin:additionalMoreKeys="1" /> + <Key + latin:keyLabel="<" + latin:keyHintLabel="2" + latin:additionalMoreKeys="2" /> + <Key + latin:keyLabel=">" + latin:keyHintLabel="3" + latin:additionalMoreKeys="3" /> + </case> + <default> + <Key + latin:keyLabel="\'" + latin:keyHintLabel="1" + latin:additionalMoreKeys="1" + latin:moreKeys="!,"" /> + <Key + latin:keyLabel="," + latin:keyHintLabel="2" + latin:additionalMoreKeys="2" + latin:moreKeys="\?,<" /> + <Key + latin:keyLabel="." + latin:keyHintLabel="3" + latin:additionalMoreKeys="3" + latin:keyLabelFlags="hasPopupHint|preserveCase" + latin:moreKeys="!text/more_keys_for_punctuation,%,>" /> + </default> + </switch> </merge> diff --git a/java/res/xml-sw600dp/rowkeys_arabic1.xml b/java/res/xml-sw600dp/rowkeys_arabic1.xml index 6a0e25786..3c0acf112 100644 --- a/java/res/xml-sw600dp/rowkeys_arabic1.xml +++ b/java/res/xml-sw600dp/rowkeys_arabic1.xml @@ -21,57 +21,87 @@ <merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > - <!-- U+0636: "ض" ARABIC LETTER DAD --> + <!-- U+0636: "ض" ARABIC LETTER DAD + U+0661: "١" ARABIC-INDIC DIGIT ONE --> <Key latin:keyLabel="ض" + latin:keyHintLabel="1" + latin:additionalMoreKeys="1,١" latin:keyLabelFlags="fontNormal" /> - <!-- U+0635: "ص" ARABIC LETTER SAD --> + <!-- U+0635: "ص" ARABIC LETTER SAD + U+0662: "٢" ARABIC-INDIC DIGIT TWO --> <Key latin:keyLabel="ص" + latin:keyHintLabel="2" + latin:additionalMoreKeys="2,٢" latin:keyLabelFlags="fontNormal" /> - <!-- U+062B: "ث" ARABIC LETTER THEH --> + <!-- U+062B: "ث" ARABIC LETTER THEH + U+0663: "٣" ARABIC-INDIC DIGIT THREE --> <Key latin:keyLabel="ث" + latin:keyHintLabel="3" + latin:additionalMoreKeys="3,٣" latin:keyLabelFlags="fontNormal" /> <!-- U+0642: "ق" ARABIC LETTER QAF - U+06A8: "ڨ" ARABIC LETTER QAF WITH THREE DOTS ABOVE --> + U+06A8: "ڨ" ARABIC LETTER QAF WITH THREE DOTS ABOVE + U+0664: "٤" ARABIC-INDIC DIGIT FOUR --> <!-- TODO: DroidSansArabic lacks the glyph of U+06A8 ARABIC LETTER QAF WITH THREE DOTS ABOVE --> <Key latin:keyLabel="ق" + latin:keyHintLabel="4" + latin:additionalMoreKeys="4,٤" latin:moreKeys="ڨ" latin:keyLabelFlags="fontNormal" /> <!-- U+0641: "ف" ARABIC LETTER FEH U+06A4: "ڤ" ARABIC LETTER VEH U+06A2: "ڢ" ARABIC LETTER FEH WITH DOT MOVED BELOW - U+06A5: "ڥ" ARABIC LETTER FEH WITH THREE DOTS BELOW --> + U+06A5: "ڥ" ARABIC LETTER FEH WITH THREE DOTS BELOW + U+0665: "٥" ARABIC-INDIC DIGIT FIVE --> <!-- TODO: DroidSansArabic lacks the glyph of U+06A2 ARABIC LETTER FEH WITH DOT MOVED BELOW --> <!-- TODO: DroidSansArabic lacks the glyph of U+06A5 ARABIC LETTER FEH WITH THREE DOTS BELOW --> <Key latin:keyLabel="ف" + latin:keyHintLabel="5" + latin:additionalMoreKeys="5,٥" latin:moreKeys="ڤ,ڢ,ڥ" latin:keyLabelFlags="fontNormal" /> - <!-- U+063A: "غ" ARABIC LETTER GHAIN --> + <!-- U+063A: "غ" ARABIC LETTER GHAIN + U+0666: "٦" ARABIC-INDIC DIGIT SIX --> <Key latin:keyLabel="غ" + latin:keyHintLabel="6" + latin:additionalMoreKeys="6,٦" latin:keyLabelFlags="fontNormal" /> - <!-- U+0639: "ع" ARABIC LETTER AIN --> + <!-- U+0639: "ع" ARABIC LETTER AIN + U+0667: "٧" ARABIC-INDIC DIGIT SEVEN --> <Key latin:keyLabel="ع" + latin:keyHintLabel="7" + latin:additionalMoreKeys="7,٧" latin:keyLabelFlags="fontNormal" /> <!-- U+0647: "ه" ARABIC LETTER HEH U+FEEB: "ﻫ" ARABIC LETTER HEH INITIAL FORM - U+0647 U+200D: ARABIC LETTER HEH + ZERO WIDTH JOINER --> + U+0647 U+200D: ARABIC LETTER HEH + ZERO WIDTH JOINER + U+0668: "٨" ARABIC-INDIC DIGIT EIGHT --> <Key latin:keyLabel="ه" + latin:keyHintLabel="8" + latin:additionalMoreKeys="8,٨" latin:moreKeys="ﻫ|ه‍" latin:keyLabelFlags="fontNormal" /> - <!-- U+062E: "خ" ARABIC LETTER KHAH --> + <!-- U+062E: "خ" ARABIC LETTER KHAH + U+0669: "٩" ARABIC-INDIC DIGIT NINE --> <Key latin:keyLabel="خ" + latin:keyHintLabel="9" + latin:additionalMoreKeys="9,٩" latin:keyLabelFlags="fontNormal" /> - <!-- U+062D: "ح" ARABIC LETTER HAH --> + <!-- U+062D: "ح" ARABIC LETTER HAH + U+0660: "٠" ARABIC-INDIC DIGIT ZERO --> <Key latin:keyLabel="ح" + latin:keyHintLabel="0" + latin:additionalMoreKeys="0,٠" latin:keyLabelFlags="fontNormal" /> <!-- U+062C: "ج" ARABIC LETTER JEEM U+0686: "چ" ARABIC LETTER TCHEH --> diff --git a/java/res/xml-sw600dp/rowkeys_farsi1.xml b/java/res/xml-sw600dp/rowkeys_farsi1.xml index 7b312404a..6dd9a6575 100644 --- a/java/res/xml-sw600dp/rowkeys_farsi1.xml +++ b/java/res/xml-sw600dp/rowkeys_farsi1.xml @@ -21,50 +21,80 @@ <merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > - <!-- U+0636: "ض" ARABIC LETTER DAD --> + <!-- U+0636: "ض" ARABIC LETTER DAD + U+06F1: "۱" EXTENDED ARABIC-INDIC DIGIT ONE --> <Key latin:keyLabel="ض" + latin:keyHintLabel="۱" + latin:additionalMoreKeys="۱,1" latin:keyLabelFlags="fontNormal" /> - <!-- U+0635: "ص" ARABIC LETTER SAD --> + <!-- U+0635: "ص" ARABIC LETTER SAD + U+06F2: "۲" EXTENDED ARABIC-INDIC DIGIT TWO --> <Key latin:keyLabel="ص" + latin:keyHintLabel="۲" + latin:additionalMoreKeys="۲,2" latin:keyLabelFlags="fontNormal" /> - <!-- U+062B: "ث" ARABIC LETTER THEH --> + <!-- U+062B: "ث" ARABIC LETTER THEH + U+06F3: "۳" EXTENDED ARABIC-INDIC DIGIT THREE --> <Key latin:keyLabel="ث" + latin:keyHintLabel="۳" + latin:additionalMoreKeys="۳,3" latin:keyLabelFlags="fontNormal" /> - <!-- U+0642: "ق" ARABIC LETTER QAF --> + <!-- U+0642: "ق" ARABIC LETTER QAF + U+06F4: "۴" EXTENDED ARABIC-INDIC DIGIT FOUR --> <Key latin:keyLabel="ق" + latin:keyHintLabel="۴" + latin:additionalMoreKeys="۴,4" latin:keyLabelFlags="fontNormal" /> - <!-- U+0641: "ف" ARABIC LETTER FEH --> + <!-- U+0641: "ف" ARABIC LETTER FEH + U+06F5: "۵" EXTENDED ARABIC-INDIC DIGIT FIVE --> <Key latin:keyLabel="ف" + latin:keyHintLabel="۵" + latin:additionalMoreKeys="۵,5" latin:keyLabelFlags="fontNormal" /> - <!-- U+063A: "غ" ARABIC LETTER GHAIN --> + <!-- U+063A: "غ" ARABIC LETTER GHAIN + U+06F6: "۶" EXTENDED ARABIC-INDIC DIGIT SIX --> <Key latin:keyLabel="غ" + latin:keyHintLabel="۶" + latin:additionalMoreKeys="۶,6" latin:keyLabelFlags="fontNormal" /> - <!-- U+0639: "ع" ARABIC LETTER AIN --> + <!-- U+0639: "ع" ARABIC LETTER AIN + U+06F7: "۷" EXTENDED ARABIC-INDIC DIGIT SEVEN --> <Key latin:keyLabel="ع" + latin:keyHintLabel="۷" + latin:additionalMoreKeys="۷,7" latin:keyLabelFlags="fontNormal" /> <!-- U+0647: "ه" ARABIC LETTER HEH U+FEEB: "ﻫ" ARABIC LETTER HEH INITIAL FORM U+0647/U+200D: ARABIC LETTER HEH + ZERO WIDTH JOINER U+0647/U+0654: ARABIC LETTER HEH + ARABIC HAMZA ABOVE - U+0629: "ة" ARABIC LETTER TEH MARBUTA --> + U+0629: "ة" ARABIC LETTER TEH MARBUTA + U+06F8: "۸" EXTENDED ARABIC-INDIC DIGIT EIGHT --> <Key latin:keyLabel="ه" latin:moreKeys="ﻫ|ه‍,هٔ,ة,%" + latin:keyHintLabel="۸" + latin:additionalMoreKeys="۸,8" latin:keyLabelFlags="fontNormal" /> - <!-- U+062E: "خ" ARABIC LETTER KHAH --> + <!-- U+062E: "خ" ARABIC LETTER KHAH + U+06F9: "۹" EXTENDED ARABIC-INDIC DIGIT NINE --> <Key latin:keyLabel="خ" + latin:keyHintLabel="۹" + latin:additionalMoreKeys="۹,9" latin:keyLabelFlags="fontNormal" /> - <!-- U+062D: "ح" ARABIC LETTER HAH --> + <!-- U+062D: "ح" ARABIC LETTER HAH + U+06F0: "۰" EXTENDED ARABIC-INDIC DIGIT ZERO --> <Key latin:keyLabel="ح" + latin:keyHintLabel="۰" + latin:additionalMoreKeys="۰,0" latin:keyLabelFlags="fontNormal" /> <!-- U+062C: "ج" ARABIC LETTER JEEM --> <Key diff --git a/java/res/xml-sw600dp/rows_azerty.xml b/java/res/xml-sw600dp/rows_azerty.xml index 824ee38f3..5a5a7d12f 100644 --- a/java/res/xml-sw600dp/rows_azerty.xml +++ b/java/res/xml-sw600dp/rows_azerty.xml @@ -27,8 +27,7 @@ latin:keyWidth="9.0%p" > <include - latin:keyboardLayout="@xml/rowkeys_azerty1" - latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> + latin:keyboardLayout="@xml/rowkeys_azerty1" /> <Key latin:keyStyle="deleteKeyStyle" latin:keyWidth="fillRight" /> diff --git a/java/res/xml-sw600dp/rows_bulgarian.xml b/java/res/xml-sw600dp/rows_bulgarian.xml index 72532369c..263562095 100644 --- a/java/res/xml-sw600dp/rows_bulgarian.xml +++ b/java/res/xml-sw600dp/rows_bulgarian.xml @@ -27,8 +27,7 @@ latin:keyWidth="8.182%p" > <include - latin:keyboardLayout="@xml/rowkeys_bulgarian1" - latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> + latin:keyboardLayout="@xml/rowkeys_bulgarian1" /> <Key latin:keyStyle="deleteKeyStyle" latin:keyWidth="fillRight" /> diff --git a/java/res/xml-sw600dp/rows_bulgarian_bds.xml b/java/res/xml-sw600dp/rows_bulgarian_bds.xml index db6220e8e..9439a6346 100644 --- a/java/res/xml-sw600dp/rows_bulgarian_bds.xml +++ b/java/res/xml-sw600dp/rows_bulgarian_bds.xml @@ -27,8 +27,7 @@ latin:keyWidth="8.182%p" > <include - latin:keyboardLayout="@xml/rowkeys_bulgarian_bds1" - latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> + latin:keyboardLayout="@xml/rowkeys_bulgarian_bds1" /> <Key latin:keyStyle="deleteKeyStyle" latin:keyWidth="fillRight" /> diff --git a/java/res/xml-sw600dp/rows_colemak.xml b/java/res/xml-sw600dp/rows_colemak.xml index f7e903bb5..98a24e451 100644 --- a/java/res/xml-sw600dp/rows_colemak.xml +++ b/java/res/xml-sw600dp/rows_colemak.xml @@ -27,8 +27,7 @@ latin:keyWidth="9.0%p" > <include - latin:keyboardLayout="@xml/rowkeys_colemak1" - latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> + latin:keyboardLayout="@xml/rowkeys_colemak1" /> <include latin:keyboardLayout="@xml/key_colemak_colon" /> <Key diff --git a/java/res/xml-sw600dp/rows_dvorak.xml b/java/res/xml-sw600dp/rows_dvorak.xml index 2fa8eb205..88592676d 100644 --- a/java/res/xml-sw600dp/rows_dvorak.xml +++ b/java/res/xml-sw600dp/rows_dvorak.xml @@ -27,10 +27,7 @@ latin:keyWidth="9.0%p" > <include - latin:keyboardLayout="@xml/keys_dvorak_123" /> - <include - latin:keyboardLayout="@xml/rowkeys_dvorak1" - latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> + latin:keyboardLayout="@xml/rowkeys_dvorak1" /> <Key latin:keyStyle="deleteKeyStyle" latin:keyWidth="fillRight" /> diff --git a/java/res/xml-sw600dp/rows_east_slavic.xml b/java/res/xml-sw600dp/rows_east_slavic.xml index 309625516..b4160d64b 100644 --- a/java/res/xml-sw600dp/rows_east_slavic.xml +++ b/java/res/xml-sw600dp/rows_east_slavic.xml @@ -27,8 +27,7 @@ latin:keyWidth="8.182%p" > <include - latin:keyboardLayout="@xml/rowkeys_east_slavic1" - latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> + latin:keyboardLayout="@xml/rowkeys_east_slavic1" /> <Key latin:keyStyle="deleteKeyStyle" latin:keyWidth="fillRight" /> diff --git a/java/res/xml-sw600dp/rows_georgian.xml b/java/res/xml-sw600dp/rows_georgian.xml index 61d3eb05a..b0e9e35fd 100644 --- a/java/res/xml-sw600dp/rows_georgian.xml +++ b/java/res/xml-sw600dp/rows_georgian.xml @@ -27,8 +27,7 @@ latin:keyWidth="9.0%p" > <include - latin:keyboardLayout="@xml/rowkeys_georgian1" - latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> + latin:keyboardLayout="@xml/rowkeys_georgian1" /> <Key latin:keyStyle="deleteKeyStyle" latin:keyWidth="fillRight" /> diff --git a/java/res/xml-sw600dp/rows_greek.xml b/java/res/xml-sw600dp/rows_greek.xml index 6a10228fb..de214c67f 100644 --- a/java/res/xml-sw600dp/rows_greek.xml +++ b/java/res/xml-sw600dp/rows_greek.xml @@ -29,8 +29,7 @@ <include latin:keyboardLayout="@xml/key_greek_semicolon" /> <include - latin:keyboardLayout="@xml/rowkeys_greek1" - latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> + latin:keyboardLayout="@xml/rowkeys_greek1" /> <Key latin:keyStyle="deleteKeyStyle" latin:keyWidth="fillRight" /> diff --git a/java/res/xml-sw600dp/rows_hebrew.xml b/java/res/xml-sw600dp/rows_hebrew.xml index f9e6f51ab..9945dee35 100644 --- a/java/res/xml-sw600dp/rows_hebrew.xml +++ b/java/res/xml-sw600dp/rows_hebrew.xml @@ -27,10 +27,6 @@ latin:keyWidth="9.0%p" > <include - latin:keyboardLayout="@xml/key_apostrophe" /> - <include - latin:keyboardLayout="@xml/key_dash" /> - <include latin:keyboardLayout="@xml/rowkeys_hebrew1" /> <Key latin:keyStyle="deleteKeyStyle" diff --git a/java/res/xml-sw600dp/rows_hindi.xml b/java/res/xml-sw600dp/rows_hindi.xml index 967846519..2a9a419f8 100644 --- a/java/res/xml-sw600dp/rows_hindi.xml +++ b/java/res/xml-sw600dp/rows_hindi.xml @@ -27,8 +27,7 @@ latin:keyWidth="8.182%p" > <include - latin:keyboardLayout="@xml/rowkeys_hindi1" - latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> + latin:keyboardLayout="@xml/rowkeys_hindi1" /> <Key latin:keyStyle="deleteKeyStyle" latin:keyWidth="fillRight" /> diff --git a/java/res/xml-sw600dp/rows_mongolian.xml b/java/res/xml-sw600dp/rows_mongolian.xml index cfd8c8c39..dc0c1fe5c 100644 --- a/java/res/xml-sw600dp/rows_mongolian.xml +++ b/java/res/xml-sw600dp/rows_mongolian.xml @@ -27,8 +27,7 @@ latin:keyWidth="8.182%p" > <include - latin:keyboardLayout="@xml/rowkeys_mongolian1" - latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> + latin:keyboardLayout="@xml/rowkeys_mongolian1" /> <Key latin:keyStyle="deleteKeyStyle" latin:keyWidth="fillRight" /> diff --git a/java/res/xml-sw600dp/rows_nordic.xml b/java/res/xml-sw600dp/rows_nordic.xml index 43144030f..299bf8908 100644 --- a/java/res/xml-sw600dp/rows_nordic.xml +++ b/java/res/xml-sw600dp/rows_nordic.xml @@ -27,8 +27,7 @@ latin:keyWidth="8.182%p" > <include - latin:keyboardLayout="@xml/rowkeys_nordic1" - latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> + latin:keyboardLayout="@xml/rowkeys_nordic1" /> <Key latin:keyStyle="deleteKeyStyle" latin:keyWidth="fillRight" /> diff --git a/java/res/xml-sw600dp/rows_qwerty.xml b/java/res/xml-sw600dp/rows_qwerty.xml index bac02fd9a..722f9d138 100644 --- a/java/res/xml-sw600dp/rows_qwerty.xml +++ b/java/res/xml-sw600dp/rows_qwerty.xml @@ -27,8 +27,7 @@ latin:keyWidth="9.0%p" > <include - latin:keyboardLayout="@xml/rowkeys_qwerty1" - latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> + latin:keyboardLayout="@xml/rowkeys_qwerty1" /> <Key latin:keyStyle="deleteKeyStyle" latin:keyWidth="fillRight" /> diff --git a/java/res/xml-sw600dp/rows_qwertz.xml b/java/res/xml-sw600dp/rows_qwertz.xml index 98ddd0843..f2f832ce7 100644 --- a/java/res/xml-sw600dp/rows_qwertz.xml +++ b/java/res/xml-sw600dp/rows_qwertz.xml @@ -27,8 +27,7 @@ latin:keyWidth="9.0%p" > <include - latin:keyboardLayout="@xml/rowkeys_qwertz1" - latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> + latin:keyboardLayout="@xml/rowkeys_qwertz1" /> <Key latin:keyStyle="deleteKeyStyle" latin:keyWidth="fillRight" /> diff --git a/java/res/xml-sw600dp/rows_south_slavic.xml b/java/res/xml-sw600dp/rows_south_slavic.xml index e53a2ee92..6ef664342 100644 --- a/java/res/xml-sw600dp/rows_south_slavic.xml +++ b/java/res/xml-sw600dp/rows_south_slavic.xml @@ -27,8 +27,7 @@ latin:keyWidth="8.182%p" > <include - latin:keyboardLayout="@xml/rowkeys_south_slavic1" - latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> + latin:keyboardLayout="@xml/rowkeys_south_slavic1" /> <Key latin:keyStyle="deleteKeyStyle" latin:keyWidth="fillRight" /> diff --git a/java/res/xml-sw600dp/rows_spanish.xml b/java/res/xml-sw600dp/rows_spanish.xml index b48ee0155..bca9bba3a 100644 --- a/java/res/xml-sw600dp/rows_spanish.xml +++ b/java/res/xml-sw600dp/rows_spanish.xml @@ -27,8 +27,7 @@ latin:keyWidth="9.0%p" > <include - latin:keyboardLayout="@xml/rowkeys_qwerty1" - latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> + latin:keyboardLayout="@xml/rowkeys_qwerty1" /> <Key latin:keyStyle="deleteKeyStyle" latin:keyWidth="fillRight" /> diff --git a/java/res/xml-sw768dp/rows_azerty.xml b/java/res/xml-sw768dp/rows_azerty.xml index dcc403b59..cf4bc92fa 100644 --- a/java/res/xml-sw768dp/rows_azerty.xml +++ b/java/res/xml-sw768dp/rows_azerty.xml @@ -31,8 +31,7 @@ latin:keyLabelFlags="alignLeft" latin:keyWidth="7.969%p" /> <include - latin:keyboardLayout="@xml/rowkeys_azerty1" - latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> + latin:keyboardLayout="@xml/rowkeys_azerty1" /> <Key latin:keyStyle="deleteKeyStyle" latin:keyWidth="fillRight" /> diff --git a/java/res/xml-sw768dp/rows_bulgarian.xml b/java/res/xml-sw768dp/rows_bulgarian.xml index 64534144a..bdc1262f3 100644 --- a/java/res/xml-sw768dp/rows_bulgarian.xml +++ b/java/res/xml-sw768dp/rows_bulgarian.xml @@ -31,8 +31,7 @@ latin:keyLabelFlags="alignLeft" latin:keyWidth="7.969%p" /> <include - latin:keyboardLayout="@xml/rowkeys_bulgarian1" - latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> + latin:keyboardLayout="@xml/rowkeys_bulgarian1" /> <Key latin:keyStyle="deleteKeyStyle" latin:keyWidth="fillRight" /> diff --git a/java/res/xml-sw768dp/rows_bulgarian_bds.xml b/java/res/xml-sw768dp/rows_bulgarian_bds.xml index 8acb4d259..58c46113e 100644 --- a/java/res/xml-sw768dp/rows_bulgarian_bds.xml +++ b/java/res/xml-sw768dp/rows_bulgarian_bds.xml @@ -31,8 +31,7 @@ latin:keyLabelFlags="alignLeft" latin:keyWidth="7.969%p" /> <include - latin:keyboardLayout="@xml/rowkeys_bulgarian_bds1" - latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> + latin:keyboardLayout="@xml/rowkeys_bulgarian_bds1" /> <Key latin:keyStyle="deleteKeyStyle" latin:keyWidth="fillRight" /> diff --git a/java/res/xml-sw768dp/rows_colemak.xml b/java/res/xml-sw768dp/rows_colemak.xml index db9b0c247..073f812e5 100644 --- a/java/res/xml-sw768dp/rows_colemak.xml +++ b/java/res/xml-sw768dp/rows_colemak.xml @@ -31,8 +31,7 @@ latin:keyLabelFlags="alignLeft" latin:keyWidth="7.969%p" /> <include - latin:keyboardLayout="@xml/rowkeys_colemak1" - latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> + latin:keyboardLayout="@xml/rowkeys_colemak1" /> <include latin:keyboardLayout="@xml/key_colemak_colon" /> <Key diff --git a/java/res/xml-sw768dp/rows_dvorak.xml b/java/res/xml-sw768dp/rows_dvorak.xml index 941647815..60d5dd604 100644 --- a/java/res/xml-sw768dp/rows_dvorak.xml +++ b/java/res/xml-sw768dp/rows_dvorak.xml @@ -31,10 +31,7 @@ latin:keyLabelFlags="alignLeft" latin:keyWidth="7.969%p" /> <include - latin:keyboardLayout="@xml/keys_dvorak_123" /> - <include - latin:keyboardLayout="@xml/rowkeys_dvorak1" - latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> + latin:keyboardLayout="@xml/rowkeys_dvorak1" /> <Key latin:keyStyle="deleteKeyStyle" latin:keyWidth="fillRight" /> diff --git a/java/res/xml-sw768dp/rows_east_slavic.xml b/java/res/xml-sw768dp/rows_east_slavic.xml index a4287f162..420307d3e 100644 --- a/java/res/xml-sw768dp/rows_east_slavic.xml +++ b/java/res/xml-sw768dp/rows_east_slavic.xml @@ -31,8 +31,7 @@ latin:keyLabelFlags="alignLeft" latin:keyWidth="7.969%p" /> <include - latin:keyboardLayout="@xml/rowkeys_east_slavic1" - latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> + latin:keyboardLayout="@xml/rowkeys_east_slavic1" /> <Key latin:keyLabel="!text/keylabel_for_east_slavic_row1_12" /> <Key diff --git a/java/res/xml-sw768dp/rows_georgian.xml b/java/res/xml-sw768dp/rows_georgian.xml index 74f1a07c1..3f8bd4569 100644 --- a/java/res/xml-sw768dp/rows_georgian.xml +++ b/java/res/xml-sw768dp/rows_georgian.xml @@ -31,8 +31,7 @@ latin:keyLabelFlags="alignLeft" latin:keyWidth="7.969%p" /> <include - latin:keyboardLayout="@xml/rowkeys_georgian1" - latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> + latin:keyboardLayout="@xml/rowkeys_georgian1" /> <Key latin:keyStyle="deleteKeyStyle" latin:keyWidth="fillRight"/> diff --git a/java/res/xml-sw768dp/rows_greek.xml b/java/res/xml-sw768dp/rows_greek.xml index aebe12928..9e1e00b73 100644 --- a/java/res/xml-sw768dp/rows_greek.xml +++ b/java/res/xml-sw768dp/rows_greek.xml @@ -33,8 +33,7 @@ <include latin:keyboardLayout="@xml/key_greek_semicolon" /> <include - latin:keyboardLayout="@xml/rowkeys_greek1" - latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> + latin:keyboardLayout="@xml/rowkeys_greek1" /> <Key latin:keyStyle="deleteKeyStyle" latin:keyWidth="fillRight"/> diff --git a/java/res/xml-sw768dp/rows_hebrew.xml b/java/res/xml-sw768dp/rows_hebrew.xml index e588b830c..a5f6dfe09 100644 --- a/java/res/xml-sw768dp/rows_hebrew.xml +++ b/java/res/xml-sw768dp/rows_hebrew.xml @@ -31,10 +31,6 @@ latin:keyLabelFlags="alignLeft" latin:keyWidth="7.969%p" /> <include - latin:keyboardLayout="@xml/key_apostrophe" /> - <include - latin:keyboardLayout="@xml/key_dash" /> - <include latin:keyboardLayout="@xml/rowkeys_hebrew1" /> <Key latin:keyStyle="deleteKeyStyle" diff --git a/java/res/xml-sw768dp/rows_hindi.xml b/java/res/xml-sw768dp/rows_hindi.xml index 510772b13..6baf09e10 100644 --- a/java/res/xml-sw768dp/rows_hindi.xml +++ b/java/res/xml-sw768dp/rows_hindi.xml @@ -31,8 +31,7 @@ latin:keyLabelFlags="alignLeft" latin:keyWidth="7.969%p" /> <include - latin:keyboardLayout="@xml/rowkeys_hindi1" - latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> + latin:keyboardLayout="@xml/rowkeys_hindi1" /> <Key latin:keyStyle="deleteKeyStyle" latin:keyWidth="fillRight" /> diff --git a/java/res/xml-sw768dp/rows_mongolian.xml b/java/res/xml-sw768dp/rows_mongolian.xml index 9afd4e2db..5f37f8773 100644 --- a/java/res/xml-sw768dp/rows_mongolian.xml +++ b/java/res/xml-sw768dp/rows_mongolian.xml @@ -31,8 +31,7 @@ latin:keyLabelFlags="alignLeft" latin:keyWidth="7.969%p" /> <include - latin:keyboardLayout="@xml/rowkeys_mongolian1" - latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> + latin:keyboardLayout="@xml/rowkeys_mongolian1" /> <Key latin:keyStyle="deleteKeyStyle" latin:keyWidth="fillRight" /> diff --git a/java/res/xml-sw768dp/rows_nordic.xml b/java/res/xml-sw768dp/rows_nordic.xml index 06591a66e..13d9399e8 100644 --- a/java/res/xml-sw768dp/rows_nordic.xml +++ b/java/res/xml-sw768dp/rows_nordic.xml @@ -31,8 +31,7 @@ latin:keyLabelFlags="alignLeft" latin:keyWidth="7.969%p" /> <include - latin:keyboardLayout="@xml/rowkeys_nordic1" - latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> + latin:keyboardLayout="@xml/rowkeys_nordic1" /> <Key latin:keyStyle="deleteKeyStyle" latin:keyWidth="fillRight" /> diff --git a/java/res/xml-sw768dp/rows_qwerty.xml b/java/res/xml-sw768dp/rows_qwerty.xml index a1deabd3b..8af18ed72 100644 --- a/java/res/xml-sw768dp/rows_qwerty.xml +++ b/java/res/xml-sw768dp/rows_qwerty.xml @@ -31,8 +31,7 @@ latin:keyLabelFlags="alignLeft" latin:keyWidth="7.969%p" /> <include - latin:keyboardLayout="@xml/rowkeys_qwerty1" - latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> + latin:keyboardLayout="@xml/rowkeys_qwerty1" /> <Key latin:keyStyle="deleteKeyStyle" latin:keyWidth="fillRight"/> diff --git a/java/res/xml-sw768dp/rows_qwertz.xml b/java/res/xml-sw768dp/rows_qwertz.xml index 801dd38b6..0dd206d45 100644 --- a/java/res/xml-sw768dp/rows_qwertz.xml +++ b/java/res/xml-sw768dp/rows_qwertz.xml @@ -31,8 +31,7 @@ latin:keyLabelFlags="alignLeft" latin:keyWidth="7.969%p" /> <include - latin:keyboardLayout="@xml/rowkeys_qwertz1" - latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> + latin:keyboardLayout="@xml/rowkeys_qwertz1" /> <Key latin:keyStyle="deleteKeyStyle" latin:keyWidth="fillRight"/> diff --git a/java/res/xml-sw768dp/rows_south_slavic.xml b/java/res/xml-sw768dp/rows_south_slavic.xml index b55685330..6b44c4e6a 100644 --- a/java/res/xml-sw768dp/rows_south_slavic.xml +++ b/java/res/xml-sw768dp/rows_south_slavic.xml @@ -31,8 +31,7 @@ latin:keyLabelFlags="alignLeft" latin:keyWidth="7.969%p" /> <include - latin:keyboardLayout="@xml/rowkeys_south_slavic1" - latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> + latin:keyboardLayout="@xml/rowkeys_south_slavic1" /> <Key latin:keyStyle="deleteKeyStyle" latin:keyWidth="fillRight" /> diff --git a/java/res/xml-sw768dp/rows_spanish.xml b/java/res/xml-sw768dp/rows_spanish.xml index 8b8033288..4520c100d 100644 --- a/java/res/xml-sw768dp/rows_spanish.xml +++ b/java/res/xml-sw768dp/rows_spanish.xml @@ -31,8 +31,7 @@ latin:keyLabelFlags="alignLeft" latin:keyWidth="7.969%p" /> <include - latin:keyboardLayout="@xml/rowkeys_qwerty1" - latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> + latin:keyboardLayout="@xml/rowkeys_qwerty1" /> <Key latin:keyStyle="deleteKeyStyle" latin:keyWidth="fillRight"/> diff --git a/java/res/xml/keys_dvorak_123.xml b/java/res/xml/keys_dvorak_123.xml index 60e6b6f0d..7124c89e7 100644 --- a/java/res/xml/keys_dvorak_123.xml +++ b/java/res/xml/keys_dvorak_123.xml @@ -51,7 +51,7 @@ latin:keyLabel="\'" latin:keyHintLabel="1" latin:additionalMoreKeys="1" - latin:moreKeys="!" /> + latin:moreKeys="!,"" /> </default> </switch> <switch> @@ -72,13 +72,13 @@ latin:keyLabel="," latin:keyHintLabel="2" latin:additionalMoreKeys="2" - latin:moreKeys="\?" /> + latin:moreKeys="\?,<" /> <Key latin:keyLabel="." latin:keyHintLabel="3" latin:additionalMoreKeys="3" latin:keyLabelFlags="hasPopupHint|preserveCase" - latin:moreKeys="!text/more_keys_for_punctuation,%" /> + latin:moreKeys="!text/more_keys_for_punctuation,%,>" /> </default> </switch> </merge> diff --git a/java/res/xml/rowkeys_dvorak1.xml b/java/res/xml/rowkeys_dvorak1.xml index 7e0eb6e71..033308acb 100644 --- a/java/res/xml/rowkeys_dvorak1.xml +++ b/java/res/xml/rowkeys_dvorak1.xml @@ -21,6 +21,8 @@ <merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > + <include + latin:keyboardLayout="@xml/keys_dvorak_123" /> <Key latin:keyLabel="p" latin:keyHintLabel="4" diff --git a/java/res/xml/rowkeys_thai1.xml b/java/res/xml/rowkeys_thai1.xml index 950d2a456..cd536656f 100644 --- a/java/res/xml/rowkeys_thai1.xml +++ b/java/res/xml/rowkeys_thai1.xml @@ -81,17 +81,33 @@ <Key latin:keyLabel="ๅ" latin:keyLabelFlags="fontNormal" /> + <!-- U+0E51: "๑" THAI DIGIT ONE --> <Key + latin:keyHintLabel="1" + latin:additionalMoreKeys="1" + latin:moreKeys="๑" latin:keyLabel="/" /> + <!-- U+0E52: "๒" THAI DIGIT TWO --> <Key + latin:keyHintLabel="2" + latin:additionalMoreKeys="2" + latin:moreKeys="๒" latin:keyLabel="_" /> - <!-- U+0E20: "ภ" THAI CHARACTER PHO SAMPHAO --> + <!-- U+0E20: "ภ" THAI CHARACTER PHO SAMPHAO + U+0E53: "๓" THAI DIGIT THREE --> <Key latin:keyLabel="ภ" + latin:keyHintLabel="3" + latin:additionalMoreKeys="3" + latin:moreKeys="๓" latin:keyLabelFlags="fontNormal" /> - <!-- U+0E16: "ถ" THAI CHARACTER THO THUNG --> + <!-- U+0E16: "ถ" THAI CHARACTER THO THUNG + U+0E54: "๔" THAI DIGIT FOUR --> <Key latin:keyLabel="ถ" + latin:keyHintLabel="4" + latin:additionalMoreKeys="4" + latin:moreKeys="๔" latin:keyLabelFlags="fontNormal" /> <!-- U+0020: " " SPACE U+0E38: " ุ" THAI CHARACTER SARA U --> @@ -109,25 +125,45 @@ latin:keyLabel=" ึ" latin:code="0x0E36" latin:keyLabelFlags="fontNormal|followKeyLetterRatio" /> - <!-- U+0E04: "ค" THAI CHARACTER KHO KHWAI --> + <!-- U+0E04: "ค" THAI CHARACTER KHO KHWAI + U+0E55: "๕" THAI DIGIT FIVE --> <Key latin:keyLabel="ค" + latin:keyHintLabel="5" + latin:additionalMoreKeys="5" + latin:moreKeys="๕" latin:keyLabelFlags="fontNormal" /> - <!-- U+0E15: "ต" THAI CHARACTER TO TAO --> + <!-- U+0E15: "ต" THAI CHARACTER TO TAO + U+0E56: "๖" THAI DIGIT SIX --> <Key latin:keyLabel="ต" + latin:keyHintLabel="6" + latin:additionalMoreKeys="6" + latin:moreKeys="๖" latin:keyLabelFlags="fontNormal" /> - <!-- U+0E08: "จ" THAI CHARACTER CHO CHAN --> + <!-- U+0E08: "จ" THAI CHARACTER CHO CHAN + U+0E57: "๗" THAI DIGIT SEVEN --> <Key latin:keyLabel="จ" + latin:keyHintLabel="7" + latin:additionalMoreKeys="7" + latin:moreKeys="๗" latin:keyLabelFlags="fontNormal" /> - <!-- U+0E02: "ข" THAI CHARACTER KHO KHAI --> + <!-- U+0E02: "ข" THAI CHARACTER KHO KHAI + U+0E58: "๘" THAI DIGIT EIGHT --> <Key latin:keyLabel="ข" + latin:keyHintLabel="8" + latin:additionalMoreKeys="8" + latin:moreKeys="๘" latin:keyLabelFlags="fontNormal" /> - <!-- U+0E0A: "ช" THAI CHARACTER CHO CHANG --> + <!-- U+0E0A: "ช" THAI CHARACTER CHO CHANG + U+0E59: "๙" THAI DIGIT NINE --> <Key latin:keyLabel="ช" + latin:keyHintLabel="9" + latin:additionalMoreKeys="9" + latin:moreKeys="๙" latin:keyLabelFlags="fontNormal" /> </default> </switch> diff --git a/java/res/xml/rowkeys_thai2.xml b/java/res/xml/rowkeys_thai2.xml index f602994b9..4bcbbbf8d 100644 --- a/java/res/xml/rowkeys_thai2.xml +++ b/java/res/xml/rowkeys_thai2.xml @@ -79,9 +79,13 @@ latin:keyLabel="," /> </case> <default> - <!-- U+0E46: "ๆ" THAI CHARACTER MAIYAMOK --> + <!-- U+0E46: "ๆ" THAI CHARACTER MAIYAMOK + U+0E50: "๐" THAI DIGIT ZERO --> <Key latin:keyLabel="ๆ" + latin:keyHintLabel="0" + latin:additionalMoreKeys="0" + latin:moreKeys="๐" latin:keyLabelFlags="fontNormal" /> <!-- U+0E44: "ไ" THAI CHARACTER SARA AI MAIMALAI --> <Key diff --git a/java/res/xml/rows_dvorak.xml b/java/res/xml/rows_dvorak.xml index 8e3d071b0..13d70210d 100644 --- a/java/res/xml/rows_dvorak.xml +++ b/java/res/xml/rows_dvorak.xml @@ -27,8 +27,6 @@ latin:keyWidth="10%p" > <include - latin:keyboardLayout="@xml/keys_dvorak_123" /> - <include latin:keyboardLayout="@xml/rowkeys_dvorak1" /> </Row> <Row diff --git a/native/jni/Android.mk b/native/jni/Android.mk index fb60139d3..d5df6b62e 100644 --- a/native/jni/Android.mk +++ b/native/jni/Android.mk @@ -53,10 +53,10 @@ LATIN_IME_CORE_SRC_FILES := \ dic_nodes_cache.cpp) \ $(addprefix suggest/core/dictionary/, \ bigram_dictionary.cpp \ - binary_dictionary_bigrams_reading_utils.cpp \ binary_dictionary_format_utils.cpp \ binary_dictionary_header.cpp \ binary_dictionary_header_reading_utils.cpp \ + binary_dictionary_terminal_attributes_reading_utils.cpp \ bloom_filter.cpp \ byte_array_utils.cpp \ dictionary.cpp \ diff --git a/native/jni/src/suggest/core/dictionary/binary_dictionary_bigrams_iterator.h b/native/jni/src/suggest/core/dictionary/binary_dictionary_bigrams_iterator.h index 0856840b2..f2b48e960 100644 --- a/native/jni/src/suggest/core/dictionary/binary_dictionary_bigrams_iterator.h +++ b/native/jni/src/suggest/core/dictionary/binary_dictionary_bigrams_iterator.h @@ -18,8 +18,8 @@ #define LATINIME_BINARY_DICTIONARY_BIGRAMS_ITERATOR_H #include "defines.h" -#include "suggest/core/dictionary/binary_dictionary_bigrams_reading_utils.h" #include "suggest/core/dictionary/binary_dictionary_info.h" +#include "suggest/core/dictionary/binary_dictionary_terminal_attributes_reading_utils.h" namespace latinime { @@ -35,15 +35,17 @@ class BinaryDictionaryBigramsIterator { } AK_FORCE_INLINE void next() { - mBigramFlags = BinaryDictionaryBigramsReadingUtils::getFlagsAndForwardPointer( + mBigramFlags = BinaryDictionaryTerminalAttributesReadingUtils::getFlagsAndForwardPointer( mBinaryDictionaryInfo, &mPos); - mBigramPos = BinaryDictionaryBigramsReadingUtils::getBigramAddressAndForwardPointer( - mBinaryDictionaryInfo, mBigramFlags, &mPos); - mHasNext = BinaryDictionaryBigramsReadingUtils::hasNext(mBigramFlags); + mBigramPos = + BinaryDictionaryTerminalAttributesReadingUtils::getBigramAddressAndForwardPointer( + mBinaryDictionaryInfo, mBigramFlags, &mPos); + mHasNext = BinaryDictionaryTerminalAttributesReadingUtils::hasNext(mBigramFlags); } AK_FORCE_INLINE int getProbability() const { - return BinaryDictionaryBigramsReadingUtils::getBigramProbability(mBigramFlags); + return BinaryDictionaryTerminalAttributesReadingUtils::getProbabilityFromFlags( + mBigramFlags); } AK_FORCE_INLINE int getBigramPos() const { @@ -59,7 +61,7 @@ class BinaryDictionaryBigramsIterator { const BinaryDictionaryInfo *const mBinaryDictionaryInfo; int mPos; - BinaryDictionaryBigramsReadingUtils::BigramFlags mBigramFlags; + BinaryDictionaryTerminalAttributesReadingUtils::BigramFlags mBigramFlags; int mBigramPos; bool mHasNext; }; diff --git a/native/jni/src/suggest/core/dictionary/binary_dictionary_bigrams_reading_utils.cpp b/native/jni/src/suggest/core/dictionary/binary_dictionary_terminal_attributes_reading_utils.cpp index 78a54b141..0a7509c8b 100644 --- a/native/jni/src/suggest/core/dictionary/binary_dictionary_bigrams_reading_utils.cpp +++ b/native/jni/src/suggest/core/dictionary/binary_dictionary_terminal_attributes_reading_utils.cpp @@ -14,33 +14,28 @@ * limitations under the License. */ -#include "suggest/core/dictionary/binary_dictionary_bigrams_reading_utils.h" +#include "suggest/core/dictionary/binary_dictionary_terminal_attributes_reading_utils.h" #include "suggest/core/dictionary/binary_dictionary_info.h" #include "suggest/core/dictionary/byte_array_utils.h" namespace latinime { -const BinaryDictionaryBigramsReadingUtils::BigramFlags - BinaryDictionaryBigramsReadingUtils::MASK_ATTRIBUTE_ADDRESS_TYPE = 0x30; -const BinaryDictionaryBigramsReadingUtils::BigramFlags - BinaryDictionaryBigramsReadingUtils::FLAG_ATTRIBUTE_ADDRESS_TYPE_ONEBYTE = 0x10; -const BinaryDictionaryBigramsReadingUtils::BigramFlags - BinaryDictionaryBigramsReadingUtils::FLAG_ATTRIBUTE_ADDRESS_TYPE_TWOBYTES = 0x20; -const BinaryDictionaryBigramsReadingUtils::BigramFlags - BinaryDictionaryBigramsReadingUtils::FLAG_ATTRIBUTE_ADDRESS_TYPE_THREEBYTES = 0x30; -const BinaryDictionaryBigramsReadingUtils::BigramFlags - BinaryDictionaryBigramsReadingUtils::FLAG_ATTRIBUTE_OFFSET_NEGATIVE = 0x40; +typedef BinaryDictionaryTerminalAttributesReadingUtils TaUtils; + +const TaUtils::TerminalAttributeFlags TaUtils::MASK_ATTRIBUTE_ADDRESS_TYPE = 0x30; +const TaUtils::TerminalAttributeFlags TaUtils::FLAG_ATTRIBUTE_ADDRESS_TYPE_ONEBYTE = 0x10; +const TaUtils::TerminalAttributeFlags TaUtils::FLAG_ATTRIBUTE_ADDRESS_TYPE_TWOBYTES = 0x20; +const TaUtils::TerminalAttributeFlags TaUtils::FLAG_ATTRIBUTE_ADDRESS_TYPE_THREEBYTES = 0x30; +const TaUtils::TerminalAttributeFlags TaUtils::FLAG_ATTRIBUTE_OFFSET_NEGATIVE = 0x40; // Flag for presence of more attributes -const BinaryDictionaryBigramsReadingUtils::BigramFlags - BinaryDictionaryBigramsReadingUtils::FLAG_ATTRIBUTE_HAS_NEXT = 0x80; +const TaUtils::TerminalAttributeFlags TaUtils::FLAG_ATTRIBUTE_HAS_NEXT = 0x80; // Mask for attribute probability, stored on 4 bits inside the flags byte. -const BinaryDictionaryBigramsReadingUtils::BigramFlags - BinaryDictionaryBigramsReadingUtils::MASK_ATTRIBUTE_PROBABILITY = 0x0F; -const int BinaryDictionaryBigramsReadingUtils::ATTRIBUTE_ADDRESS_SHIFT = 4; +const TaUtils::TerminalAttributeFlags TaUtils::MASK_ATTRIBUTE_PROBABILITY = 0x0F; +const int TaUtils::ATTRIBUTE_ADDRESS_SHIFT = 4; -/* static */ int BinaryDictionaryBigramsReadingUtils::getBigramAddressAndForwardPointer( - const BinaryDictionaryInfo *const binaryDictionaryInfo, const BigramFlags flags, +/* static */ int TaUtils::getBigramAddressAndForwardPointer( + const BinaryDictionaryInfo *const binaryDictionaryInfo, const TerminalAttributeFlags flags, int *const pos) { int offset = 0; const int origin = *pos; diff --git a/native/jni/src/suggest/core/dictionary/binary_dictionary_bigrams_reading_utils.h b/native/jni/src/suggest/core/dictionary/binary_dictionary_terminal_attributes_reading_utils.h index e71f2a17a..f38fd5aaa 100644 --- a/native/jni/src/suggest/core/dictionary/binary_dictionary_bigrams_reading_utils.h +++ b/native/jni/src/suggest/core/dictionary/binary_dictionary_terminal_attributes_reading_utils.h @@ -14,8 +14,8 @@ * limitations under the License. */ -#ifndef LATINIME_BINARY_DICTIONARY_BIGRAM_READING_UTILS_H -#define LATINIME_BINARY_DICTIONARY_BIGRAM_READING_UTILS_H +#ifndef LATINIME_BINARY_DICTIONARY_TERMINAL_ATTRIBUTES_READING_UTILS_H +#define LATINIME_BINARY_DICTIONARY_TERMINAL_ATTRIBUTES_READING_UTILS_H #include <stdint.h> @@ -25,55 +25,57 @@ namespace latinime { -class BinaryDictionaryBigramsReadingUtils { +class BinaryDictionaryTerminalAttributesReadingUtils { public: - typedef uint8_t BigramFlags; + typedef uint8_t TerminalAttributeFlags; + typedef TerminalAttributeFlags BigramFlags; - static AK_FORCE_INLINE void skipExistingBigrams( - const BinaryDictionaryInfo *const binaryDictionaryInfo, int *const pos) { - BigramFlags flags = getFlagsAndForwardPointer(binaryDictionaryInfo, pos); - while (hasNext(flags)) { - *pos += attributeAddressSize(flags); - flags = getFlagsAndForwardPointer(binaryDictionaryInfo, pos); - } - *pos += attributeAddressSize(flags); - } - - static AK_FORCE_INLINE BigramFlags getFlagsAndForwardPointer( + static AK_FORCE_INLINE TerminalAttributeFlags getFlagsAndForwardPointer( const BinaryDictionaryInfo *const binaryDictionaryInfo, int *const pos) { return ByteArrayUtils::readUint8andAdvancePosition( binaryDictionaryInfo->getDictRoot(), pos); } - static AK_FORCE_INLINE int getBigramProbability(const BigramFlags flags) { + static AK_FORCE_INLINE int getProbabilityFromFlags(const TerminalAttributeFlags flags) { return flags & MASK_ATTRIBUTE_PROBABILITY; } - static AK_FORCE_INLINE bool isOffsetNegative(const BigramFlags flags) { - return (flags & FLAG_ATTRIBUTE_OFFSET_NEGATIVE) != 0; + static AK_FORCE_INLINE bool hasNext(const TerminalAttributeFlags flags) { + return (flags & FLAG_ATTRIBUTE_HAS_NEXT) != 0; } - static AK_FORCE_INLINE bool hasNext(const BigramFlags flags) { - return (flags & FLAG_ATTRIBUTE_HAS_NEXT) != 0; + // Bigrams reading methods + static AK_FORCE_INLINE void skipExistingBigrams( + const BinaryDictionaryInfo *const binaryDictionaryInfo, int *const pos) { + BigramFlags flags = getFlagsAndForwardPointer(binaryDictionaryInfo, pos); + while (hasNext(flags)) { + *pos += attributeAddressSize(flags); + flags = getFlagsAndForwardPointer(binaryDictionaryInfo, pos); + } + *pos += attributeAddressSize(flags); } static int getBigramAddressAndForwardPointer( - const BinaryDictionaryInfo *const binaryDictionaryInfo, - const BigramFlags flags, int *const pos); + const BinaryDictionaryInfo *const binaryDictionaryInfo, const BigramFlags flags, + int *const pos); private: - DISALLOW_IMPLICIT_CONSTRUCTORS(BinaryDictionaryBigramsReadingUtils); + DISALLOW_IMPLICIT_CONSTRUCTORS(BinaryDictionaryTerminalAttributesReadingUtils); - static const BigramFlags MASK_ATTRIBUTE_ADDRESS_TYPE; - static const BigramFlags FLAG_ATTRIBUTE_ADDRESS_TYPE_ONEBYTE; - static const BigramFlags FLAG_ATTRIBUTE_ADDRESS_TYPE_TWOBYTES; - static const BigramFlags FLAG_ATTRIBUTE_ADDRESS_TYPE_THREEBYTES; - static const BigramFlags FLAG_ATTRIBUTE_OFFSET_NEGATIVE; - static const BigramFlags FLAG_ATTRIBUTE_HAS_NEXT; - static const BigramFlags MASK_ATTRIBUTE_PROBABILITY; + static const TerminalAttributeFlags MASK_ATTRIBUTE_ADDRESS_TYPE; + static const TerminalAttributeFlags FLAG_ATTRIBUTE_ADDRESS_TYPE_ONEBYTE; + static const TerminalAttributeFlags FLAG_ATTRIBUTE_ADDRESS_TYPE_TWOBYTES; + static const TerminalAttributeFlags FLAG_ATTRIBUTE_ADDRESS_TYPE_THREEBYTES; + static const TerminalAttributeFlags FLAG_ATTRIBUTE_OFFSET_NEGATIVE; + static const TerminalAttributeFlags FLAG_ATTRIBUTE_HAS_NEXT; + static const TerminalAttributeFlags MASK_ATTRIBUTE_PROBABILITY; static const int ATTRIBUTE_ADDRESS_SHIFT; - static AK_FORCE_INLINE int attributeAddressSize(const BigramFlags flags) { + static AK_FORCE_INLINE bool isOffsetNegative(const TerminalAttributeFlags flags) { + return (flags & FLAG_ATTRIBUTE_OFFSET_NEGATIVE) != 0; + } + + static AK_FORCE_INLINE int attributeAddressSize(const TerminalAttributeFlags flags) { return (flags & MASK_ATTRIBUTE_ADDRESS_TYPE) >> ATTRIBUTE_ADDRESS_SHIFT; /* Note: this is a value-dependant optimization of what may probably be more readably written this way: @@ -87,4 +89,4 @@ class BinaryDictionaryBigramsReadingUtils { } }; } -#endif /* LATINIME_BINARY_DICTIONARY_BIGRAM_READING_UTILS_H */ +#endif /* LATINIME_BINARY_DICTIONARY_TERMINAL_ATTRIBUTES_READING_UTILS_H */ 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 cc6410af1..dbcd54488 100644 --- a/native/jni/src/suggest/core/layout/proximity_info_state.h +++ b/native/jni/src/suggest/core/layout/proximity_info_state.h @@ -90,20 +90,7 @@ class ProximityInfoState { return false; } - // TODO: Promote insertion letter correction if that letter is a proximity of the previous - // letter like follows: - // // Demotion for a word with excessive character - // if (excessiveCount > 0) { - // multiplyRate(WORDS_WITH_EXCESSIVE_CHARACTER_DEMOTION_RATE, &finalFreq); - // if (!lastCharExceeded - // && !proximityInfoState->existsAdjacentProximityChars(excessivePos)) { - // // If an excessive character is not adjacent to the left char or the right char, - // // we will demote this word. - // multiplyRate(WORDS_WITH_EXCESSIVE_CHARACTER_OUT_OF_PROXIMITY_DEMOTION_RATE, - // &finalFreq); - // } - // } - inline bool existsAdjacentProximityChars(const int index) const { + AK_FORCE_INLINE bool existsAdjacentProximityChars(const int index) const { if (index < 0 || index >= mSampledInputSize) return false; const int currentCodePoint = getPrimaryCodePointAt(index); const int leftIndex = index - 1; diff --git a/native/jni/src/suggest/policyimpl/typing/scoring_params.cpp b/native/jni/src/suggest/policyimpl/typing/scoring_params.cpp index f87989286..2659e4a23 100644 --- a/native/jni/src/suggest/policyimpl/typing/scoring_params.cpp +++ b/native/jni/src/suggest/policyimpl/typing/scoring_params.cpp @@ -33,6 +33,7 @@ const float ScoringParams::OMISSION_COST_SAME_CHAR = 0.491f; const float ScoringParams::OMISSION_COST_FIRST_CHAR = 0.582f; const float ScoringParams::INSERTION_COST = 0.730f; const float ScoringParams::INSERTION_COST_SAME_CHAR = 0.586f; +const float ScoringParams::INSERTION_COST_PROXIMITY_CHAR = 0.70f; const float ScoringParams::INSERTION_COST_FIRST_CHAR = 0.623f; const float ScoringParams::TRANSPOSITION_COST = 0.516f; const float ScoringParams::SPACE_SUBSTITUTION_COST = 0.319f; diff --git a/native/jni/src/suggest/policyimpl/typing/scoring_params.h b/native/jni/src/suggest/policyimpl/typing/scoring_params.h index 53ac999c1..c39c41779 100644 --- a/native/jni/src/suggest/policyimpl/typing/scoring_params.h +++ b/native/jni/src/suggest/policyimpl/typing/scoring_params.h @@ -42,6 +42,7 @@ class ScoringParams { static const float OMISSION_COST_FIRST_CHAR; static const float INSERTION_COST; static const float INSERTION_COST_SAME_CHAR; + static const float INSERTION_COST_PROXIMITY_CHAR; static const float INSERTION_COST_FIRST_CHAR; static const float TRANSPOSITION_COST; static const float SPACE_SUBSTITUTION_COST; diff --git a/native/jni/src/suggest/policyimpl/typing/typing_weighting.h b/native/jni/src/suggest/policyimpl/typing/typing_weighting.h index 7ba4af5f9..e098f353e 100644 --- a/native/jni/src/suggest/policyimpl/typing/typing_weighting.h +++ b/native/jni/src/suggest/policyimpl/typing/typing_weighting.h @@ -122,19 +122,25 @@ class TypingWeighting : public Weighting { float getInsertionCost(const DicTraverseSession *const traverseSession, const DicNode *const parentDicNode, const DicNode *const dicNode) const { - const int16_t parentPointIndex = parentDicNode->getInputIndex(0); - const int prevCodePoint = - traverseSession->getProximityInfoState(0)->getPrimaryCodePointAt(parentPointIndex); - + const int16_t insertedPointIndex = parentDicNode->getInputIndex(0); + const int prevCodePoint = traverseSession->getProximityInfoState(0)->getPrimaryCodePointAt( + insertedPointIndex); const int currentCodePoint = dicNode->getNodeCodePoint(); const bool sameCodePoint = prevCodePoint == currentCodePoint; + const bool existsAdjacentProximityChars = traverseSession->getProximityInfoState(0) + ->existsAdjacentProximityChars(insertedPointIndex); const float dist = traverseSession->getProximityInfoState(0)->getPointToKeyLength( - parentPointIndex + 1, currentCodePoint); + insertedPointIndex + 1, dicNode->getNodeCodePoint()); const float weightedDistance = dist * ScoringParams::DISTANCE_WEIGHT_LENGTH; const bool singleChar = dicNode->getNodeCodePointCount() == 1; - const float cost = (singleChar ? ScoringParams::INSERTION_COST_FIRST_CHAR : 0.0f) - + (sameCodePoint ? ScoringParams::INSERTION_COST_SAME_CHAR - : ScoringParams::INSERTION_COST); + float cost = (singleChar ? ScoringParams::INSERTION_COST_FIRST_CHAR : 0.0f); + if (sameCodePoint) { + cost += ScoringParams::INSERTION_COST_SAME_CHAR; + } else if (existsAdjacentProximityChars) { + cost += ScoringParams::INSERTION_COST_PROXIMITY_CHAR; + } else { + cost += ScoringParams::INSERTION_COST; + } return cost + weightedDistance; } |