diff options
Diffstat (limited to 'java')
49 files changed, 206 insertions, 162 deletions
diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml index 4bf5414a1..7cad3f507 100644 --- a/java/res/values/attrs.xml +++ b/java/res/values/attrs.xml @@ -308,14 +308,10 @@ <attr name="visualInsetsRight" format="dimension|fraction" /> <!-- Width of the key, in pixels or percentage of display width. If the value is fillRight, the actual key width will be determined to fill out the area - up to the right edge of the keyboard. - If the value is fillBoth, the actual key width will be determined to fill out the - area between the nearest key on the left hand side and the right edge of the keyboard. - --> + up to the right edge of the keyboard. --> <!-- This should be aligned with KeyboardBuilder.Row.KEYWIDTH_* --> <attr name="keyWidth" format="dimension|fraction|enum"> <enum name="fillRight" value="-1" /> - <enum name="fillBoth" value="-2" /> </attr> <!-- The X-coordinate of upper right corner of this key including horizontal gap. If the value is negative, the origin is the right edge of the keyboard. --> diff --git a/java/res/xml-sw768dp/key_space.xml b/java/res/xml-sw768dp/key_space.xml index 36326c437..8968f080a 100644 --- a/java/res/xml-sw768dp/key_space.xml +++ b/java/res/xml-sw768dp/key_space.xml @@ -27,7 +27,7 @@ > <Key latin:keyStyle="spaceKeyStyle" - latin:keyWidth="29.453%p" /> + latin:keyWidth="32.188%p" /> <!-- U+200C: "" ZERO WIDTH NON-JOINER U+200D: "" ZERO WIDTH JOINER --> <Key @@ -36,7 +36,7 @@ <default> <Key latin:keyStyle="spaceKeyStyle" - latin:keyWidth="37.500%p" /> + latin:keyWidth="40.235%p" /> </default> </switch> </merge> diff --git a/java/res/xml-sw768dp/row_dvorak4.xml b/java/res/xml-sw768dp/row_dvorak4.xml index 251b4f536..ebe517dce 100644 --- a/java/res/xml-sw768dp/row_dvorak4.xml +++ b/java/res/xml-sw768dp/row_dvorak4.xml @@ -27,10 +27,10 @@ <include latin:keyboardLayout="@xml/key_settings" /> <include - latin:keyXPos="15.157%p" + latin:keyXPos="13.829%p" latin:keyboardLayout="@xml/keys_f1f2" /> <include - latin:keyXPos="31.250%p" + latin:keyXPos="29.923%p" latin:keyboardLayout="@xml/key_space" /> <include latin:keyboardLayout="@xml/key_question_exclamation" /> diff --git a/java/res/xml-sw768dp/row_hebrew4.xml b/java/res/xml-sw768dp/row_hebrew4.xml index 8ec7ea7b4..477fd0d9a 100644 --- a/java/res/xml-sw768dp/row_hebrew4.xml +++ b/java/res/xml-sw768dp/row_hebrew4.xml @@ -27,9 +27,10 @@ <include latin:keyboardLayout="@xml/key_settings" /> <include - latin:keyXPos="15.157%p" + latin:keyXPos="13.829%p" latin:keyboardLayout="@xml/keys_f1f2" /> <include + latin:keyXPos="29.923%p" latin:keyboardLayout="@xml/key_space" /> <include latin:keyboardLayout="@xml/keys_comma_period" /> diff --git a/java/res/xml-sw768dp/row_qwerty4.xml b/java/res/xml-sw768dp/row_qwerty4.xml index 0cf964f50..32a6476c5 100644 --- a/java/res/xml-sw768dp/row_qwerty4.xml +++ b/java/res/xml-sw768dp/row_qwerty4.xml @@ -27,10 +27,10 @@ <include latin:keyboardLayout="@xml/key_settings" /> <include - latin:keyXPos="15.157%p" + latin:keyXPos="13.829%p" latin:keyboardLayout="@xml/keys_f1f2" /> <include - latin:keyXPos="31.250%p" + latin:keyXPos="29.923%p" latin:keyboardLayout="@xml/key_space" /> <include latin:keyboardLayout="@xml/key_apostrophe" /> diff --git a/java/res/xml-sw768dp/row_symbols4.xml b/java/res/xml-sw768dp/row_symbols4.xml index 167fc5e1d..bd85b4041 100644 --- a/java/res/xml-sw768dp/row_symbols4.xml +++ b/java/res/xml-sw768dp/row_symbols4.xml @@ -28,11 +28,11 @@ latin:keyboardLayout="@xml/key_settings" /> <Key latin:keyLabel="/" - latin:keyXPos="15.157%p" /> + latin:keyXPos="13.829%p" /> <Key latin:keyLabel="\@" /> <include - latin:keyXPos="31.250%p" + latin:keyXPos="29.923%p" latin:keyboardLayout="@xml/key_space" /> <Key latin:keyLabel=""" diff --git a/java/res/xml-sw768dp/row_symbols_shift4.xml b/java/res/xml-sw768dp/row_symbols_shift4.xml index 683ec439f..82c1d17ca 100644 --- a/java/res/xml-sw768dp/row_symbols_shift4.xml +++ b/java/res/xml-sw768dp/row_symbols_shift4.xml @@ -27,7 +27,7 @@ <include latin:keyboardLayout="@xml/key_settings" /> <include - latin:keyXPos="31.250%p" + latin:keyXPos="29.923%p" latin:keyboardLayout="@xml/key_space" /> <include latin:keyXPos="-8.047%p" diff --git a/java/res/xml-sw768dp/rows_10_10_7_symbols.xml b/java/res/xml-sw768dp/rows_10_10_7_symbols.xml index 44f096422..d9b0d2383 100644 --- a/java/res/xml-sw768dp/rows_10_10_7_symbols.xml +++ b/java/res/xml-sw768dp/rows_10_10_7_symbols.xml @@ -49,7 +49,7 @@ latin:keyboardLayout="@xml/rowkeys_symbols2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row latin:keyWidth="8.047%p" @@ -62,7 +62,7 @@ <Key latin:keyStyle="toMoreSymbolKeyStyle" latin:keyXPos="-13.750%p" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <include latin:keyboardLayout="@xml/row_symbols4" /> diff --git a/java/res/xml-sw768dp/rows_10_10_7_symbols_shift.xml b/java/res/xml-sw768dp/rows_10_10_7_symbols_shift.xml index bea0d9c18..a317dbf84 100644 --- a/java/res/xml-sw768dp/rows_10_10_7_symbols_shift.xml +++ b/java/res/xml-sw768dp/rows_10_10_7_symbols_shift.xml @@ -36,7 +36,7 @@ latin:keyboardLayout="@xml/rowkeys_symbols_shift1" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row latin:keyWidth="8.125%p" @@ -49,7 +49,7 @@ latin:keyboardLayout="@xml/rowkeys_symbols_shift2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row latin:keyWidth="8.047%p" @@ -62,7 +62,7 @@ <Key latin:keyStyle="backFromMoreSymbolKeyStyle" latin:keyXPos="-13.750%p" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <include latin:keyboardLayout="@xml/row_symbols_shift4" /> diff --git a/java/res/xml-sw768dp/rows_arabic.xml b/java/res/xml-sw768dp/rows_arabic.xml index eaa64e5af..8b05d9376 100644 --- a/java/res/xml-sw768dp/rows_arabic.xml +++ b/java/res/xml-sw768dp/rows_arabic.xml @@ -34,10 +34,10 @@ latin:keyboardLayout="@xml/rowkeys_arabic1" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="7.375%p" + latin:keyWidth="7.227%p" > <Key latin:keyStyle="toSymbolKeyStyle" @@ -47,10 +47,10 @@ latin:keyboardLayout="@xml/rowkeys_arabic2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="7.375%p" + latin:keyWidth="7.227%p" > <include latin:keyboardLayout="@xml/rowkeys_arabic3" diff --git a/java/res/xml-sw768dp/rows_azerty.xml b/java/res/xml-sw768dp/rows_azerty.xml index 1fc1a0630..dcc403b59 100644 --- a/java/res/xml-sw768dp/rows_azerty.xml +++ b/java/res/xml-sw768dp/rows_azerty.xml @@ -35,7 +35,7 @@ latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row latin:keyWidth="8.125%p" @@ -48,7 +48,7 @@ latin:keyboardLayout="@xml/rowkeys_azerty2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row latin:keyWidth="8.047%p" @@ -62,7 +62,7 @@ latin:keyboardLayout="@xml/keys_comma_period" /> <Key latin:keyStyle="shiftKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <include latin:keyboardLayout="@xml/row_qwerty4" /> diff --git a/java/res/xml-sw768dp/rows_bulgarian.xml b/java/res/xml-sw768dp/rows_bulgarian.xml index cb05fd5aa..64534144a 100644 --- a/java/res/xml-sw768dp/rows_bulgarian.xml +++ b/java/res/xml-sw768dp/rows_bulgarian.xml @@ -24,7 +24,7 @@ <include latin:keyboardLayout="@xml/key_styles_common" /> <Row - latin:keyWidth="7.186%p" + latin:keyWidth="7.375%p" > <Key latin:keyStyle="tabKeyStyle" @@ -35,10 +35,10 @@ latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="7.186%p" + latin:keyWidth="7.227%p" > <Key latin:keyStyle="toSymbolKeyStyle" @@ -48,10 +48,10 @@ latin:keyboardLayout="@xml/rowkeys_bulgarian2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="7.125%p" + latin:keyWidth="7.186%p" > <Key latin:keyStyle="shiftKeyStyle" @@ -62,7 +62,7 @@ latin:keyboardLayout="@xml/keys_comma_period" /> <Key latin:keyStyle="shiftKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <include latin:keyboardLayout="@xml/row_qwerty4" /> diff --git a/java/res/xml-sw768dp/rows_bulgarian_bds.xml b/java/res/xml-sw768dp/rows_bulgarian_bds.xml index 31343d227..8acb4d259 100644 --- a/java/res/xml-sw768dp/rows_bulgarian_bds.xml +++ b/java/res/xml-sw768dp/rows_bulgarian_bds.xml @@ -24,7 +24,7 @@ <include latin:keyboardLayout="@xml/key_styles_common" /> <Row - latin:keyWidth="7.000%p" + latin:keyWidth="7.375%p" > <Key latin:keyStyle="tabKeyStyle" @@ -35,10 +35,10 @@ latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="7.000%p" + latin:keyWidth="7.227%p" > <Key latin:keyStyle="toSymbolKeyStyle" @@ -48,7 +48,7 @@ latin:keyboardLayout="@xml/rowkeys_bulgarian_bds2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row latin:keyWidth="7.000%p" @@ -62,7 +62,7 @@ latin:keyboardLayout="@xml/keys_comma_period" /> <Key latin:keyStyle="shiftKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <include latin:keyboardLayout="@xml/row_qwerty4" /> diff --git a/java/res/xml-sw768dp/rows_colemak.xml b/java/res/xml-sw768dp/rows_colemak.xml index 01ebead3e..db9b0c247 100644 --- a/java/res/xml-sw768dp/rows_colemak.xml +++ b/java/res/xml-sw768dp/rows_colemak.xml @@ -37,7 +37,7 @@ latin:keyboardLayout="@xml/key_colemak_colon" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row latin:keyWidth="8.125%p" @@ -50,7 +50,7 @@ latin:keyboardLayout="@xml/rowkeys_colemak2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row latin:keyWidth="8.047%p" @@ -64,7 +64,7 @@ latin:keyboardLayout="@xml/keys_comma_period" /> <Key latin:keyStyle="shiftKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <include latin:keyboardLayout="@xml/row_qwerty4" /> diff --git a/java/res/xml-sw768dp/rows_dvorak.xml b/java/res/xml-sw768dp/rows_dvorak.xml index 91d0f1bce..941647815 100644 --- a/java/res/xml-sw768dp/rows_dvorak.xml +++ b/java/res/xml-sw768dp/rows_dvorak.xml @@ -37,7 +37,7 @@ latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row latin:keyWidth="8.125%p" @@ -50,7 +50,7 @@ latin:keyboardLayout="@xml/rowkeys_dvorak2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row latin:keyWidth="8.047%p" @@ -62,7 +62,7 @@ latin:keyboardLayout="@xml/rowkeys_dvorak3" /> <Key latin:keyStyle="shiftKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <include latin:keyboardLayout="@xml/row_dvorak4" /> diff --git a/java/res/xml-sw768dp/rows_east_slavic.xml b/java/res/xml-sw768dp/rows_east_slavic.xml index 480881bb6..0316c76f6 100644 --- a/java/res/xml-sw768dp/rows_east_slavic.xml +++ b/java/res/xml-sw768dp/rows_east_slavic.xml @@ -38,7 +38,7 @@ latin:keyLabel="ъ" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row latin:keyWidth="7.000%p" @@ -51,7 +51,7 @@ latin:keyboardLayout="@xml/rowkeys_east_slavic2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row latin:keyWidth="7.000%p" @@ -65,7 +65,7 @@ latin:keyboardLayout="@xml/keys_comma_period" /> <Key latin:keyStyle="shiftKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <include latin:keyboardLayout="@xml/row_qwerty4" /> diff --git a/java/res/xml-sw768dp/rows_farsi.xml b/java/res/xml-sw768dp/rows_farsi.xml index 8a70df99d..28031bb82 100644 --- a/java/res/xml-sw768dp/rows_farsi.xml +++ b/java/res/xml-sw768dp/rows_farsi.xml @@ -24,7 +24,7 @@ <include latin:keyboardLayout="@xml/key_styles_common" /> <Row - latin:keyWidth="7.125%p" + latin:keyWidth="7.375%p" > <Key latin:keyStyle="tabKeyStyle" @@ -34,7 +34,7 @@ latin:keyboardLayout="@xml/rowkeys_farsi1" /> </Row> <Row - latin:keyWidth="7.125%p" + latin:keyWidth="7.227%p" > <Key latin:keyStyle="toSymbolKeyStyle" @@ -44,10 +44,10 @@ latin:keyboardLayout="@xml/rowkeys_farsi2" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="7.375%p" + latin:keyWidth="7.186%p" > <include latin:keyboardLayout="@xml/rowkeys_farsi3" @@ -56,7 +56,7 @@ latin:keyboardLayout="@xml/keys_comma_period" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <include latin:keyboardLayout="@xml/row_qwerty4" /> diff --git a/java/res/xml-sw768dp/rows_georgian.xml b/java/res/xml-sw768dp/rows_georgian.xml index 3805b5d88..74f1a07c1 100644 --- a/java/res/xml-sw768dp/rows_georgian.xml +++ b/java/res/xml-sw768dp/rows_georgian.xml @@ -35,7 +35,7 @@ latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth"/> + latin:keyWidth="fillRight"/> </Row> <Row latin:keyWidth="8.125%p" @@ -48,7 +48,7 @@ latin:keyboardLayout="@xml/rowkeys_georgian2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row latin:keyWidth="8.047%p" @@ -62,8 +62,7 @@ latin:keyboardLayout="@xml/keys_comma_period" /> <Key latin:keyStyle="shiftKeyStyle" - latin:keyXPos="-13.750%p" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <include latin:keyboardLayout="@xml/row_qwerty4" /> diff --git a/java/res/xml-sw768dp/rows_greek.xml b/java/res/xml-sw768dp/rows_greek.xml index cf2fa4013..aebe12928 100644 --- a/java/res/xml-sw768dp/rows_greek.xml +++ b/java/res/xml-sw768dp/rows_greek.xml @@ -37,7 +37,7 @@ latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth"/> + latin:keyWidth="fillRight"/> </Row> <Row latin:keyWidth="8.125%p" @@ -50,7 +50,7 @@ latin:keyboardLayout="@xml/rowkeys_greek2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row latin:keyWidth="8.047%p" @@ -64,7 +64,7 @@ latin:keyboardLayout="@xml/keys_comma_period" /> <Key latin:keyStyle="shiftKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <include latin:keyboardLayout="@xml/row_qwerty4" /> diff --git a/java/res/xml-sw768dp/rows_hebrew.xml b/java/res/xml-sw768dp/rows_hebrew.xml index beb59b42a..e588b830c 100644 --- a/java/res/xml-sw768dp/rows_hebrew.xml +++ b/java/res/xml-sw768dp/rows_hebrew.xml @@ -38,7 +38,7 @@ latin:keyboardLayout="@xml/rowkeys_hebrew1" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row latin:keyWidth="8.125%p" @@ -51,7 +51,7 @@ latin:keyboardLayout="@xml/rowkeys_hebrew2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row latin:keyWidth="8.047%p" diff --git a/java/res/xml-sw768dp/rows_hindi.xml b/java/res/xml-sw768dp/rows_hindi.xml index 86e925fb1..510772b13 100644 --- a/java/res/xml-sw768dp/rows_hindi.xml +++ b/java/res/xml-sw768dp/rows_hindi.xml @@ -24,7 +24,7 @@ <include latin:keyboardLayout="@xml/key_styles_common" /> <Row - latin:keyWidth="7.333%p" + latin:keyWidth="7.375%p" > <Key latin:keyStyle="tabKeyStyle" @@ -35,10 +35,10 @@ latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="7.186%p" + latin:keyWidth="7.227%p" > <Key latin:keyStyle="toSymbolKeyStyle" @@ -48,10 +48,10 @@ latin:keyboardLayout="@xml/rowkeys_hindi2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="7.040%p" + latin:keyWidth="7.000%p" > <Key latin:keyStyle="shiftKeyStyle" @@ -62,7 +62,7 @@ latin:keyboardLayout="@xml/keys_comma_period" /> <Key latin:keyStyle="shiftKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <include latin:keyboardLayout="@xml/row_qwerty4" /> diff --git a/java/res/xml-sw768dp/rows_nordic.xml b/java/res/xml-sw768dp/rows_nordic.xml index 9a452511e..06591a66e 100644 --- a/java/res/xml-sw768dp/rows_nordic.xml +++ b/java/res/xml-sw768dp/rows_nordic.xml @@ -35,7 +35,7 @@ latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row latin:keyWidth="7.227%p" @@ -48,7 +48,7 @@ latin:keyboardLayout="@xml/rowkeys_nordic2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row latin:keyWidth="7.227%p" diff --git a/java/res/xml-sw768dp/rows_pcqwerty.xml b/java/res/xml-sw768dp/rows_pcqwerty.xml index c14fb12fe..a8447288f 100644 --- a/java/res/xml-sw768dp/rows_pcqwerty.xml +++ b/java/res/xml-sw768dp/rows_pcqwerty.xml @@ -30,7 +30,7 @@ latin:keyboardLayout="@xml/rowkeys_pcqwerty1" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row latin:keyWidth="7.0%p" @@ -52,7 +52,7 @@ latin:keyboardLayout="@xml/rowkeys_pcqwerty3" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row latin:keyWidth="7.0%p" @@ -64,7 +64,7 @@ latin:keyboardLayout="@xml/rowkeys_pcqwerty4" /> <Key latin:keyStyle="shiftKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <include latin:keyboardLayout="@xml/row_pcqwerty5" /> diff --git a/java/res/xml-sw768dp/rows_pcqwerty_symbols.xml b/java/res/xml-sw768dp/rows_pcqwerty_symbols.xml index faa9d8a2c..956da97fb 100644 --- a/java/res/xml-sw768dp/rows_pcqwerty_symbols.xml +++ b/java/res/xml-sw768dp/rows_pcqwerty_symbols.xml @@ -32,7 +32,7 @@ latin:keyboardLayout="@xml/rowkeys_pcqwerty1" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row latin:keyWidth="7.0%p" @@ -53,7 +53,7 @@ latin:keyboardLayout="@xml/rowkeys_pcqwerty3" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row latin:keyWidth="7.0%p" diff --git a/java/res/xml-sw768dp/rows_qwerty.xml b/java/res/xml-sw768dp/rows_qwerty.xml index edfb4011d..a1deabd3b 100644 --- a/java/res/xml-sw768dp/rows_qwerty.xml +++ b/java/res/xml-sw768dp/rows_qwerty.xml @@ -35,7 +35,7 @@ latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth"/> + latin:keyWidth="fillRight"/> </Row> <Row latin:keyWidth="8.125%p" @@ -48,7 +48,7 @@ latin:keyboardLayout="@xml/rowkeys_qwerty2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row latin:keyWidth="8.047%p" @@ -62,8 +62,7 @@ latin:keyboardLayout="@xml/keys_comma_period" /> <Key latin:keyStyle="shiftKeyStyle" - latin:keyXPos="-13.750%p" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <include latin:keyboardLayout="@xml/row_qwerty4" /> diff --git a/java/res/xml-sw768dp/rows_qwertz.xml b/java/res/xml-sw768dp/rows_qwertz.xml index 7e755067d..801dd38b6 100644 --- a/java/res/xml-sw768dp/rows_qwertz.xml +++ b/java/res/xml-sw768dp/rows_qwertz.xml @@ -35,7 +35,7 @@ latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth"/> + latin:keyWidth="fillRight"/> </Row> <Row latin:keyWidth="8.125%p" @@ -48,7 +48,7 @@ latin:keyboardLayout="@xml/rowkeys_qwerty2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row latin:keyWidth="8.047%p" @@ -62,8 +62,7 @@ latin:keyboardLayout="@xml/keys_comma_period" /> <Key latin:keyStyle="shiftKeyStyle" - latin:keyXPos="-13.750%p" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <include latin:keyboardLayout="@xml/row_qwerty4" /> diff --git a/java/res/xml-sw768dp/rows_south_slavic.xml b/java/res/xml-sw768dp/rows_south_slavic.xml index 7ea0ff465..b55685330 100644 --- a/java/res/xml-sw768dp/rows_south_slavic.xml +++ b/java/res/xml-sw768dp/rows_south_slavic.xml @@ -24,7 +24,7 @@ <include latin:keyboardLayout="@xml/key_styles_common" /> <Row - latin:keyWidth="7.000%p" + latin:keyWidth="7.375%p" > <Key latin:keyStyle="tabKeyStyle" @@ -35,10 +35,10 @@ latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row - latin:keyWidth="7.000%p" + latin:keyWidth="7.227%p" > <Key latin:keyStyle="toSymbolKeyStyle" @@ -48,7 +48,7 @@ latin:keyboardLayout="@xml/rowkeys_south_slavic2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row latin:keyWidth="7.000%p" @@ -62,7 +62,7 @@ latin:keyboardLayout="@xml/keys_comma_period" /> <Key latin:keyStyle="shiftKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <include latin:keyboardLayout="@xml/row_qwerty4" /> diff --git a/java/res/xml-sw768dp/rows_spanish.xml b/java/res/xml-sw768dp/rows_spanish.xml index fc3388d53..8b8033288 100644 --- a/java/res/xml-sw768dp/rows_spanish.xml +++ b/java/res/xml-sw768dp/rows_spanish.xml @@ -35,7 +35,7 @@ latin:keyLabelFlags="disableAdditionalMoreKeys|disableKeyHintLabel" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth"/> + latin:keyWidth="fillRight"/> </Row> <Row latin:keyWidth="8.125%p" @@ -48,7 +48,7 @@ latin:keyboardLayout="@xml/rowkeys_spanish2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row latin:keyWidth="8.047%p" @@ -63,7 +63,7 @@ <Key latin:keyStyle="shiftKeyStyle" latin:keyXPos="-13.750%p" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <include latin:keyboardLayout="@xml/row_qwerty4" /> diff --git a/java/res/xml-sw768dp/rows_symbols.xml b/java/res/xml-sw768dp/rows_symbols.xml index fcc624f2a..efd77352b 100644 --- a/java/res/xml-sw768dp/rows_symbols.xml +++ b/java/res/xml-sw768dp/rows_symbols.xml @@ -49,7 +49,7 @@ latin:keyboardLayout="@xml/rowkeys_symbols2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row latin:keyWidth="8.047%p" @@ -61,8 +61,7 @@ latin:keyboardLayout="@xml/rowkeys_symbols3" /> <Key latin:keyStyle="toMoreSymbolKeyStyle" - latin:keyXPos="-13.750%p" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <include latin:keyboardLayout="@xml/row_symbols4" /> diff --git a/java/res/xml-sw768dp/rows_symbols_shift.xml b/java/res/xml-sw768dp/rows_symbols_shift.xml index 1d13bb1e9..fd1b93d51 100644 --- a/java/res/xml-sw768dp/rows_symbols_shift.xml +++ b/java/res/xml-sw768dp/rows_symbols_shift.xml @@ -36,7 +36,7 @@ latin:keyboardLayout="@xml/rowkeys_symbols_shift1" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row latin:keyWidth="8.125%p" @@ -49,7 +49,7 @@ latin:keyboardLayout="@xml/rowkeys_symbols_shift2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row latin:keyWidth="8.047%p" @@ -61,8 +61,7 @@ latin:keyboardLayout="@xml/rowkeys_symbols_shift3" /> <Key latin:keyStyle="backFromMoreSymbolKeyStyle" - latin:keyXPos="-13.750%p" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <include latin:keyboardLayout="@xml/row_symbols_shift4" /> diff --git a/java/res/xml-sw768dp/rows_thai.xml b/java/res/xml-sw768dp/rows_thai.xml index c7720c9c5..7721bc5a9 100644 --- a/java/res/xml-sw768dp/rows_thai.xml +++ b/java/res/xml-sw768dp/rows_thai.xml @@ -31,7 +31,7 @@ latin:keyXPos="11.508%p" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth"/> + latin:keyWidth="fillRight"/> </Row> <Row latin:keyWidth="7.079%p" @@ -54,7 +54,7 @@ latin:keyboardLayout="@xml/rowkeys_thai3" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row latin:keyWidth="7.181%p" diff --git a/java/res/xml-sw768dp/rows_thai_symbols.xml b/java/res/xml-sw768dp/rows_thai_symbols.xml index b3f60f5e6..528514182 100644 --- a/java/res/xml-sw768dp/rows_thai_symbols.xml +++ b/java/res/xml-sw768dp/rows_thai_symbols.xml @@ -56,7 +56,7 @@ latin:keyboardLayout="@xml/rowkeys_symbols2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row latin:keyWidth="8.047%p" @@ -69,7 +69,7 @@ <Key latin:keyStyle="toMoreSymbolKeyStyle" latin:keyXPos="-13.750%p" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <include latin:keyboardLayout="@xml/row_symbols4" /> diff --git a/java/res/xml-sw768dp/rows_thai_symbols_shift.xml b/java/res/xml-sw768dp/rows_thai_symbols_shift.xml index 573e0e37a..9d2694b86 100644 --- a/java/res/xml-sw768dp/rows_thai_symbols_shift.xml +++ b/java/res/xml-sw768dp/rows_thai_symbols_shift.xml @@ -33,7 +33,7 @@ latin:keyXPos="7.969%p" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row latin:keyWidth="8.282%p" @@ -56,7 +56,7 @@ latin:keyboardLayout="@xml/rowkeys_symbols_shift2" /> <Key latin:keyStyle="enterKeyStyle" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <Row latin:keyWidth="8.047%p" @@ -69,7 +69,7 @@ <Key latin:keyStyle="backFromMoreSymbolKeyStyle" latin:keyXPos="-13.750%p" - latin:keyWidth="fillBoth" /> + latin:keyWidth="fillRight" /> </Row> <include latin:keyboardLayout="@xml/row_symbols_shift4" /> diff --git a/java/res/xml/rows_georgian.xml b/java/res/xml/rows_georgian.xml index 9bddfc785..8c81dd007 100644 --- a/java/res/xml/rows_georgian.xml +++ b/java/res/xml/rows_georgian.xml @@ -47,7 +47,7 @@ latin:keyboardLayout="@xml/rowkeys_georgian3" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth" + latin:keyWidth="fillRight" latin:visualInsetsLeft="1%p" /> </Row> <include diff --git a/java/res/xml/rows_qwerty.xml b/java/res/xml/rows_qwerty.xml index 716d10642..cdd420361 100644 --- a/java/res/xml/rows_qwerty.xml +++ b/java/res/xml/rows_qwerty.xml @@ -47,7 +47,7 @@ latin:keyboardLayout="@xml/rowkeys_qwerty3" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth" + latin:keyWidth="fillRight" latin:visualInsetsLeft="1%p" /> </Row> <include diff --git a/java/res/xml/rows_spanish.xml b/java/res/xml/rows_spanish.xml index b311297dd..ecda4a4a6 100644 --- a/java/res/xml/rows_spanish.xml +++ b/java/res/xml/rows_spanish.xml @@ -46,7 +46,7 @@ latin:keyboardLayout="@xml/rowkeys_qwerty3" /> <Key latin:keyStyle="deleteKeyStyle" - latin:keyWidth="fillBoth" + latin:keyWidth="fillRight" latin:visualInsetsLeft="1%p" /> </Row> <include diff --git a/java/src/com/android/inputmethod/compat/SuggestionSpanUtils.java b/java/src/com/android/inputmethod/compat/SuggestionSpanUtils.java index 25afef1e6..a0f48d24c 100644 --- a/java/src/com/android/inputmethod/compat/SuggestionSpanUtils.java +++ b/java/src/com/android/inputmethod/compat/SuggestionSpanUtils.java @@ -108,6 +108,7 @@ public class SuggestionSpanUtils { if (!dictionaryAvailable || TextUtils.isEmpty(pickedWord) || CONSTRUCTOR_SuggestionSpan == null || suggestedWords == null || suggestedWords.size() == 0 + || suggestedWords.mIsPrediction || suggestedWords.mIsPunctuationSuggestions || OBJ_SUGGESTIONS_MAX_SIZE == null) { return pickedWord; } diff --git a/java/src/com/android/inputmethod/keyboard/Keyboard.java b/java/src/com/android/inputmethod/keyboard/Keyboard.java index 28855f561..bd3b0e114 100644 --- a/java/src/com/android/inputmethod/keyboard/Keyboard.java +++ b/java/src/com/android/inputmethod/keyboard/Keyboard.java @@ -511,7 +511,6 @@ public class Keyboard { // keyWidth enum constants private static final int KEYWIDTH_NOT_ENUM = 0; private static final int KEYWIDTH_FILL_RIGHT = -1; - private static final int KEYWIDTH_FILL_BOTH = -2; private final Params mParams; /** Default width of a key in this row. */ @@ -576,11 +575,6 @@ public class Keyboard { public float getKeyX(TypedArray keyAttr) { final int widthType = Builder.getEnumValue(keyAttr, R.styleable.Keyboard_Key_keyWidth, KEYWIDTH_NOT_ENUM); - if (widthType == KEYWIDTH_FILL_BOTH) { - // If keyWidth is fillBoth, the key width should start right after the nearest - // key on the left hand side. - return mCurrentX; - } final int keyboardRightEdge = mParams.mOccupiedWidth - mParams.mHorizontalEdgesPadding; @@ -610,14 +604,10 @@ public class Keyboard { R.styleable.Keyboard_Key_keyWidth, KEYWIDTH_NOT_ENUM); switch (widthType) { case KEYWIDTH_FILL_RIGHT: - case KEYWIDTH_FILL_BOTH: final int keyboardRightEdge = mParams.mOccupiedWidth - mParams.mHorizontalEdgesPadding; // If keyWidth is fillRight, the actual key width will be determined to fill // out the area up to the right edge of the keyboard. - // If keyWidth is fillBoth, the actual key width will be determined to fill out - // the area between the nearest key on the left hand side and the right edge of - // the keyboard. return keyboardRightEdge - keyXPos; default: // KEYWIDTH_NOT_ENUM return Builder.getDimensionOrFraction(keyAttr, diff --git a/java/src/com/android/inputmethod/latin/ContactsDictionary.java b/java/src/com/android/inputmethod/latin/ContactsDictionary.java index 8a7dfb839..83bc9046b 100644 --- a/java/src/com/android/inputmethod/latin/ContactsDictionary.java +++ b/java/src/com/android/inputmethod/latin/ContactsDictionary.java @@ -149,7 +149,8 @@ public class ContactsDictionary extends ExpandableDictionary { // capitalization of i. final int wordLen = word.length(); if (wordLen < maxWordLength && wordLen > 1) { - super.addWord(word, FREQUENCY_FOR_CONTACTS); + super.addWord(word, null /* shortcut */, + FREQUENCY_FOR_CONTACTS); if (!TextUtils.isEmpty(prevWord)) { super.setBigram(prevWord, word, FREQUENCY_FOR_CONTACTS_BIGRAM); diff --git a/java/src/com/android/inputmethod/latin/Dictionary.java b/java/src/com/android/inputmethod/latin/Dictionary.java index a405aa409..1ec678f7f 100644 --- a/java/src/com/android/inputmethod/latin/Dictionary.java +++ b/java/src/com/android/inputmethod/latin/Dictionary.java @@ -24,11 +24,6 @@ import com.android.inputmethod.keyboard.ProximityInfo; */ public abstract class Dictionary { /** - * Whether or not to replicate the typed word in the suggested list, even if it's valid. - */ - protected static final boolean INCLUDE_TYPED_WORD_IF_VALID = false; - - /** * The weight to give to a word if it's length is the same as the number of typed characters. */ protected static final int FULL_WORD_SCORE_MULTIPLIER = 2; diff --git a/java/src/com/android/inputmethod/latin/ExpandableDictionary.java b/java/src/com/android/inputmethod/latin/ExpandableDictionary.java index fe21ebe87..7a740b3f1 100644 --- a/java/src/com/android/inputmethod/latin/ExpandableDictionary.java +++ b/java/src/com/android/inputmethod/latin/ExpandableDictionary.java @@ -22,6 +22,7 @@ import com.android.inputmethod.keyboard.KeyDetector; import com.android.inputmethod.keyboard.Keyboard; import com.android.inputmethod.keyboard.ProximityInfo; +import java.util.ArrayList; import java.util.LinkedList; /** @@ -53,6 +54,8 @@ public class ExpandableDictionary extends Dictionary { boolean mTerminal; Node mParent; NodeArray mChildren; + ArrayList<char[]> mShortcutTargets; + boolean mShortcutOnly; LinkedList<NextWord> mNGrams; // Supports ngram } @@ -150,15 +153,15 @@ public class ExpandableDictionary extends Dictionary { return BinaryDictionary.MAX_WORD_LENGTH; } - public void addWord(String word, int frequency) { + public void addWord(final String word, final String shortcutTarget, final int frequency) { if (word.length() >= BinaryDictionary.MAX_WORD_LENGTH) { return; } - addWordRec(mRoots, word, 0, frequency, null); + addWordRec(mRoots, word, 0, shortcutTarget, frequency, null); } private void addWordRec(NodeArray children, final String word, final int depth, - final int frequency, Node parentNode) { + final String shortcutTarget, final int frequency, Node parentNode) { final int wordLength = word.length(); if (wordLength <= depth) return; final char c = word.charAt(depth); @@ -172,15 +175,25 @@ public class ExpandableDictionary extends Dictionary { break; } } + final boolean isShortcutOnly = (null != shortcutTarget); if (childNode == null) { childNode = new Node(); childNode.mCode = c; childNode.mParent = parentNode; + childNode.mShortcutOnly = isShortcutOnly; children.add(childNode); } if (wordLength == depth + 1) { // Terminate this word childNode.mTerminal = true; + if (isShortcutOnly) { + if (null == childNode.mShortcutTargets) { + childNode.mShortcutTargets = new ArrayList<char[]>(); + } + childNode.mShortcutTargets.add(shortcutTarget.toCharArray()); + } else { + childNode.mShortcutOnly = false; + } childNode.mFrequency = Math.max(frequency, childNode.mFrequency); if (childNode.mFrequency > 255) childNode.mFrequency = 255; return; @@ -188,7 +201,7 @@ public class ExpandableDictionary extends Dictionary { if (childNode.mChildren == null) { childNode.mChildren = new NodeArray(); } - addWordRec(childNode.mChildren, word, depth + 1, frequency, childNode); + addWordRec(childNode.mChildren, word, depth + 1, shortcutTarget, frequency, childNode); } @Override @@ -239,7 +252,13 @@ public class ExpandableDictionary extends Dictionary { if (mRequiresReload) startDictionaryLoadingTaskLocked(); if (mUpdatingDictionary) return false; } - return getWordFrequency(word) > -1; + final Node node = searchNode(mRoots, word, 0, word.length()); + // If node is null, we didn't find the word, so it's not valid. + // If node.mShortcutOnly is true, then it exists as a shortcut but not as a word, + // so that means it's not a valid word. + // If node.mShortcutOnly is false, then it exists as a word (it may also exist as + // a shortcut, but this does not matter), so it's a valid word. + return (node == null) ? false : !node.mShortcutOnly; } /** @@ -247,7 +266,7 @@ public class ExpandableDictionary extends Dictionary { */ protected int getWordFrequency(CharSequence word) { // Case-sensitive search - Node node = searchNode(mRoots, word, 0, word.length()); + final Node node = searchNode(mRoots, word, 0, word.length()); return (node == null) ? -1 : node.mFrequency; } @@ -262,6 +281,35 @@ public class ExpandableDictionary extends Dictionary { } /** + * Helper method to add a word and its shortcuts. + * + * @param node the terminal node + * @param word the word to insert, as an array of code points + * @param depth the depth of the node in the tree + * @param finalFreq the frequency for this word + * @return whether there is still space for more words. {@see Dictionary.WordCallback#addWord}. + */ + private boolean addWordAndShortcutsFromNode(final Node node, final char[] word, final int depth, + final int finalFreq, final WordCallback callback) { + if (finalFreq > 0 && !node.mShortcutOnly) { + if (!callback.addWord(word, 0, depth + 1, finalFreq, mDicTypeId, Dictionary.UNIGRAM)) { + return false; + } + } + if (null != node.mShortcutTargets) { + final int length = node.mShortcutTargets.size(); + for (int shortcutIndex = 0; shortcutIndex < length; ++shortcutIndex) { + final char[] shortcut = node.mShortcutTargets.get(shortcutIndex); + if (!callback.addWord(shortcut, 0, shortcut.length, finalFreq, mDicTypeId, + Dictionary.UNIGRAM)) { + return false; + } + } + } + return true; + } + + /** * Recursively traverse the tree for words that match the input. Input consists of * a list of arrays. Each item in the list is one input character position. An input * character is actually an array of multiple possible candidates. This function is not @@ -313,8 +361,8 @@ public class ExpandableDictionary extends Dictionary { } else { finalFreq = computeSkippedWordFinalFreq(freq, snr, mInputLength); } - if (!callback.addWord(word, 0, depth + 1, finalFreq, mDicTypeId, - Dictionary.UNIGRAM)) { + if (!addWordAndShortcutsFromNode(node, word, depth, finalFreq, callback)) { + // No space left in the queue, bail out return; } } @@ -344,18 +392,18 @@ public class ExpandableDictionary extends Dictionary { if (codeSize == inputIndex + 1) { if (terminal) { - if (INCLUDE_TYPED_WORD_IF_VALID - || !same(word, depth + 1, codes.getTypedWord())) { - final int finalFreq; - if (skipPos < 0) { - finalFreq = freq * snr * addedAttenuation - * FULL_WORD_SCORE_MULTIPLIER; - } else { - finalFreq = computeSkippedWordFinalFreq(freq, - snr * addedAttenuation, mInputLength); - } - callback.addWord(word, 0, depth + 1, finalFreq, mDicTypeId, - Dictionary.UNIGRAM); + final int finalFreq; + if (skipPos < 0) { + finalFreq = freq * snr * addedAttenuation + * FULL_WORD_SCORE_MULTIPLIER; + } else { + finalFreq = computeSkippedWordFinalFreq(freq, + snr * addedAttenuation, mInputLength); + } + if (!addWordAndShortcutsFromNode(node, word, depth, finalFreq, + callback)) { + // No space left in the queue, bail out + return; } } if (children != null) { diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java index 011b512e8..b59e939b7 100644 --- a/java/src/com/android/inputmethod/latin/LatinIME.java +++ b/java/src/com/android/inputmethod/latin/LatinIME.java @@ -877,7 +877,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen false /* hasAutoCorrectionCandidate */, false /* allowsToBeAutoCorrected */, false /* isPunctuationSuggestions */, - false /* isObsoleteSuggestions */); + false /* isObsoleteSuggestions */, + false /* isPrediction */); // When in fullscreen mode, show completions generated by the application final boolean isAutoCorrection = false; setSuggestions(suggestedWords, isAutoCorrection); @@ -1120,7 +1121,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen @Override public boolean addWordToDictionary(String word) { - mUserDictionary.addWord(word, 128); + mUserDictionary.addWordToUserDictionary(word, 128); // Suggestion strip should be updated after the operation of adding word to the // user dictionary mHandler.postUpdateSuggestions(); @@ -1772,7 +1773,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen false /* hasAutoCorrectionCandidate */, false /* allowsToBeAutoCorrected */, false /* isPunctuationSuggestions */, - true /* isObsoleteSuggestions */); + true /* isObsoleteSuggestions */, + false /* isPrediction */); showSuggestions(obsoleteSuggestedWords, typedWord); } } diff --git a/java/src/com/android/inputmethod/latin/SettingsValues.java b/java/src/com/android/inputmethod/latin/SettingsValues.java index 5f9e1bc76..55b896f5a 100644 --- a/java/src/com/android/inputmethod/latin/SettingsValues.java +++ b/java/src/com/android/inputmethod/latin/SettingsValues.java @@ -166,7 +166,8 @@ public class SettingsValues { false /* hasAutoCorrectionCandidate */, false /* allowsToBeAutoCorrected */, true /* isPunctuationSuggestions */, - false /* isObsoleteSuggestions */); + false /* isObsoleteSuggestions */, + false /* isPrediction */); } private static String createWordSeparators(final String weakSpaceStrippers, diff --git a/java/src/com/android/inputmethod/latin/Suggest.java b/java/src/com/android/inputmethod/latin/Suggest.java index 112bde6a3..845df81f6 100644 --- a/java/src/com/android/inputmethod/latin/Suggest.java +++ b/java/src/com/android/inputmethod/latin/Suggest.java @@ -253,13 +253,12 @@ public class Suggest implements Dictionary.WordCallback { SuggestedWordInfo.removeDups(mSuggestions); return new SuggestedWords(mSuggestions, - // TODO: Just assuming the suggestions that came from the bigram prediction are - // valid now. Need to assign a correct value for typedWordValid. - true /* typedWordValid */, + false /* typedWordValid */, false /* hasAutoCorrectionCandidate */, false /* allowsToBeAutoCorrected */, false /* isPunctuationSuggestions */, - false /* isObsoleteSuggestions */); + false /* isObsoleteSuggestions */, + true /* isPrediction */); } // TODO: cleanup dictionaries looking up and suggestions building with SuggestedWords.Builder @@ -396,7 +395,8 @@ public class Suggest implements Dictionary.WordCallback { autoCorrectionAvailable /* hasAutoCorrectionCandidate */, allowsToBeAutoCorrected /* allowsToBeAutoCorrected */, false /* isPunctuationSuggestions */, - false /* isObsoleteSuggestions */); + false /* isObsoleteSuggestions */, + false /* isPrediction */); } /** diff --git a/java/src/com/android/inputmethod/latin/SuggestedWords.java b/java/src/com/android/inputmethod/latin/SuggestedWords.java index 91110d888..497fd3bfa 100644 --- a/java/src/com/android/inputmethod/latin/SuggestedWords.java +++ b/java/src/com/android/inputmethod/latin/SuggestedWords.java @@ -25,13 +25,14 @@ import java.util.HashSet; public class SuggestedWords { public static final SuggestedWords EMPTY = new SuggestedWords( - new ArrayList<SuggestedWordInfo>(0), false, false, false, false, false); + new ArrayList<SuggestedWordInfo>(0), false, false, false, false, false, false); public final boolean mTypedWordValid; public final boolean mHasAutoCorrectionCandidate; public final boolean mIsPunctuationSuggestions; public final boolean mAllowsToBeAutoCorrected; public final boolean mIsObsoleteSuggestions; + public final boolean mIsPrediction; private final ArrayList<SuggestedWordInfo> mSuggestedWordInfoList; public SuggestedWords(final ArrayList<SuggestedWordInfo> suggestedWordInfoList, @@ -39,13 +40,15 @@ public class SuggestedWords { final boolean hasAutoCorrectionCandidate, final boolean allowsToBeAutoCorrected, final boolean isPunctuationSuggestions, - final boolean isObsoleteSuggestions) { + final boolean isObsoleteSuggestions, + final boolean isPrediction) { mSuggestedWordInfoList = suggestedWordInfoList; mTypedWordValid = typedWordValid; mHasAutoCorrectionCandidate = hasAutoCorrectionCandidate; mAllowsToBeAutoCorrected = allowsToBeAutoCorrected; mIsPunctuationSuggestions = isPunctuationSuggestions; mIsObsoleteSuggestions = isObsoleteSuggestions; + mIsPrediction = isPrediction; } public int size() { diff --git a/java/src/com/android/inputmethod/latin/SynchronouslyLoadedUserDictionary.java b/java/src/com/android/inputmethod/latin/SynchronouslyLoadedUserDictionary.java index 50e8b249e..b78be89b8 100644 --- a/java/src/com/android/inputmethod/latin/SynchronouslyLoadedUserDictionary.java +++ b/java/src/com/android/inputmethod/latin/SynchronouslyLoadedUserDictionary.java @@ -42,6 +42,6 @@ public class SynchronouslyLoadedUserDictionary extends UserDictionary { @Override public synchronized boolean isValidWord(CharSequence word) { blockingReloadDictionaryIfRequired(); - return getWordFrequency(word) > -1; + return super.isValidWord(word); } } diff --git a/java/src/com/android/inputmethod/latin/UserDictionary.java b/java/src/com/android/inputmethod/latin/UserDictionary.java index 6beeaace9..218bac72a 100644 --- a/java/src/com/android/inputmethod/latin/UserDictionary.java +++ b/java/src/com/android/inputmethod/latin/UserDictionary.java @@ -31,8 +31,11 @@ import java.util.Arrays; public class UserDictionary extends ExpandableDictionary { + // TODO: use Words.SHORTCUT when it's public in the SDK + final static String SHORTCUT = "shortcut"; private static final String[] PROJECTION_QUERY = { Words.WORD, + SHORTCUT, Words.FREQUENCY, }; @@ -149,15 +152,18 @@ public class UserDictionary extends ExpandableDictionary { } /** - * Adds a word to the dictionary and makes it persistent. + * Adds a word to the user dictionary and makes it persistent. + * + * This will call upon the system interface to do the actual work through the intent + * readied by the system to this effect. + * * @param word the word to add. If the word is capitalized, then the dictionary will * recognize it as a capitalized word when searched. * @param frequency the frequency of occurrence of the word. A frequency of 255 is considered * the highest. * @TODO use a higher or float range for frequency */ - @Override - public synchronized void addWord(final String word, final int frequency) { + public synchronized void addWordToUserDictionary(final String word, final int frequency) { // Force load the dictionary here synchronously if (getRequiresReload()) loadDictionaryAsync(); // TODO: do something for the UI. With the following, any sufficiently long word will @@ -191,14 +197,19 @@ public class UserDictionary extends ExpandableDictionary { final int maxWordLength = getMaxWordLength(); if (cursor.moveToFirst()) { final int indexWord = cursor.getColumnIndex(Words.WORD); + final int indexShortcut = cursor.getColumnIndex(SHORTCUT); final int indexFrequency = cursor.getColumnIndex(Words.FREQUENCY); while (!cursor.isAfterLast()) { String word = cursor.getString(indexWord); + String shortcut = cursor.getString(indexShortcut); int frequency = cursor.getInt(indexFrequency); // Safeguard against adding really long words. Stack may overflow due // to recursion if (word.length() < maxWordLength) { - super.addWord(word, frequency); + super.addWord(word, null, frequency); + } + if (null != shortcut && shortcut.length() < maxWordLength) { + super.addWord(shortcut, word, frequency); } cursor.moveToNext(); } diff --git a/java/src/com/android/inputmethod/latin/UserHistoryDictionary.java b/java/src/com/android/inputmethod/latin/UserHistoryDictionary.java index 9191aa953..e13602e50 100644 --- a/java/src/com/android/inputmethod/latin/UserHistoryDictionary.java +++ b/java/src/com/android/inputmethod/latin/UserHistoryDictionary.java @@ -176,7 +176,7 @@ public class UserHistoryDictionary extends ExpandableDictionary { * The second word may not be null (a NullPointerException would be thrown). */ public int addToUserHistory(final String word1, String word2) { - super.addWord(word2, FREQUENCY_FOR_TYPED); + super.addWord(word2, null /* shortcut */, FREQUENCY_FOR_TYPED); // Do not insert a word as a bigram of itself if (word2.equals(word1)) { return 0; @@ -246,7 +246,7 @@ public class UserHistoryDictionary extends ExpandableDictionary { // Safeguard against adding really long words. Stack may overflow due // to recursive lookup if (null == word1) { - super.addWord(word2, frequency); + super.addWord(word2, null /* shortcut */, frequency); } else if (word1.length() < BinaryDictionary.MAX_WORD_LENGTH && word2.length() < BinaryDictionary.MAX_WORD_LENGTH) { super.setBigram(word1, word2, frequency); diff --git a/java/src/com/android/inputmethod/latin/WhitelistDictionary.java b/java/src/com/android/inputmethod/latin/WhitelistDictionary.java index bb3ba8651..a0de2f970 100644 --- a/java/src/com/android/inputmethod/latin/WhitelistDictionary.java +++ b/java/src/com/android/inputmethod/latin/WhitelistDictionary.java @@ -66,7 +66,7 @@ public class WhitelistDictionary extends ExpandableDictionary { if (before != null && after != null) { mWhitelistWords.put( before.toLowerCase(), new Pair<Integer, String>(score, after)); - addWord(after, score); + addWord(after, null /* shortcut */, score); } } } catch (NumberFormatException e) { |