Merge "Extend center point vertically for bottom keys on a keyboard."
diff --git a/java/res/xml-sw600dp/keys_dvorak_123.xml b/java/res/xml-sw600dp/keys_dvorak_123.xml
index 635ea04..851c14b 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 6a0e257..3c0acf1 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 7b31240..6dd9a65 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 824ee38..5a5a7d1 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 7253236..2635620 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 db6220e..9439a63 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 f7e903b..98a24e4 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 2fa8eb2..8859267 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 3096255..b4160d6 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 61d3eb0..b0e9e35 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 6a10228..de214c6 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 f9e6f51..9945dee 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 9678465..2a9a419 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 cfd8c8c..dc0c1fe 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 4314403..299bf89 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 bac02fd..722f9d1 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 98ddd08..f2f832c 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 e53a2ee..6ef6643 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 b48ee01..bca9bba 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 dcc403b..cf4bc92 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 6453414..bdc1262 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 8acb4d2..58c4611 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 db9b0c2..073f812 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 9416478..60d5dd6 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 a4287f1..420307d 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 74f1a07..3f8bd45 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 aebe129..9e1e00b 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 e588b83..a5f6dfe 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 510772b..6baf09e 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 9afd4e2..5f37f87 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 06591a6..13d9399 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 a1deabd..8af18ed 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 801dd38..0dd206d 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 b556853..6b44c4e 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 8b80332..4520c10 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 60e6b6f..7124c89 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 7e0eb6e..033308a 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 950d2a4..cd53665 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 f602994..4bcbbbf 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 8e3d071..13d7021 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 fb60139..d5df6b6 100644
--- a/native/jni/Android.mk
+++ b/native/jni/Android.mk
@@ -53,10 +53,10 @@
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 0856840..f2b48e9 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 @@
}
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 @@
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_bigrams_reading_utils.cpp
deleted file mode 100644
index 78a54b1..0000000
--- a/native/jni/src/suggest/core/dictionary/binary_dictionary_bigrams_reading_utils.cpp
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (C) 2013 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.
- */
-
-#include "suggest/core/dictionary/binary_dictionary_bigrams_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;
-// Flag for presence of more attributes
-const BinaryDictionaryBigramsReadingUtils::BigramFlags
- BinaryDictionaryBigramsReadingUtils::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;
-
-/* static */ int BinaryDictionaryBigramsReadingUtils::getBigramAddressAndForwardPointer(
- const BinaryDictionaryInfo *const binaryDictionaryInfo, const BigramFlags flags,
- int *const pos) {
- int offset = 0;
- const int origin = *pos;
- switch (MASK_ATTRIBUTE_ADDRESS_TYPE & flags) {
- case FLAG_ATTRIBUTE_ADDRESS_TYPE_ONEBYTE:
- offset = ByteArrayUtils::readUint8andAdvancePosition(
- binaryDictionaryInfo->getDictRoot(), pos);
- break;
- case FLAG_ATTRIBUTE_ADDRESS_TYPE_TWOBYTES:
- offset = ByteArrayUtils::readUint16andAdvancePosition(
- binaryDictionaryInfo->getDictRoot(), pos);
- break;
- case FLAG_ATTRIBUTE_ADDRESS_TYPE_THREEBYTES:
- offset = ByteArrayUtils::readUint24andAdvancePosition(
- binaryDictionaryInfo->getDictRoot(), pos);
- break;
- }
- if (isOffsetNegative(flags)) {
- return origin - offset;
- } else {
- return origin + offset;
- }
-}
-
-} // namespace latinime
diff --git a/native/jni/src/suggest/core/dictionary/binary_dictionary_terminal_attributes_reading_utils.cpp b/native/jni/src/suggest/core/dictionary/binary_dictionary_terminal_attributes_reading_utils.cpp
new file mode 100644
index 0000000..0a7509c
--- /dev/null
+++ b/native/jni/src/suggest/core/dictionary/binary_dictionary_terminal_attributes_reading_utils.cpp
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+
+#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 {
+
+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 TaUtils::TerminalAttributeFlags TaUtils::FLAG_ATTRIBUTE_HAS_NEXT = 0x80;
+// Mask for attribute probability, stored on 4 bits inside the flags byte.
+const TaUtils::TerminalAttributeFlags TaUtils::MASK_ATTRIBUTE_PROBABILITY = 0x0F;
+const int TaUtils::ATTRIBUTE_ADDRESS_SHIFT = 4;
+
+/* static */ int TaUtils::getBigramAddressAndForwardPointer(
+ const BinaryDictionaryInfo *const binaryDictionaryInfo, const TerminalAttributeFlags flags,
+ int *const pos) {
+ int offset = 0;
+ const int origin = *pos;
+ switch (MASK_ATTRIBUTE_ADDRESS_TYPE & flags) {
+ case FLAG_ATTRIBUTE_ADDRESS_TYPE_ONEBYTE:
+ offset = ByteArrayUtils::readUint8andAdvancePosition(
+ binaryDictionaryInfo->getDictRoot(), pos);
+ break;
+ case FLAG_ATTRIBUTE_ADDRESS_TYPE_TWOBYTES:
+ offset = ByteArrayUtils::readUint16andAdvancePosition(
+ binaryDictionaryInfo->getDictRoot(), pos);
+ break;
+ case FLAG_ATTRIBUTE_ADDRESS_TYPE_THREEBYTES:
+ offset = ByteArrayUtils::readUint24andAdvancePosition(
+ binaryDictionaryInfo->getDictRoot(), pos);
+ break;
+ }
+ if (isOffsetNegative(flags)) {
+ return origin - offset;
+ } else {
+ return origin + offset;
+ }
+}
+
+} // namespace latinime
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
similarity index 61%
rename from native/jni/src/suggest/core/dictionary/binary_dictionary_bigrams_reading_utils.h
rename to native/jni/src/suggest/core/dictionary/binary_dictionary_terminal_attributes_reading_utils.h
index e71f2a1..f38fd5a 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,10 +25,26 @@
namespace latinime {
-class BinaryDictionaryBigramsReadingUtils {
+class BinaryDictionaryTerminalAttributesReadingUtils {
public:
- typedef uint8_t BigramFlags;
+ typedef uint8_t TerminalAttributeFlags;
+ typedef TerminalAttributeFlags BigramFlags;
+ static AK_FORCE_INLINE TerminalAttributeFlags getFlagsAndForwardPointer(
+ const BinaryDictionaryInfo *const binaryDictionaryInfo, int *const pos) {
+ return ByteArrayUtils::readUint8andAdvancePosition(
+ binaryDictionaryInfo->getDictRoot(), pos);
+ }
+
+ static AK_FORCE_INLINE int getProbabilityFromFlags(const TerminalAttributeFlags flags) {
+ return flags & MASK_ATTRIBUTE_PROBABILITY;
+ }
+
+ static AK_FORCE_INLINE bool hasNext(const TerminalAttributeFlags 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);
@@ -39,41 +55,27 @@
*pos += attributeAddressSize(flags);
}
- static AK_FORCE_INLINE BigramFlags getFlagsAndForwardPointer(
- const BinaryDictionaryInfo *const binaryDictionaryInfo, int *const pos) {
- return ByteArrayUtils::readUint8andAdvancePosition(
- binaryDictionaryInfo->getDictRoot(), pos);
- }
+ static int getBigramAddressAndForwardPointer(
+ const BinaryDictionaryInfo *const binaryDictionaryInfo, const BigramFlags flags,
+ int *const pos);
- static AK_FORCE_INLINE int getBigramProbability(const BigramFlags flags) {
- return flags & MASK_ATTRIBUTE_PROBABILITY;
- }
+ private:
+ DISALLOW_IMPLICIT_CONSTRUCTORS(BinaryDictionaryTerminalAttributesReadingUtils);
- static AK_FORCE_INLINE bool isOffsetNegative(const BigramFlags flags) {
+ 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 bool isOffsetNegative(const TerminalAttributeFlags flags) {
return (flags & FLAG_ATTRIBUTE_OFFSET_NEGATIVE) != 0;
}
- static AK_FORCE_INLINE bool hasNext(const BigramFlags flags) {
- return (flags & FLAG_ATTRIBUTE_HAS_NEXT) != 0;
- }
-
- static int getBigramAddressAndForwardPointer(
- const BinaryDictionaryInfo *const binaryDictionaryInfo,
- const BigramFlags flags, int *const pos);
-
- private:
- DISALLOW_IMPLICIT_CONSTRUCTORS(BinaryDictionaryBigramsReadingUtils);
-
- 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 int ATTRIBUTE_ADDRESS_SHIFT;
-
- static AK_FORCE_INLINE int attributeAddressSize(const BigramFlags flags) {
+ 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 @@
}
};
}
-#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 cc6410a..dbcd544 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 @@
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 f879892..2659e4a 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_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 53ac999..c39c417 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 @@
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 7ba4af5..e098f35 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 @@
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;
}