diff --git a/java/proguard.flags b/java/proguard.flags index 20230759218e12730db15c039c78a156fff5f850..9096855e8fd37801b6ad3a2197248b68da9907b2 100644 --- a/java/proguard.flags +++ b/java/proguard.flags @@ -12,4 +12,5 @@ void setDatabaseMax(int); void setDatabaseDelete(int); void waitUntilUpdateDBDone(); + void waitForDictionaryLoading(); } diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml index 549c2ae81fa662ade62f40984b2824076458b608..9759e0eb64c727cd89e18364c650b3338fb4c8dc 100644 --- a/java/res/values/attrs.xml +++ b/java/res/values/attrs.xml @@ -94,8 +94,8 @@ </declare-styleable> <declare-styleable name="Keyboard_Key"> - <!-- The unicode value or comma-separated values that this key outputs. --> - <attr name="codes" format="integer|string" /> + <!-- The unicode value that this key outputs. --> + <attr name="code" format="integer" /> <!-- The characters to display in the popup keyboard. --> <attr name="popupCharacters" format="string" /> <!-- Maximum column of popup keyboard --> diff --git a/java/res/values/config.xml b/java/res/values/config.xml index 4187c31fb863221da6d6f10fedd6049aa54ad807..12253048005a0d9616a1b7675dac02e8f8de449e 100644 --- a/java/res/values/config.xml +++ b/java/res/values/config.xml @@ -41,7 +41,6 @@ <integer name="config_keyboard_grid_height">16</integer> <integer name="config_long_press_key_timeout">400</integer> <integer name="config_long_press_shift_key_timeout">1200</integer> - <integer name="config_multi_tap_key_timeout">800</integer> <string name="config_text_size_of_language_on_spacebar">small</string> <integer name="config_max_popup_keyboard_column">9</integer> <!-- Whether or not auto-correction should be enabled by default --> diff --git a/java/res/xml-xlarge/kbd_key_styles.xml b/java/res/xml-xlarge/kbd_key_styles.xml index 6c1df0b9e5b7f01e48f7a39e808208a160d325fd..eb37580247808f2a32ff30d8a7916da245c4d3df 100644 --- a/java/res/xml-xlarge/kbd_key_styles.xml +++ b/java/res/xml-xlarge/kbd_key_styles.xml @@ -31,7 +31,7 @@ latin:isModifier="true" /> <key-style latin:styleName="shiftKeyStyle" - latin:codes="@integer/key_shift" + latin:code="@integer/key_shift" latin:keyIcon="@drawable/sym_keyboard_shift_holo" latin:shiftedIcon="@drawable/sym_keyboard_shift_locked_holo" latin:iconPreview="@drawable/sym_keyboard_feedback_shift" @@ -39,25 +39,25 @@ latin:isSticky="true" /> <key-style latin:styleName="deleteKeyStyle" - latin:codes="@integer/key_delete" + latin:code="@integer/key_delete" latin:keyIcon="@drawable/sym_keyboard_delete_holo" latin:iconPreview="@drawable/sym_keyboard_feedback_delete" latin:parentStyle="functionalKeyStyle" latin:isRepeatable="true" /> <key-style latin:styleName="returnKeyStyle" - latin:codes="@integer/key_return" + latin:code="@integer/key_return" latin:keyIcon="@drawable/sym_keyboard_return_holo" latin:iconPreview="@drawable/sym_keyboard_feedback_return" latin:parentStyle="functionalKeyStyle" /> <key-style latin:styleName="spaceKeyStyle" - latin:codes="@integer/key_space" + latin:code="@integer/key_space" latin:keyIcon="@drawable/sym_keyboard_space_holo" latin:iconPreview="@drawable/sym_keyboard_feedback_space" /> <key-style latin:styleName="nonSpecialBackgroundSpaceKeyStyle" - latin:codes="@integer/key_space" + latin:code="@integer/key_space" latin:keyIcon="@drawable/sym_keyboard_space_holo" latin:iconPreview="@drawable/sym_keyboard_feedback_space" /> <key-style @@ -69,7 +69,7 @@ latin:maxPopupKeyboardColumn="5" /> <key-style latin:styleName="micKeyStyle" - latin:codes="@integer/key_voice" + latin:code="@integer/key_voice" latin:keyIcon="@drawable/sym_keyboard_mic" latin:iconPreview="@drawable/sym_keyboard_feedback_mic" latin:parentStyle="functionalKeyStyle" /> @@ -81,7 +81,7 @@ latin:styleName="functionalKeyStyle" /> <key-style latin:styleName="shiftKeyStyle" - latin:codes="@integer/key_shift" + latin:code="@integer/key_shift" latin:keyIcon="@drawable/sym_bkeyboard_shift" latin:shiftedIcon="@drawable/sym_bkeyboard_shift_locked" latin:iconPreview="@drawable/sym_keyboard_feedback_shift" @@ -89,25 +89,25 @@ latin:isSticky="true" /> <key-style latin:styleName="deleteKeyStyle" - latin:codes="@integer/key_delete" + latin:code="@integer/key_delete" latin:keyIcon="@drawable/sym_bkeyboard_delete" latin:iconPreview="@drawable/sym_keyboard_feedback_delete" latin:parentStyle="functionalKeyStyle" latin:isRepeatable="true" /> <key-style latin:styleName="returnKeyStyle" - latin:codes="@integer/key_return" + latin:code="@integer/key_return" latin:keyIcon="@drawable/sym_bkeyboard_return" latin:iconPreview="@drawable/sym_keyboard_feedback_return" latin:parentStyle="functionalKeyStyle" /> <key-style latin:styleName="spaceKeyStyle" - latin:codes="@integer/key_space" + latin:code="@integer/key_space" latin:keyIcon="@drawable/sym_bkeyboard_space" latin:iconPreview="@drawable/sym_keyboard_feedback_space" /> <key-style latin:styleName="nonSpecialBackgroundSpaceKeyStyle" - latin:codes="@integer/key_space" + latin:code="@integer/key_space" latin:keyIcon="@drawable/sym_bkeyboard_space" latin:iconPreview="@drawable/sym_keyboard_feedback_space" /> <key-style @@ -119,7 +119,7 @@ latin:maxPopupKeyboardColumn="5" /> <key-style latin:styleName="micKeyStyle" - latin:codes="@integer/key_voice" + latin:code="@integer/key_voice" latin:keyIcon="@drawable/sym_bkeyboard_mic" latin:iconPreview="@drawable/sym_keyboard_feedback_mic" latin:parentStyle="functionalKeyStyle" /> @@ -127,25 +127,25 @@ </switch> <key-style latin:styleName="tabKeyStyle" - latin:codes="@integer/key_tab" + latin:code="@integer/key_tab" latin:keyLabel="@string/label_tab_key" latin:keyLabelOption="fontNormal" latin:parentStyle="functionalKeyStyle" /> <key-style latin:styleName="toSymbolKeyStyle" - latin:codes="@integer/key_switch_alpha_symbol" + latin:code="@integer/key_switch_alpha_symbol" latin:keyLabel="@string/label_to_symbol_key" latin:keyLabelOption="fontNormal" latin:parentStyle="functionalKeyStyle" /> <key-style latin:styleName="toAlphaKeyStyle" - latin:codes="@integer/key_switch_alpha_symbol" + latin:code="@integer/key_switch_alpha_symbol" latin:keyLabel="@string/label_to_alpha_key" latin:keyLabelOption="fontNormal" latin:parentStyle="functionalKeyStyle" /> <key-style latin:styleName="moreKeyStyle" - latin:codes="@integer/key_shift" + latin:code="@integer/key_shift" latin:keyLabel="@string/label_more_key" latin:keyLabelOption="fontNormal" latin:parentStyle="functionalKeyStyle" diff --git a/java/res/xml-xlarge/kbd_numkey_styles.xml b/java/res/xml-xlarge/kbd_numkey_styles.xml index adf45a861087c4fb74c89e4940c54afbd4e67c1e..3c62cb0176b06199e253e30ab9d3ee42ac695fc5 100644 --- a/java/res/xml-xlarge/kbd_numkey_styles.xml +++ b/java/res/xml-xlarge/kbd_numkey_styles.xml @@ -27,60 +27,60 @@ > <key-style latin:styleName="num0KeyStyle" - latin:codes="48" + latin:code="48" latin:keyIcon="@drawable/sym_keyboard_num0_holo" /> <key-style latin:styleName="num1KeyStyle" - latin:codes="49" + latin:code="49" latin:keyIcon="@drawable/sym_keyboard_num1_holo" /> <key-style latin:styleName="num2KeyStyle" - latin:codes="50" + latin:code="50" latin:keyIcon="@drawable/sym_keyboard_num2_holo" /> <key-style latin:styleName="num3KeyStyle" - latin:codes="51" + latin:code="51" latin:keyIcon="@drawable/sym_keyboard_num3_holo" /> <key-style latin:styleName="num4KeyStyle" - latin:codes="52" + latin:code="52" latin:keyIcon="@drawable/sym_keyboard_num4_holo" /> <key-style latin:styleName="num5KeyStyle" - latin:codes="53" + latin:code="53" latin:keyIcon="@drawable/sym_keyboard_num5_holo" /> <key-style latin:styleName="num6KeyStyle" - latin:codes="54" + latin:code="54" latin:keyIcon="@drawable/sym_keyboard_num6_holo" /> <key-style latin:styleName="num7KeyStyle" - latin:codes="55" + latin:code="55" latin:keyIcon="@drawable/sym_keyboard_num7_holo" /> <key-style latin:styleName="num8KeyStyle" - latin:codes="56" + latin:code="56" latin:keyIcon="@drawable/sym_keyboard_num8_holo" /> <key-style latin:styleName="num9KeyStyle" - latin:codes="57" + latin:code="57" latin:keyIcon="@drawable/sym_keyboard_num9_holo" /> <key-style latin:styleName="numStarKeyStyle" - latin:codes="42" + latin:code="42" latin:keyIcon="@drawable/sym_keyboard_numbstar_holo" /> <key-style latin:styleName="numPoundKeyStyle" - latin:codes="35" + latin:code="35" latin:keyIcon="@drawable/sym_keyboard_numbpound_holo" /> <key-style latin:styleName="numAltKeyStyle" - latin:codes="@integer/key_switch_alpha_symbol" + latin:code="@integer/key_switch_alpha_symbol" latin:keyIcon="@drawable/sym_keyboard_numalt" latin:iconPreview="@drawable/sym_keyboard_feedback_numalt" /> <key-style latin:styleName="numSpaceKeyStyle" - latin:codes="@integer/key_space" + latin:code="@integer/key_space" latin:keyIcon="@drawable/sym_keyboard_space_holo" latin:iconPreview="@drawable/sym_keyboard_feedback_space" /> </case> @@ -89,60 +89,60 @@ > <key-style latin:styleName="num0KeyStyle" - latin:codes="48" + latin:code="48" latin:keyIcon="@drawable/sym_bkeyboard_num0" /> <key-style latin:styleName="num1KeyStyle" - latin:codes="49" + latin:code="49" latin:keyIcon="@drawable/sym_bkeyboard_num1" /> <key-style latin:styleName="num2KeyStyle" - latin:codes="50" + latin:code="50" latin:keyIcon="@drawable/sym_bkeyboard_num2" /> <key-style latin:styleName="num3KeyStyle" - latin:codes="51" + latin:code="51" latin:keyIcon="@drawable/sym_bkeyboard_num3" /> <key-style latin:styleName="num4KeyStyle" - latin:codes="52" + latin:code="52" latin:keyIcon="@drawable/sym_bkeyboard_num4" /> <key-style latin:styleName="num5KeyStyle" - latin:codes="53" + latin:code="53" latin:keyIcon="@drawable/sym_bkeyboard_num5" /> <key-style latin:styleName="num6KeyStyle" - latin:codes="54" + latin:code="54" latin:keyIcon="@drawable/sym_bkeyboard_num6" /> <key-style latin:styleName="num7KeyStyle" - latin:codes="55" + latin:code="55" latin:keyIcon="@drawable/sym_bkeyboard_num7" /> <key-style latin:styleName="num8KeyStyle" - latin:codes="56" + latin:code="56" latin:keyIcon="@drawable/sym_bkeyboard_num8" /> <key-style latin:styleName="num9KeyStyle" - latin:codes="57" + latin:code="57" latin:keyIcon="@drawable/sym_bkeyboard_num9" /> <key-style latin:styleName="numStarKeyStyle" - latin:codes="42" + latin:code="42" latin:keyIcon="@drawable/sym_bkeyboard_numstar" /> <key-style latin:styleName="numPoundKeyStyle" - latin:codes="35" + latin:code="35" latin:keyIcon="@drawable/sym_bkeyboard_numpound" /> <key-style latin:styleName="numAltKeyStyle" - latin:codes="@integer/key_switch_alpha_symbol" + latin:code="@integer/key_switch_alpha_symbol" latin:keyIcon="@drawable/sym_bkeyboard_numalt" latin:iconPreview="@drawable/sym_keyboard_feedback_numalt" /> <key-style latin:styleName="numSpaceKeyStyle" - latin:codes="@integer/key_space" + latin:code="@integer/key_space" latin:keyIcon="@drawable/sym_bkeyboard_space" latin:iconPreview="@drawable/sym_keyboard_feedback_space" /> </case> diff --git a/java/res/xml-xlarge/kbd_phone.xml b/java/res/xml-xlarge/kbd_phone.xml index 66f6020680f22ae4987e1682289d6b07690d940b..45c298362494681df0f6335a365a45a56d02c5c2 100644 --- a/java/res/xml-xlarge/kbd_phone.xml +++ b/java/res/xml-xlarge/kbd_phone.xml @@ -44,11 +44,11 @@ <Spacer latin:horizontalGap="8.470%p" /> <Key - latin:codes="45" + latin:code="45" latin:keyLabel=" - " latin:keyWidth="8.042%p" /> <Key - latin:codes="43" + latin:code="43" latin:keyLabel=" + " latin:keyWidth="8.042%p" /> <Spacer @@ -75,11 +75,11 @@ <Spacer latin:horizontalGap="8.470%p" /> <Key - latin:codes="44" + latin:code="44" latin:keyLabel=" , " latin:keyWidth="8.042%p" /> <Key - latin:codes="46" + latin:code="46" latin:keyLabel=" . " latin:keyWidth="8.042%p" /> <Spacer @@ -105,11 +105,11 @@ <Spacer latin:horizontalGap="20.427%p" /> <Key - latin:codes="40" + latin:code="40" latin:keyLabel=" ( " latin:keyWidth="8.042%p" /> <Key - latin:codes="41" + latin:code="41" latin:keyLabel=" ) " latin:keyWidth="8.042%p" /> <Spacer diff --git a/java/res/xml-xlarge/kbd_phone_symbols.xml b/java/res/xml-xlarge/kbd_phone_symbols.xml index 8c0df030db382918b3cae4e961c70a16eaa5c08d..891ceacbe67271694f73aaffe6cbbeff81a49a53 100644 --- a/java/res/xml-xlarge/kbd_phone_symbols.xml +++ b/java/res/xml-xlarge/kbd_phone_symbols.xml @@ -42,15 +42,15 @@ <Spacer latin:horizontalGap="4.458%p" /> <Key - latin:codes="45" + latin:code="45" latin:keyLabel=" - " latin:keyWidth="8.042%p" /> <Key - latin:codes="43" + latin:code="43" latin:keyLabel=" + " latin:keyWidth="8.042%p" /> <Key - latin:codes="44" + latin:code="44" latin:keyLabel="@string/label_pause_key" latin:keyWidth="8.042%p" /> <!-- To match one character label size with "Tab" and "Pause, I placed spaces around the @@ -77,15 +77,15 @@ <Spacer latin:horizontalGap="4.458%p" /> <Key - latin:codes="44" + latin:code="44" latin:keyLabel=" , " latin:keyWidth="8.042%p" /> <Key - latin:codes="46" + latin:code="46" latin:keyLabel=" . " latin:keyWidth="8.042%p" /> <Key - latin:codes="59" + latin:code="59" latin:keyLabel="@string/label_wait_key" latin:keyWidth="8.042%p" /> <!-- To match one character label size with "More" and "Wait", I placed spaces around the @@ -113,15 +113,15 @@ <Spacer latin:horizontalGap="16.406%p" /> <Key - latin:codes="40" + latin:code="40" latin:keyLabel=" ( " latin:keyWidth="8.042%p" /> <Key - latin:codes="41" + latin:code="41" latin:keyLabel=" ) " latin:keyWidth="8.042%p" /> <Key - latin:codes="78" + latin:code="78" latin:keyLabel=" N " latin:keyWidth="8.042%p" /> <Spacer diff --git a/java/res/xml/kbd_key_styles.xml b/java/res/xml/kbd_key_styles.xml index 3b6df7315489d38dbf8b6e4af7c982b4994df3b5..3b35f35609c24c3123bc90c233aab4560295860c 100644 --- a/java/res/xml/kbd_key_styles.xml +++ b/java/res/xml/kbd_key_styles.xml @@ -31,7 +31,7 @@ latin:isModifier="true" /> <key-style latin:styleName="shiftKeyStyle" - latin:codes="@integer/key_shift" + latin:code="@integer/key_shift" latin:keyIcon="@drawable/sym_keyboard_shift" latin:shiftedIcon="@drawable/sym_keyboard_shift_locked" latin:iconPreview="@drawable/sym_keyboard_feedback_shift" @@ -39,7 +39,7 @@ latin:isSticky="true" /> <key-style latin:styleName="deleteKeyStyle" - latin:codes="@integer/key_delete" + latin:code="@integer/key_delete" latin:keyIcon="@drawable/sym_keyboard_delete" latin:iconPreview="@drawable/sym_keyboard_feedback_delete" latin:parentStyle="functionalKeyStyle" @@ -54,7 +54,7 @@ > <key-style latin:styleName="toSymbolKeyStyle" - latin:codes="@integer/key_switch_alpha_symbol" + latin:code="@integer/key_switch_alpha_symbol" latin:keyIcon="@drawable/sym_keyboard_123_mic" latin:iconPreview="@drawable/sym_keyboard_feedback_123_mic" latin:parentStyle="functionalKeyStyle" /> @@ -62,32 +62,32 @@ <default> <key-style latin:styleName="toSymbolKeyStyle" - latin:codes="@integer/key_switch_alpha_symbol" + latin:code="@integer/key_switch_alpha_symbol" latin:keyLabel="@string/label_to_symbol_key" latin:parentStyle="functionalKeyStyle" /> </default> </switch> <key-style latin:styleName="settingsKeyStyle" - latin:codes="@integer/key_settings" + latin:code="@integer/key_settings" latin:keyIcon="@drawable/sym_keyboard_settings" latin:iconPreview="@drawable/sym_keyboard_feedback_settings" latin:parentStyle="functionalKeyStyle" /> <key-style latin:styleName="spaceKeyStyle" - latin:codes="@integer/key_space" + latin:code="@integer/key_space" latin:keyIcon="@drawable/sym_keyboard_space" latin:iconPreview="@drawable/sym_keyboard_feedback_space" latin:parentStyle="functionalKeyStyle" /> <key-style latin:styleName="tabKeyStyle" - latin:codes="@integer/key_tab" + latin:code="@integer/key_tab" latin:keyIcon="@drawable/sym_keyboard_tab" latin:iconPreview="@drawable/sym_keyboard_feedback_tab" latin:parentStyle="functionalKeyStyle" /> <key-style latin:styleName="micKeyStyle" - latin:codes="@integer/key_voice" + latin:code="@integer/key_voice" latin:keyIcon="@drawable/sym_keyboard_mic" latin:iconPreview="@drawable/sym_keyboard_feedback_mic" latin:keyHintIcon="@drawable/hint_popup" @@ -97,7 +97,7 @@ which is laid out as normal letter key. --> <key-style latin:styleName="nonSpecialBackgroundTabKeyStyle" - latin:codes="@integer/key_tab" + latin:code="@integer/key_tab" latin:keyIcon="@drawable/sym_keyboard_tab" latin:iconPreview="@drawable/sym_keyboard_feedback_tab" /> </case> @@ -108,7 +108,7 @@ latin:styleName="functionalKeyStyle" /> <key-style latin:styleName="shiftKeyStyle" - latin:codes="@integer/key_shift" + latin:code="@integer/key_shift" latin:keyIcon="@drawable/sym_bkeyboard_shift" latin:shiftedIcon="@drawable/sym_bkeyboard_shift_locked" latin:iconPreview="@drawable/sym_keyboard_feedback_shift" @@ -116,7 +116,7 @@ latin:isSticky="true" /> <key-style latin:styleName="deleteKeyStyle" - latin:codes="@integer/key_delete" + latin:code="@integer/key_delete" latin:keyIcon="@drawable/sym_bkeyboard_delete" latin:iconPreview="@drawable/sym_keyboard_feedback_delete" latin:parentStyle="functionalKeyStyle" @@ -131,7 +131,7 @@ > <key-style latin:styleName="toSymbolKeyStyle" - latin:codes="@integer/key_switch_alpha_symbol" + latin:code="@integer/key_switch_alpha_symbol" latin:keyIcon="@drawable/sym_bkeyboard_123_mic" latin:iconPreview="@drawable/sym_keyboard_feedback_123_mic" latin:parentStyle="functionalKeyStyle" /> @@ -139,32 +139,32 @@ <default> <key-style latin:styleName="toSymbolKeyStyle" - latin:codes="@integer/key_switch_alpha_symbol" + latin:code="@integer/key_switch_alpha_symbol" latin:keyLabel="@string/label_to_symbol_key" latin:parentStyle="functionalKeyStyle" /> </default> </switch> <key-style latin:styleName="settingsKeyStyle" - latin:codes="@integer/key_settings" + latin:code="@integer/key_settings" latin:keyIcon="@drawable/sym_bkeyboard_settings" latin:iconPreview="@drawable/sym_keyboard_feedback_settings" latin:parentStyle="functionalKeyStyle" /> <key-style latin:styleName="spaceKeyStyle" - latin:codes="@integer/key_space" + latin:code="@integer/key_space" latin:keyIcon="@drawable/sym_bkeyboard_space" latin:iconPreview="@drawable/sym_keyboard_feedback_space" latin:parentStyle="functionalKeyStyle" /> <key-style latin:styleName="tabKeyStyle" - latin:codes="@integer/key_tab" + latin:code="@integer/key_tab" latin:keyIcon="@drawable/sym_bkeyboard_tab" latin:iconPreview="@drawable/sym_keyboard_feedback_tab" latin:parentStyle="functionalKeyStyle" /> <key-style latin:styleName="micKeyStyle" - latin:codes="@integer/key_voice" + latin:code="@integer/key_voice" latin:keyIcon="@drawable/sym_bkeyboard_mic" latin:iconPreview="@drawable/sym_keyboard_feedback_mic" latin:keyHintIcon="@drawable/hint_popup" @@ -174,7 +174,7 @@ which is laid out as normal letter key. --> <key-style latin:styleName="nonSpecialBackgroundTabKeyStyle" - latin:codes="@integer/key_tab" + latin:code="@integer/key_tab" latin:keyIcon="@drawable/sym_bkeyboard_tab" latin:iconPreview="@drawable/sym_keyboard_feedback_tab" /> </case> @@ -186,7 +186,7 @@ > <key-style latin:styleName="returnKeyStyle" - latin:codes="@integer/key_return" + latin:code="@integer/key_return" latin:keyLabel="@string/label_go_key" latin:parentStyle="functionalKeyStyle" /> </case> @@ -195,7 +195,7 @@ > <key-style latin:styleName="returnKeyStyle" - latin:codes="@integer/key_return" + latin:code="@integer/key_return" latin:keyLabel="@string/label_next_key" latin:parentStyle="functionalKeyStyle" /> </case> @@ -204,7 +204,7 @@ > <key-style latin:styleName="returnKeyStyle" - latin:codes="@integer/key_return" + latin:code="@integer/key_return" latin:keyLabel="@string/label_done_key" latin:parentStyle="functionalKeyStyle" /> </case> @@ -213,7 +213,7 @@ > <key-style latin:styleName="returnKeyStyle" - latin:codes="@integer/key_return" + latin:code="@integer/key_return" latin:keyLabel="@string/label_send_key" latin:parentStyle="functionalKeyStyle" /> </case> @@ -226,7 +226,7 @@ > <key-style latin:styleName="returnKeyStyle" - latin:codes="@integer/key_return" + latin:code="@integer/key_return" latin:keyIcon="@drawable/sym_keyboard_search" latin:iconPreview="@drawable/sym_keyboard_feedback_search" latin:parentStyle="functionalKeyStyle" /> @@ -236,7 +236,7 @@ > <key-style latin:styleName="returnKeyStyle" - latin:codes="@integer/key_return" + latin:code="@integer/key_return" latin:keyIcon="@drawable/sym_bkeyboard_search" latin:iconPreview="@drawable/sym_keyboard_feedback_search" latin:parentStyle="functionalKeyStyle" /> @@ -250,7 +250,7 @@ > <key-style latin:styleName="returnKeyStyle" - latin:codes="@integer/key_return" + latin:code="@integer/key_return" latin:keyIcon="@drawable/sym_keyboard_return" latin:iconPreview="@drawable/sym_keyboard_feedback_return" latin:parentStyle="functionalKeyStyle" /> @@ -260,7 +260,7 @@ > <key-style latin:styleName="returnKeyStyle" - latin:codes="@integer/key_return" + latin:code="@integer/key_return" latin:keyIcon="@drawable/sym_bkeyboard_return" latin:iconPreview="@drawable/sym_keyboard_feedback_return" latin:parentStyle="functionalKeyStyle" /> @@ -270,12 +270,12 @@ </switch> <key-style latin:styleName="toAlphaKeyStyle" - latin:codes="@integer/key_switch_alpha_symbol" + latin:code="@integer/key_switch_alpha_symbol" latin:keyLabel="@string/label_to_alpha_key" latin:parentStyle="functionalKeyStyle" /> <key-style latin:styleName="altKeyStyle" - latin:codes="@integer/key_shift" + latin:code="@integer/key_shift" latin:keyLabel="@string/label_alt_key" latin:parentStyle="functionalKeyStyle" latin:isSticky="true" /> diff --git a/java/res/xml/kbd_number.xml b/java/res/xml/kbd_number.xml index f4a5def9502394756540f992d77128fac25ca4ab..f4fe8401a9423ce4706924ee60ddd9007276b956 100644 --- a/java/res/xml/kbd_number.xml +++ b/java/res/xml/kbd_number.xml @@ -37,7 +37,7 @@ > <key-style latin:styleName="numSpaceKeyStyle" - latin:codes="@integer/key_space" + latin:code="@integer/key_space" latin:keyIcon="@drawable/sym_keyboard_space" latin:iconPreview="@drawable/sym_keyboard_feedback_space" /> </case> @@ -46,7 +46,7 @@ > <key-style latin:styleName="numSpaceKeyStyle" - latin:codes="@integer/key_space" + latin:code="@integer/key_space" latin:keyIcon="@drawable/sym_bkeyboard_space" latin:iconPreview="@drawable/sym_keyboard_feedback_space" /> </case> diff --git a/java/res/xml/kbd_numkey_styles.xml b/java/res/xml/kbd_numkey_styles.xml index 006476db27d3809914c468eadda51a564ddc7ff9..2f9ae325a4a6f7e467272c4233fb266fab903a9d 100644 --- a/java/res/xml/kbd_numkey_styles.xml +++ b/java/res/xml/kbd_numkey_styles.xml @@ -27,60 +27,60 @@ > <key-style latin:styleName="num0KeyStyle" - latin:codes="48" + latin:code="48" latin:keyIcon="@drawable/sym_keyboard_num0" /> <key-style latin:styleName="num1KeyStyle" - latin:codes="49" + latin:code="49" latin:keyIcon="@drawable/sym_keyboard_num1" /> <key-style latin:styleName="num2KeyStyle" - latin:codes="50" + latin:code="50" latin:keyIcon="@drawable/sym_keyboard_num2" /> <key-style latin:styleName="num3KeyStyle" - latin:codes="51" + latin:code="51" latin:keyIcon="@drawable/sym_keyboard_num3" /> <key-style latin:styleName="num4KeyStyle" - latin:codes="52" + latin:code="52" latin:keyIcon="@drawable/sym_keyboard_num4" /> <key-style latin:styleName="num5KeyStyle" - latin:codes="53" + latin:code="53" latin:keyIcon="@drawable/sym_keyboard_num5" /> <key-style latin:styleName="num6KeyStyle" - latin:codes="54" + latin:code="54" latin:keyIcon="@drawable/sym_keyboard_num6" /> <key-style latin:styleName="num7KeyStyle" - latin:codes="55" + latin:code="55" latin:keyIcon="@drawable/sym_keyboard_num7" /> <key-style latin:styleName="num8KeyStyle" - latin:codes="56" + latin:code="56" latin:keyIcon="@drawable/sym_keyboard_num8" /> <key-style latin:styleName="num9KeyStyle" - latin:codes="57" + latin:code="57" latin:keyIcon="@drawable/sym_keyboard_num9" /> <key-style latin:styleName="numStarKeyStyle" - latin:codes="42" + latin:code="42" latin:keyIcon="@drawable/sym_keyboard_numstar" /> <key-style latin:styleName="numPoundKeyStyle" - latin:codes="35" + latin:code="35" latin:keyIcon="@drawable/sym_keyboard_numpound" /> <key-style latin:styleName="numAltKeyStyle" - latin:codes="@integer/key_switch_alpha_symbol" + latin:code="@integer/key_switch_alpha_symbol" latin:keyIcon="@drawable/sym_keyboard_numalt" latin:iconPreview="@drawable/sym_keyboard_feedback_numalt" /> <key-style latin:styleName="numSpaceKeyStyle" - latin:codes="@integer/key_space" + latin:code="@integer/key_space" latin:keyIcon="@drawable/sym_keyboard_space" latin:iconPreview="@drawable/sym_keyboard_feedback_space" /> </case> @@ -89,60 +89,60 @@ > <key-style latin:styleName="num0KeyStyle" - latin:codes="48" + latin:code="48" latin:keyIcon="@drawable/sym_bkeyboard_num0" /> <key-style latin:styleName="num1KeyStyle" - latin:codes="49" + latin:code="49" latin:keyIcon="@drawable/sym_bkeyboard_num1" /> <key-style latin:styleName="num2KeyStyle" - latin:codes="50" + latin:code="50" latin:keyIcon="@drawable/sym_bkeyboard_num2" /> <key-style latin:styleName="num3KeyStyle" - latin:codes="51" + latin:code="51" latin:keyIcon="@drawable/sym_bkeyboard_num3" /> <key-style latin:styleName="num4KeyStyle" - latin:codes="52" + latin:code="52" latin:keyIcon="@drawable/sym_bkeyboard_num4" /> <key-style latin:styleName="num5KeyStyle" - latin:codes="53" + latin:code="53" latin:keyIcon="@drawable/sym_bkeyboard_num5" /> <key-style latin:styleName="num6KeyStyle" - latin:codes="54" + latin:code="54" latin:keyIcon="@drawable/sym_bkeyboard_num6" /> <key-style latin:styleName="num7KeyStyle" - latin:codes="55" + latin:code="55" latin:keyIcon="@drawable/sym_bkeyboard_num7" /> <key-style latin:styleName="num8KeyStyle" - latin:codes="56" + latin:code="56" latin:keyIcon="@drawable/sym_bkeyboard_num8" /> <key-style latin:styleName="num9KeyStyle" - latin:codes="57" + latin:code="57" latin:keyIcon="@drawable/sym_bkeyboard_num9" /> <key-style latin:styleName="numStarKeyStyle" - latin:codes="42" + latin:code="42" latin:keyIcon="@drawable/sym_bkeyboard_numstar" /> <key-style latin:styleName="numPoundKeyStyle" - latin:codes="35" + latin:code="35" latin:keyIcon="@drawable/sym_bkeyboard_numpound" /> <key-style latin:styleName="numAltKeyStyle" - latin:codes="@integer/key_switch_alpha_symbol" + latin:code="@integer/key_switch_alpha_symbol" latin:keyIcon="@drawable/sym_bkeyboard_numalt" latin:iconPreview="@drawable/sym_keyboard_feedback_numalt" /> <key-style latin:styleName="numSpaceKeyStyle" - latin:codes="@integer/key_space" + latin:code="@integer/key_space" latin:keyIcon="@drawable/sym_bkeyboard_space" latin:iconPreview="@drawable/sym_keyboard_feedback_space" /> </case> diff --git a/java/res/xml/kbd_phone_symbols.xml b/java/res/xml/kbd_phone_symbols.xml index 1997a75fcaea23db78117d04a96975389a3e7129..67cd330e779b87e5cbc2ec9eada90e919376400b 100644 --- a/java/res/xml/kbd_phone_symbols.xml +++ b/java/res/xml/kbd_phone_symbols.xml @@ -56,7 +56,7 @@ <!-- Pause is a comma. Check PhoneNumberUtils.java to see if this has changed. --> <Key - latin:codes="44" + latin:code="44" latin:keyLabel="Pause" /> <Key latin:keyLabel="," /> @@ -72,7 +72,7 @@ latin:keyEdgeFlags="left" /> <!-- Wait is a semicolon. --> <Key - latin:codes="59" + latin:code="59" latin:keyLabel="Wait" /> <Key latin:keyStyle="numPoundKeyStyle" /> @@ -85,7 +85,7 @@ latin:rowEdgeFlags="bottom" > <Key - latin:codes="@integer/key_switch_alpha_symbol" + latin:code="@integer/key_switch_alpha_symbol" latin:keyLabel="@string/label_to_numeric_key" latin:keyEdgeFlags="left" /> <Key diff --git a/java/res/xml/kbd_qwerty_black_symbol.xml b/java/res/xml/kbd_qwerty_black_symbol.xml index fe6b3a61133a070e91d79cb09257450fa92d476e..6e45c12bfb51dc3d1c20cad977d4cd0c38bef868 100644 --- a/java/res/xml/kbd_qwerty_black_symbol.xml +++ b/java/res/xml/kbd_qwerty_black_symbol.xml @@ -34,7 +34,7 @@ latin:hasVoiceKey="false" > <Key - latin:codes="@integer/key_switch_alpha_symbol" + latin:code="@integer/key_switch_alpha_symbol" latin:keyIcon="@drawable/sym_bkeyboard_123_mic" latin:iconPreview="@drawable/sym_keyboard_feedback_123_mic" latin:keyWidth="20%p" @@ -43,7 +43,7 @@ </case> <default> <Key - latin:codes="@integer/key_switch_alpha_symbol" + latin:code="@integer/key_switch_alpha_symbol" latin:keyLabel="@string/label_to_symbol_key" latin:keyWidth="20%p" latin:isModifier="true" @@ -63,7 +63,7 @@ latin:hasVoiceKey="false" > <Key - latin:codes="@integer/key_switch_alpha_symbol" + latin:code="@integer/key_switch_alpha_symbol" latin:keyIcon="@drawable/sym_bkeyboard_123_mic" latin:iconPreview="@drawable/sym_keyboard_feedback_123_mic" latin:keyWidth="15%p" @@ -72,7 +72,7 @@ </case> <default> <Key - latin:codes="@integer/key_switch_alpha_symbol" + latin:code="@integer/key_switch_alpha_symbol" latin:keyLabel="@string/label_to_symbol_key" latin:keyWidth="15%p" latin:isModifier="true" diff --git a/java/src/com/android/inputmethod/keyboard/Key.java b/java/src/com/android/inputmethod/keyboard/Key.java index 1c165e323d848c8436b28e9defcf30373032d12a..26c3f3ede3286c5b1f7618f8e7cd843a2d1b4bbb 100644 --- a/java/src/com/android/inputmethod/keyboard/Key.java +++ b/java/src/com/android/inputmethod/keyboard/Key.java @@ -32,10 +32,9 @@ import android.util.Xml; */ public class Key { /** - * All the key codes (unicode or custom code) that this key could generate, zero'th - * being the most important. + * The key code (unicode or custom code) that this key generates. */ - public final int[] mCodes; + public final int mCode; /** The unicode that this key generates in manual temporary upper case mode. */ public final int mManualTemporaryUpperCaseCode; @@ -133,8 +132,6 @@ public class Key { android.R.attr.state_pressed }; - private static final int[] DUMMY_CODES = { 0 }; - /** * Create an empty key with no attributes. * This constructor is being used only for key in mini popup keyboard. @@ -157,7 +154,7 @@ public class Key { final String popupSpecification = popupCharacter.toString(); mLabel = PopupCharactersParser.getLabel(popupSpecification); mOutputText = PopupCharactersParser.getOutputText(popupSpecification); - mCodes = PopupCharactersParser.getCodes(res, popupSpecification); + mCode = PopupCharactersParser.getCode(res, popupSpecification); mIcon = PopupCharactersParser.getIcon(res, popupSpecification); // Horizontal gap is divided equally to both sides of the key. mX = x + mGap / 2; @@ -240,13 +237,14 @@ public class Key { mOutputText = style.getText(keyAttr, R.styleable.Keyboard_Key_keyOutputText); // Choose the first letter of the label as primary code if not // specified. - final int[] codes = style.getIntArray(keyAttr, R.styleable.Keyboard_Key_codes); - if (codes == null && !TextUtils.isEmpty(mLabel)) { - mCodes = new int[] { mLabel.charAt(0) }; - } else if (codes != null) { - mCodes = codes; + final int code = style.getInt(keyAttr, R.styleable.Keyboard_Key_code, + Keyboard.CODE_UNSPECIFIED); + if (code == Keyboard.CODE_UNSPECIFIED && !TextUtils.isEmpty(mLabel)) { + mCode = mLabel.charAt(0); + } else if (code != Keyboard.CODE_UNSPECIFIED) { + mCode = code; } else { - mCodes = DUMMY_CODES; + mCode = Keyboard.CODE_DUMMY; } final Drawable shiftedIcon = style.getDrawable(keyAttr, diff --git a/java/src/com/android/inputmethod/keyboard/KeyStyles.java b/java/src/com/android/inputmethod/keyboard/KeyStyles.java index 9e87816bcc7ca2115ca8cfb730e4578ce70c694b..44ec53181e322f5491ef8f7289bae2d73a806eb3 100644 --- a/java/src/com/android/inputmethod/keyboard/KeyStyles.java +++ b/java/src/com/android/inputmethod/keyboard/KeyStyles.java @@ -23,11 +23,9 @@ import android.content.res.TypedArray; import android.content.res.XmlResourceParser; import android.graphics.drawable.Drawable; import android.util.Log; -import android.util.TypedValue; import java.util.ArrayList; import java.util.HashMap; -import java.util.StringTokenizer; public class KeyStyles { private static final String TAG = "KeyStyles"; @@ -38,7 +36,6 @@ public class KeyStyles { private static final KeyStyle EMPTY_KEY_STYLE = new EmptyKeyStyle(); public interface KeyStyle { - public int[] getIntArray(TypedArray a, int index); public CharSequence[] getTextArray(TypedArray a, int index); public Drawable getDrawable(TypedArray a, int index); public CharSequence getText(TypedArray a, int index); @@ -52,11 +49,6 @@ public class KeyStyles { // Nothing to do. } - @Override - public int[] getIntArray(TypedArray a, int index) { - return parseIntArray(a, index); - } - @Override public CharSequence[] getTextArray(TypedArray a, int index) { return parseTextArray(a, index); @@ -136,49 +128,11 @@ public class KeyStyles { return list.toArray(new CharSequence[list.size()]); } } - - protected static int[] parseIntArray(TypedArray a, int index) { - if (!a.hasValue(index)) - return null; - TypedValue v = new TypedValue(); - a.getValue(index, v); - if (v.type == TypedValue.TYPE_INT_DEC || v.type == TypedValue.TYPE_INT_HEX) { - return new int[] { v.data }; - } else if (v.type == TypedValue.TYPE_STRING) { - return parseCsvInt(v.string.toString()); - } else { - return null; - } - } - - /* package */ static int[] parseCsvInt(String value) { - int count = 0; - int lastIndex = 0; - if (value.length() > 0) { - count++; - while ((lastIndex = value.indexOf(",", lastIndex + 1)) > 0) { - count++; - } - } - int[] values = new int[count]; - count = 0; - StringTokenizer st = new StringTokenizer(value, ","); - while (st.hasMoreTokens()) { - values[count++] = Integer.parseInt(st.nextToken()); - } - return values; - } } private static class DeclaredKeyStyle extends EmptyKeyStyle { private final HashMap<Integer, Object> mAttributes = new HashMap<Integer, Object>(); - @Override - public int[] getIntArray(TypedArray a, int index) { - return a.hasValue(index) - ? super.getIntArray(a, index) : (int[])mAttributes.get(index); - } - @Override public CharSequence[] getTextArray(TypedArray a, int index) { return a.hasValue(index) @@ -221,7 +175,7 @@ public class KeyStyles { private void parseKeyStyleAttributes(TypedArray keyAttr) { // TODO: Currently not all Key attributes can be declared as style. - readIntArray(keyAttr, R.styleable.Keyboard_Key_codes); + readInt(keyAttr, R.styleable.Keyboard_Key_code); readText(keyAttr, R.styleable.Keyboard_Key_keyLabel); readFlag(keyAttr, R.styleable.Keyboard_Key_keyLabelOption); readTextArray(keyAttr, R.styleable.Keyboard_Key_popupCharacters); @@ -262,12 +216,6 @@ public class KeyStyles { mAttributes.put(index, a.getBoolean(index, false)); } - private void readIntArray(TypedArray a, int index) { - final int[] value = parseIntArray(a, index); - if (value != null) - mAttributes.put(index, value); - } - private void readTextArray(TypedArray a, int index) { final CharSequence[] value = parseTextArray(a, index); if (value != null) diff --git a/java/src/com/android/inputmethod/keyboard/Keyboard.java b/java/src/com/android/inputmethod/keyboard/Keyboard.java index a20c8614205acb3e2144355a78241c9021f64a21..ae1d302db81e11dea1d49e54d68552bc9edda218 100644 --- a/java/src/com/android/inputmethod/keyboard/Keyboard.java +++ b/java/src/com/android/inputmethod/keyboard/Keyboard.java @@ -65,12 +65,15 @@ public class Keyboard { public static final int CODE_PERIOD = '.'; /** Special keys code. These should be aligned with values/keycodes.xml */ + public static final int CODE_DUMMY = 0; public static final int CODE_SHIFT = -1; public static final int CODE_SWITCH_ALPHA_SYMBOL = -2; public static final int CODE_CANCEL = -3; public static final int CODE_DONE = -4; public static final int CODE_DELETE = -5; public static final int CODE_ALT = -6; + // Code value representing the code is not specified. + public static final int CODE_UNSPECIFIED = -99; public static final int CODE_SETTINGS = -100; public static final int CODE_SETTINGS_LONGPRESS = -101; // TODO: remove this once LatinIME stops referring to this. diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardParser.java b/java/src/com/android/inputmethod/keyboard/KeyboardParser.java index ed59b8be549f3c832e7ced78954e6666a72c1dcf..c41d57075d68d9f6fcf83acda1694a61335df127 100644 --- a/java/src/com/android/inputmethod/keyboard/KeyboardParser.java +++ b/java/src/com/android/inputmethod/keyboard/KeyboardParser.java @@ -279,14 +279,14 @@ public class KeyboardParser { checkEndTag(TAG_KEY, parser); } else { Key key = new Key(mResources, row, mCurrentX, mCurrentY, parser, mKeyStyles); - if (DEBUG) Log.d(TAG, String.format("<%s keyLabel=%s codes=%s popupCharacters=%s />", - TAG_KEY, key.mLabel, Arrays.toString(key.mCodes), + if (DEBUG) Log.d(TAG, String.format("<%s keyLabel=%s code=%d popupCharacters=%s />", + TAG_KEY, key.mLabel, key.mCode, Arrays.toString(key.mPopupCharacters))); checkEndTag(TAG_KEY, parser); keys.add(key); - if (key.mCodes[0] == Keyboard.CODE_SHIFT) + if (key.mCode == Keyboard.CODE_SHIFT) mKeyboard.getShiftKeys().add(key); - if (key.mCodes[0] == Keyboard.CODE_SPACE) + if (key.mCode == Keyboard.CODE_SPACE) mKeyboard.setSpaceKey(key); endKey(key); } diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardView.java b/java/src/com/android/inputmethod/keyboard/KeyboardView.java index 7f573b24c297e3c9c34c614f72abc8cef2cb98d2..7c6e4dc4e4ad4fffde25a1a3d538d52939e81b56 100644 --- a/java/src/com/android/inputmethod/keyboard/KeyboardView.java +++ b/java/src/com/android/inputmethod/keyboard/KeyboardView.java @@ -834,7 +834,7 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { // For characters, use large font. For labels like "Done", use small font. final int labelSize; final Typeface labelStyle; - if (label.length() > 1 && key.mCodes.length < 2) { + if (label.length() > 1) { labelSize = mLabelTextSize; if ((key.mLabelOption & KEY_LABEL_OPTION_FONT_NORMAL) != 0) { labelStyle = Typeface.DEFAULT; @@ -943,7 +943,7 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { // TODO Should take care of temporaryShiftLabel here. mPreviewText.setCompoundDrawables(null, null, null, null); mPreviewText.setText(adjustCase(tracker.getPreviewText(key))); - if (key.mLabel.length() > 1 && key.mCodes.length < 2) { + if (key.mLabel.length() > 1) { mPreviewText.setTextSize(TypedValue.COMPLEX_UNIT_PX, mKeyLetterSize); mPreviewText.setTypeface(Typeface.DEFAULT_BOLD); } else { diff --git a/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java b/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java index b9041e36b6bec455275623f4c182ef11176864f5..7b079e38e538a1103a5a3976e38dac7c01254753 100644 --- a/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java +++ b/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java @@ -294,7 +294,7 @@ public class LatinKeyboard extends Keyboard { public boolean isInside(Key key, int pointX, int pointY) { int x = pointX; int y = pointY; - final int code = key.mCodes[0]; + final int code = key.mCode; if (code == CODE_SHIFT || code == CODE_DELETE) { y -= key.mHeight / 10; if (code == CODE_SHIFT) x += key.mWidth / 6; @@ -348,11 +348,11 @@ public class LatinKeyboard extends Keyboard { mPrefLetterY = y; for (int i = 0; i < nearby.length; i++) { Key k = nearbyKeys.get(nearby[i]); - if (k != key && inPrefList(k.mCodes[0], pref)) { + if (k != key && inPrefList(k.mCode, pref)) { final int dist = distanceFrom(k, x, y); if (dist < (int) (k.mWidth * OVERLAP_PERCENTAGE_LOW_PROB) && - (pref[k.mCodes[0]] > pref[mPrefLetter] * 3)) { - mPrefLetter = k.mCodes[0]; + (pref[k.mCode] > pref[mPrefLetter] * 3)) { + mPrefLetter = k.mCode; mPrefDistance = dist; if (DEBUG_PREFERRED_LETTER) { Log.d(TAG, "CORRECTED ALTHOUGH PREFERRED !!!!!!"); @@ -376,11 +376,11 @@ public class LatinKeyboard extends Keyboard { for (int i = 0; i < nearby.length; i++) { Key k = nearbyKeys.get(nearby[i]); - if (inPrefList(k.mCodes[0], pref)) { + if (inPrefList(k.mCode, pref)) { final int dist = distanceFrom(k, x, y); if (dist < (int) (k.mWidth * OVERLAP_PERCENTAGE_HIGH_PROB) && dist < mPrefDistance) { - mPrefLetter = k.mCodes[0]; + mPrefLetter = k.mCode; mPrefLetterX = x; mPrefLetterY = y; mPrefDistance = dist; @@ -430,7 +430,7 @@ public class LatinKeyboard extends Keyboard { List<Key> keys = getKeys(); int count = keys.size(); for (int i = 0; i < count; i++) { - if (keys.get(i).mCodes[0] == code) return i; + if (keys.get(i).mCode == code) return i; } return -1; } diff --git a/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java b/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java index 2243e93cf7949d23d81415a4afa63226dabdb982..cb3b430d5197219d91c48288683563c237839202 100644 --- a/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java +++ b/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java @@ -82,7 +82,7 @@ public class LatinKeyboardView extends KeyboardView { @Override protected boolean onLongPress(Key key) { - int primaryCode = key.mCodes[0]; + int primaryCode = key.mCode; if (primaryCode == Keyboard.CODE_SETTINGS) { return invokeOnKey(Keyboard.CODE_SETTINGS_LONGPRESS); } else if (primaryCode == '0' && getLatinKeyboard().isPhoneKeyboard()) { diff --git a/java/src/com/android/inputmethod/keyboard/MiniKeyboardKeyDetector.java b/java/src/com/android/inputmethod/keyboard/MiniKeyboardKeyDetector.java index 774b39ab7ff9ad88c30cbea87f67c07e0aba2e3d..f04991eb74debd16db3326eec7f4783e1275c3ed 100644 --- a/java/src/com/android/inputmethod/keyboard/MiniKeyboardKeyDetector.java +++ b/java/src/com/android/inputmethod/keyboard/MiniKeyboardKeyDetector.java @@ -52,7 +52,7 @@ public class MiniKeyboardKeyDetector extends KeyDetector { } if (allKeys != null && closestKeyIndex != NOT_A_KEY) - allKeys[0] = keys[closestKeyIndex].mCodes[0]; + allKeys[0] = keys[closestKeyIndex].mCode; return closestKeyIndex; } } diff --git a/java/src/com/android/inputmethod/keyboard/PointerTracker.java b/java/src/com/android/inputmethod/keyboard/PointerTracker.java index c0761117f67cd9eb68b4fca9621b0093f9c0fa5b..7928c4f8e9fdd5a0fcd73ab6ea05f5d3f8d6f858 100644 --- a/java/src/com/android/inputmethod/keyboard/PointerTracker.java +++ b/java/src/com/android/inputmethod/keyboard/PointerTracker.java @@ -43,7 +43,6 @@ public class PointerTracker { private final int mDelayBeforeKeyRepeatStart; private final int mLongPressKeyTimeout; private final int mLongPressShiftKeyTimeout; - private final int mMultiTapKeyTimeout; // Miscellaneous constants private static final int NOT_A_KEY = KeyDetector.NOT_A_KEY; @@ -75,13 +74,6 @@ public class PointerTracker { // true if sliding key is allowed. private boolean mIsAllowedSlidingKeyInput; - // For multi-tap - private int mLastSentIndex; - private int mTapCount; - private long mLastTapTime; - private boolean mInMultiTap; - private final StringBuilder mPreviewLabel = new StringBuilder(1); - // pressed key private int mPreviousKey = NOT_A_KEY; @@ -116,8 +108,6 @@ public class PointerTracker { mDelayBeforeKeyRepeatStart = res.getInteger(R.integer.config_delay_before_key_repeat_start); mLongPressKeyTimeout = res.getInteger(R.integer.config_long_press_key_timeout); mLongPressShiftKeyTimeout = res.getInteger(R.integer.config_long_press_shift_key_timeout); - mMultiTapKeyTimeout = res.getInteger(R.integer.config_multi_tap_key_timeout); - resetMultiTap(); } public void setOnKeyboardActionListener(KeyboardActionListener listener) { @@ -184,7 +174,7 @@ public class PointerTracker { private boolean isModifierInternal(int keyIndex) { final Key key = getKey(keyIndex); - return key == null ? false : isModifierCode(key.mCodes[0]); + return key == null ? false : isModifierCode(key.mCode); } public boolean isModifier() { @@ -197,12 +187,12 @@ public class PointerTracker { public boolean isOnShiftKey(int x, int y) { final Key key = getKey(mKeyDetector.getKeyIndexAndNearbyCodes(x, y, null)); - return key != null && key.mCodes[0] == Keyboard.CODE_SHIFT; + return key != null && key.mCode == Keyboard.CODE_SHIFT; } public boolean isSpaceKey(int keyIndex) { Key key = getKey(keyIndex); - return key != null && key.mCodes[0] == Keyboard.CODE_SPACE; + return key != null && key.mCode == Keyboard.CODE_SPACE; } public void releaseKey() { @@ -260,9 +250,8 @@ public class PointerTracker { mKeyAlreadyProcessed = false; mIsRepeatableKey = false; mIsInSlidingKeyInput = false; - checkMultiTap(eventTime, keyIndex); if (isValidKeyIndex(keyIndex)) { - callListenerOnPress(mKeys[keyIndex].mCodes[0]); + callListenerOnPress(mKeys[keyIndex].mCode); // This onPress call may have changed keyboard layout and have updated mKeyIndex. // If that's the case, mKeyIndex has been updated in setKeyboard(). keyIndex = mKeyState.getKeyIndex(); @@ -290,7 +279,7 @@ public class PointerTracker { if (oldKey == null) { // The pointer has been slid in to the new key, but the finger was not on any keys. // In this case, we must call onPress() to notify that the new key is being pressed. - callListenerOnPress(getKey(keyIndex).mCodes[0]); + callListenerOnPress(getKey(keyIndex).mCode); keyState.onMoveToNewKey(keyIndex, x, y); startLongPressTimer(keyIndex); } else if (!isMinorMoveBounce(x, y, keyIndex)) { @@ -298,11 +287,10 @@ public class PointerTracker { // onRelease() first to notify that the previous key has been released, then call // onPress() to notify that the new key is being pressed. mIsInSlidingKeyInput = true; - callListenerOnRelease(oldKey.mCodes[0]); + callListenerOnRelease(oldKey.mCode); mHandler.cancelLongPressTimers(); if (mIsAllowedSlidingKeyInput) { - resetMultiTap(); - callListenerOnPress(getKey(keyIndex).mCodes[0]); + callListenerOnPress(getKey(keyIndex).mCode); keyState.onMoveToNewKey(keyIndex, x, y); startLongPressTimer(keyIndex); } else { @@ -316,10 +304,9 @@ public class PointerTracker { // The pointer has been slid out from the previous key, we must call onRelease() to // notify that the previous key has been released. mIsInSlidingKeyInput = true; - callListenerOnRelease(oldKey.mCodes[0]); + callListenerOnRelease(oldKey.mCode); mHandler.cancelLongPressTimers(); if (mIsAllowedSlidingKeyInput) { - resetMultiTap(); keyState.onMoveToNewKey(keyIndex, x ,y); } else { setAlreadyProcessed(); @@ -351,7 +338,7 @@ public class PointerTracker { y = keyState.getKeyY(); } if (!mIsRepeatableKey) { - detectAndSendKey(keyIndex, x, y, eventTime); + detectAndSendKey(keyIndex, x, y); } if (isValidKeyIndex(keyIndex)) @@ -373,9 +360,7 @@ public class PointerTracker { public void repeatKey(int keyIndex) { Key key = getKey(keyIndex); if (key != null) { - // While key is repeating, because there is no need to handle multi-tap key, we can - // pass -1 as eventTime argument. - detectAndSendKey(keyIndex, key.mX, key.mY, -1); + detectAndSendKey(keyIndex, key.mX, key.mY); } } @@ -427,7 +412,7 @@ public class PointerTracker { private void startLongPressTimer(int keyIndex) { Key key = getKey(keyIndex); - if (key.mCodes[0] == Keyboard.CODE_SHIFT) { + if (key.mCode == Keyboard.CODE_SHIFT) { mHandler.startLongPressShiftTimer(mLongPressShiftKeyTimeout, keyIndex, this); } else if (mKeyboardSwitcher.isInMomentaryAutoModeSwitchState()) { // We use longer timeout for sliding finger input started from the symbols mode key. @@ -437,7 +422,7 @@ public class PointerTracker { } } - private void detectAndSendKey(int index, int x, int y, long eventTime) { + private void detectAndSendKey(int index, int x, int y) { final Key key = getKey(index); if (key == null) { callListenerOnCancelInput(); @@ -445,20 +430,11 @@ public class PointerTracker { } if (key.mOutputText != null) { callListenerOnTextInput(key.mOutputText); - callListenerOnRelease(key.mCodes[0]); + callListenerOnRelease(key.mCode); } else { - int code = key.mCodes[0]; + int code = key.mCode; final int[] codes = mKeyDetector.newCodeArray(); mKeyDetector.getKeyIndexAndNearbyCodes(x, y, codes); - // Multi-tap - if (mInMultiTap) { - if (mTapCount != -1) { - callListenerOnCodeInput(Keyboard.CODE_DELETE, KEY_DELETE, x, y); - } else { - mTapCount = 0; - } - code = key.mCodes[mTapCount]; - } // If keyboard is in manual temporary upper case state and key has manual temporary // shift code, alternate character code should be sent. @@ -477,51 +453,10 @@ public class PointerTracker { callListenerOnCodeInput(code, codes, x, y); callListenerOnRelease(code); } - mLastSentIndex = index; - mLastTapTime = eventTime; } - /** - * Handle multi-tap keys by producing the key label for the current multi-tap state. - */ public CharSequence getPreviewText(Key key) { - if (mInMultiTap) { - // Multi-tap - mPreviewLabel.setLength(0); - mPreviewLabel.append((char) key.mCodes[mTapCount < 0 ? 0 : mTapCount]); - return mPreviewLabel; - } else { - return key.mLabel; - } - } - - private void resetMultiTap() { - mLastSentIndex = NOT_A_KEY; - mTapCount = 0; - mLastTapTime = -1; - mInMultiTap = false; - } - - private void checkMultiTap(long eventTime, int keyIndex) { - Key key = getKey(keyIndex); - if (key == null) - return; - - final boolean isMultiTap = - (eventTime < mLastTapTime + mMultiTapKeyTimeout && keyIndex == mLastSentIndex); - if (key.mCodes.length > 1) { - mInMultiTap = true; - if (isMultiTap) { - mTapCount = (mTapCount + 1) % key.mCodes.length; - return; - } else { - mTapCount = -1; - return; - } - } - if (!isMultiTap) { - resetMultiTap(); - } + return key.mLabel; } private long mPreviousEventTime; @@ -529,7 +464,7 @@ public class PointerTracker { private void printTouchEvent(String title, int x, int y, long eventTime) { final int keyIndex = mKeyDetector.getKeyIndexAndNearbyCodes(x, y, null); final Key key = getKey(keyIndex); - final String code = (key == null) ? "----" : keyCodePrintable(key.mCodes[0]); + final String code = (key == null) ? "----" : keyCodePrintable(key.mCode); final long delta = eventTime - mPreviousEventTime; Log.d(TAG, String.format("%s%s[%d] %4d %4d %5d %3d(%s)", title, (mKeyAlreadyProcessed ? "-" : " "), mPointerId, x, y, delta, keyIndex, code)); diff --git a/java/src/com/android/inputmethod/keyboard/PopupCharactersParser.java b/java/src/com/android/inputmethod/keyboard/PopupCharactersParser.java index cad3da03eb9e7e3a73bba7c8c3d4a06c1cbb290a..32c25801d3d00927a7c7ff04b599de83da9df937 100644 --- a/java/src/com/android/inputmethod/keyboard/PopupCharactersParser.java +++ b/java/src/com/android/inputmethod/keyboard/PopupCharactersParser.java @@ -39,7 +39,6 @@ public class PopupCharactersParser { private static final String PREFIX_AT = "@"; private static final String PREFIX_ICON = PREFIX_AT + "drawable/"; private static final String PREFIX_CODE = PREFIX_AT + "integer/"; - private static final int[] DUMMY_CODES = { 0 }; private PopupCharactersParser() { // Intentional empty constructor for utility class. @@ -126,13 +125,13 @@ public class PopupCharactersParser { final String label = getLabel(popupSpec); if (label == null) throw new PopupCharactersParserError("Empty label: " + popupSpec); - // Code is automatically generated for one letter label. See getCode(). + // Code is automatically generated for one letter label. See {@link getCode()}. if (label.length() == 1) return null; return label; } - public static int[] getCodes(Resources res, String popupSpec) { + public static int getCode(Resources res, String popupSpec) { if (hasCode(popupSpec)) { final int end = indexOfLabelEnd(popupSpec, 0); if (indexOfLabelEnd(popupSpec, end + 1) >= 0) @@ -140,15 +139,15 @@ public class PopupCharactersParser { final int resId = getResourceId(res, popupSpec.substring(end + LABEL_END.length() + PREFIX_AT.length())); final int code = res.getInteger(resId); - return new int[] { code }; + return code; } if (indexOfLabelEnd(popupSpec, 0) > 0) - return DUMMY_CODES; + return Keyboard.CODE_DUMMY; final String label = getLabel(popupSpec); // Code is automatically generated for one letter label. if (label != null && label.length() == 1) - return new int[] { label.charAt(0) }; - return DUMMY_CODES; + return label.charAt(0); + return Keyboard.CODE_DUMMY; } public static Drawable getIcon(Resources res, String popupSpec) { diff --git a/java/src/com/android/inputmethod/keyboard/ProximityKeyDetector.java b/java/src/com/android/inputmethod/keyboard/ProximityKeyDetector.java index bd4bbcd89217d6dd0e51d755d6013bb059ebb7b4..0920da2cba4442e8f4f5a177df72b1a21ec891c5 100644 --- a/java/src/com/android/inputmethod/keyboard/ProximityKeyDetector.java +++ b/java/src/com/android/inputmethod/keyboard/ProximityKeyDetector.java @@ -46,17 +46,16 @@ public class ProximityKeyDetector extends KeyDetector { final int dist = key.squaredDistanceToEdge(touchX, touchY); if (isInside || (mProximityCorrectOn && dist < mProximityThresholdSquare)) { if (allKeys == null) continue; - final int nCodes = key.mCodes.length; // Find insertion point for (int j = 0; j < distances.length; j++) { if (distances[j] > dist) { - // Make space for nCodes codes - System.arraycopy(distances, j, distances, j + nCodes, - distances.length - (j + nCodes)); - System.arraycopy(allKeys, j, allKeys, j + nCodes, - allKeys.length - (j + nCodes)); - System.arraycopy(key.mCodes, 0, allKeys, j, nCodes); - Arrays.fill(distances, j, j + nCodes, dist); + final int nextPos = j + 1; + System.arraycopy(distances, j, distances, nextPos, + distances.length - nextPos); + System.arraycopy(allKeys, j, allKeys, nextPos, + allKeys.length - nextPos); + distances[j] = dist; + allKeys[j] = key.mCode; break; } } diff --git a/java/src/com/android/inputmethod/latin/TextEntryState.java b/java/src/com/android/inputmethod/latin/TextEntryState.java index f10b862939bb59e8c799559f79b6c709c4fc3572..f571f26d5ea921af3c5f8bcac572ccaaf772a384 100644 --- a/java/src/com/android/inputmethod/latin/TextEntryState.java +++ b/java/src/com/android/inputmethod/latin/TextEntryState.java @@ -263,9 +263,9 @@ public class TextEntryState { } public static void keyPressedAt(Key key, int x, int y) { - if (LOGGING && sKeyLocationFile != null && key.mCodes[0] >= 32) { + if (LOGGING && sKeyLocationFile != null && key.mCode >= 32) { String out = - "KEY: " + (char) key.mCodes[0] + "KEY: " + (char) key.mCode + " X: " + x + " Y: " + y + " MX: " + (key.mX + key.mWidth / 2) diff --git a/tests/src/com/android/inputmethod/keyboard/KeyStylesTests.java b/tests/src/com/android/inputmethod/keyboard/KeyStylesTests.java index 3f2b7f4d5463a77d1f6d2a5ce1b95ccb4ddfd17f..5dff114716140a034bf231330363e4382ec325ff 100644 --- a/tests/src/com/android/inputmethod/keyboard/KeyStylesTests.java +++ b/tests/src/com/android/inputmethod/keyboard/KeyStylesTests.java @@ -22,23 +22,6 @@ import android.test.AndroidTestCase; import android.text.TextUtils; public class KeyStylesTests extends AndroidTestCase { - private static void assertNumberFormatException(String message, String value) { - try { - EmptyKeyStyle.parseCsvInt(value); - fail(message); - } catch (NumberFormatException nfe) { - // success. - } - } - - private static void assertIntArray(String message, String value, Integer ... expected) { - final int actual[] = EmptyKeyStyle.parseCsvInt(value); - assertSame(message + ": result length", expected.length, actual.length); - for (int i = 0; i < actual.length; i++) { - assertEquals(message + ": result at " + i + ":", (int)expected[i], actual[i]); - } - } - private static String format(String message, Object expected, Object actual) { return message + " expected:<" + expected + "> but was:<" + actual + ">"; } @@ -57,19 +40,6 @@ public class KeyStylesTests extends AndroidTestCase { } } - public void testParseCsvInt() { - assertIntArray("Empty string", ""); - assertNumberFormatException("Spaces", " "); - assertNumberFormatException("Non-decimal number", "abc"); - assertIntArray("Single number", "123", 123); - assertIntArray("Negative number", "-123", -123); - assertNumberFormatException("Hexadecimal number", "1b2b"); - assertIntArray("Multiple numbers", "123,456", 123, 456); - assertNumberFormatException("Non-decimal numbers", "123,abc"); - assertNumberFormatException("Escaped comma", "123\\,456"); - assertNumberFormatException("Escaped escape", "123\\\\,456"); - } - public void testParseCsvTextZero() { assertTextArray("Empty string", ""); } diff --git a/tests/src/com/android/inputmethod/keyboard/PopupCharactersParserTests.java b/tests/src/com/android/inputmethod/keyboard/PopupCharactersParserTests.java index 77b62ca5da700a48f8f991b01869db278508d9bb..ae78866e6d0dbcf7c146e487b5bed85aa423ac61 100644 --- a/tests/src/com/android/inputmethod/keyboard/PopupCharactersParserTests.java +++ b/tests/src/com/android/inputmethod/keyboard/PopupCharactersParserTests.java @@ -32,8 +32,6 @@ public class PopupCharactersParserTests extends AndroidTestCase { private int mCodeSettings; private Drawable mIconSettings; - private static final Integer[] DUMMY_CODES = { 0 }; - @Override protected void setUp() { Resources res = getContext().getResources(); @@ -47,7 +45,7 @@ public class PopupCharactersParserTests extends AndroidTestCase { } private void assertParser(String message, String popupSpec, String expectedLabel, - String expectedOutputText, Drawable expectedIcon, Integer ... expectedCodes) { + String expectedOutputText, Drawable expectedIcon, int expectedCode) { String actualLabel = PopupCharactersParser.getLabel(popupSpec); assertEquals(message + ": label:", expectedLabel, actualLabel); @@ -62,28 +60,15 @@ public class PopupCharactersParserTests extends AndroidTestCase { assertNotNull(message + ": icon non-null:", actualIcon); } - int[] actualCodes = PopupCharactersParser.getCodes(mRes, popupSpec); - if (expectedCodes == null) { - assertNull(message + ": codes null:", actualCodes); - return; - } - assertSame(message + ": codes length:", expectedCodes.length, actualCodes.length); - for (int i = 0; i < actualCodes.length; i++) { - assertEquals(message + ": codes value at " + i + ":", (int)expectedCodes[i], - actualCodes[i]); - } + int actualCode = PopupCharactersParser.getCode(mRes, popupSpec); + assertEquals(message + ": codes value:", expectedCode, actualCode); } private void assertParserError(String message, String popupSpec, String expectedLabel, - String expectedOutputText, Drawable expectedIcon, Integer ... expectedCodes) { + String expectedOutputText, Drawable expectedIcon, int expectedCode) { try { - if (expectedCodes.length > 0) { - assertParser(message, popupSpec, expectedLabel, expectedOutputText, expectedIcon, - expectedCodes); - } else { - assertParser(message, popupSpec, expectedLabel, expectedOutputText, expectedIcon, - DUMMY_CODES); - } + assertParser(message, popupSpec, expectedLabel, expectedOutputText, expectedIcon, + expectedCode); fail(message); } catch (PopupCharactersParser.PopupCharactersParserError pcpe) { // success. @@ -91,71 +76,83 @@ public class PopupCharactersParserTests extends AndroidTestCase { } public void testSingleLetter() { - assertParser("Single letter", "a", "a", null, null, (int)'a'); - assertParser("Single escaped bar", "\\|", "|", null, null, (int)'|'); - assertParser("Single escaped escape", "\\\\", "\\", null, null, (int)'\\'); - assertParser("Single comma", ",", ",", null, null, (int)','); - assertParser("Single escaped comma", "\\,", ",", null, null, (int)','); - assertParser("Single escaped letter", "\\a", "a", null, null, (int)'a'); - assertParser("Single at", "@", "@", null, null, (int)'@'); - assertParser("Single escaped at", "\\@", "@", null, null, (int)'@'); - assertParser("Single letter with outputText", "a|abc", "a", "abc", null, DUMMY_CODES); + assertParser("Single letter", "a", "a", null, null, 'a'); + assertParser("Single escaped bar", "\\|", "|", null, null, '|'); + assertParser("Single escaped escape", "\\\\", "\\", null, null, '\\'); + assertParser("Single comma", ",", ",", null, null, ','); + assertParser("Single escaped comma", "\\,", ",", null, null, ','); + assertParser("Single escaped letter", "\\a", "a", null, null, 'a'); + assertParser("Single at", "@", "@", null, null, '@'); + assertParser("Single escaped at", "\\@", "@", null, null, '@'); + assertParser("Single letter with outputText", "a|abc", "a", "abc", null, + Keyboard.CODE_DUMMY); assertParser("Single letter with escaped outputText", "a|a\\|c", "a", "a|c", null, - DUMMY_CODES); - assertParser("Single letter with comma outputText", "a|a,b", "a", "a,b", null, DUMMY_CODES); + Keyboard.CODE_DUMMY); + assertParser("Single letter with comma outputText", "a|a,b", "a", "a,b", null, + Keyboard.CODE_DUMMY); assertParser("Single letter with escaped comma outputText", "a|a\\,b", "a", "a,b", null, - DUMMY_CODES); + Keyboard.CODE_DUMMY); assertParser("Single letter with outputText starts with at", "a|@bc", "a", "@bc", null, - DUMMY_CODES); + Keyboard.CODE_DUMMY); assertParser("Single letter with outputText contains at", "a|a@c", "a", "a@c", null, - DUMMY_CODES); + Keyboard.CODE_DUMMY); assertParser("Single letter with escaped at outputText", "a|\\@bc", "a", "@bc", null, - DUMMY_CODES); + Keyboard.CODE_DUMMY); assertParser("Single escaped escape with outputText", "\\\\|\\\\", "\\", "\\", null, - DUMMY_CODES); - assertParser("Single escaped bar with outputText", "\\||\\|", "|", "|", null, DUMMY_CODES); + Keyboard.CODE_DUMMY); + assertParser("Single escaped bar with outputText", "\\||\\|", "|", "|", null, + Keyboard.CODE_DUMMY); assertParser("Single letter with code", "a|" + CODE_SETTINGS, "a", null, null, mCodeSettings); } public void testLabel() { - assertParser("Simple label", "abc", "abc", "abc", null, DUMMY_CODES); - assertParser("Label with escaped bar", "a\\|c", "a|c", "a|c", null, DUMMY_CODES); - assertParser("Label with escaped escape", "a\\\\c", "a\\c", "a\\c", null, DUMMY_CODES); - assertParser("Label with comma", "a,c", "a,c", "a,c", null, DUMMY_CODES); - assertParser("Label with escaped comma", "a\\,c", "a,c", "a,c", null, DUMMY_CODES); - assertParser("Label starts with at", "@bc", "@bc", "@bc", null, DUMMY_CODES); - assertParser("Label contains at", "a@c", "a@c", "a@c", null, DUMMY_CODES); - assertParser("Label with escaped at", "\\@bc", "@bc", "@bc", null, DUMMY_CODES); - assertParser("Label with escaped letter", "\\abc", "abc", "abc", null, DUMMY_CODES); - assertParser("Label with outputText", "abc|def", "abc", "def", null, DUMMY_CODES); - assertParser("Label with comma and outputText", "a,c|def", "a,c", "def", null, DUMMY_CODES); + assertParser("Simple label", "abc", "abc", "abc", null, Keyboard.CODE_DUMMY); + assertParser("Label with escaped bar", "a\\|c", "a|c", "a|c", null, + Keyboard.CODE_DUMMY); + assertParser("Label with escaped escape", "a\\\\c", "a\\c", "a\\c", null, + Keyboard.CODE_DUMMY); + assertParser("Label with comma", "a,c", "a,c", "a,c", null, Keyboard.CODE_DUMMY); + assertParser("Label with escaped comma", "a\\,c", "a,c", "a,c", null, + Keyboard.CODE_DUMMY); + assertParser("Label starts with at", "@bc", "@bc", "@bc", null, Keyboard.CODE_DUMMY); + assertParser("Label contains at", "a@c", "a@c", "a@c", null, Keyboard.CODE_DUMMY); + assertParser("Label with escaped at", "\\@bc", "@bc", "@bc", null, + Keyboard.CODE_DUMMY); + assertParser("Label with escaped letter", "\\abc", "abc", "abc", null, + Keyboard.CODE_DUMMY); + assertParser("Label with outputText", "abc|def", "abc", "def", null, + Keyboard.CODE_DUMMY); + assertParser("Label with comma and outputText", "a,c|def", "a,c", "def", null, + Keyboard.CODE_DUMMY); assertParser("Escaped comma label with outputText", "a\\,c|def", "a,c", "def", null, - DUMMY_CODES); - assertParser("Escaped label with outputText", "a\\|c|def", "a|c", "def", null, DUMMY_CODES); + Keyboard.CODE_DUMMY); + assertParser("Escaped label with outputText", "a\\|c|def", "a|c", "def", null, + Keyboard.CODE_DUMMY); assertParser("Label with escaped bar outputText", "abc|d\\|f", "abc", "d|f", null, - DUMMY_CODES); + Keyboard.CODE_DUMMY); assertParser("Escaped escape label with outputText", "a\\\\|def", "a\\", "def", null, - DUMMY_CODES); + Keyboard.CODE_DUMMY); assertParser("Label starts with at and outputText", "@bc|def", "@bc", "def", null, - DUMMY_CODES); + Keyboard.CODE_DUMMY); assertParser("Label contains at label and outputText", "a@c|def", "a@c", "def", null, - DUMMY_CODES); + Keyboard.CODE_DUMMY); assertParser("Escaped at label with outputText", "\\@bc|def", "@bc", "def", null, - DUMMY_CODES); - assertParser("Label with comma outputText", "abc|a,b", "abc", "a,b", null, DUMMY_CODES); + Keyboard.CODE_DUMMY); + assertParser("Label with comma outputText", "abc|a,b", "abc", "a,b", null, + Keyboard.CODE_DUMMY); assertParser("Label with escaped comma outputText", "abc|a\\,b", "abc", "a,b", null, - DUMMY_CODES); + Keyboard.CODE_DUMMY); assertParser("Label with outputText starts with at", "abc|@bc", "abc", "@bc", null, - DUMMY_CODES); + Keyboard.CODE_DUMMY); assertParser("Label with outputText contains at", "abc|a@c", "abc", "a@c", null, - DUMMY_CODES); + Keyboard.CODE_DUMMY); assertParser("Label with escaped at outputText", "abc|\\@bc", "abc", "@bc", null, - DUMMY_CODES); + Keyboard.CODE_DUMMY); assertParser("Label with escaped bar outputText", "abc|d\\|f", "abc", "d|f", - null, DUMMY_CODES); + null, Keyboard.CODE_DUMMY); assertParser("Escaped bar label with escaped bar outputText", "a\\|c|d\\|f", "a|c", "d|f", - null, DUMMY_CODES); + null, Keyboard.CODE_DUMMY); assertParser("Label with code", "abc|" + CODE_SETTINGS, "abc", null, null, mCodeSettings); assertParser("Escaped label with code", "a\\|c|" + CODE_SETTINGS, "a|c", null, null, mCodeSettings); @@ -163,13 +160,13 @@ public class PopupCharactersParserTests extends AndroidTestCase { public void testIconAndCode() { assertParser("Icon with outputText", ICON_SETTINGS + "|abc", null, "abc", mIconSettings, - DUMMY_CODES); + Keyboard.CODE_DUMMY); assertParser("Icon with outputText starts with at", ICON_SETTINGS + "|@bc", null, "@bc", - mIconSettings, DUMMY_CODES); + mIconSettings, Keyboard.CODE_DUMMY); assertParser("Icon with outputText contains at", ICON_SETTINGS + "|a@c", null, "a@c", - mIconSettings, DUMMY_CODES); + mIconSettings, Keyboard.CODE_DUMMY); assertParser("Icon with escaped at outputText", ICON_SETTINGS + "|\\@bc", null, "@bc", - mIconSettings, DUMMY_CODES); + mIconSettings, Keyboard.CODE_DUMMY); assertParser("Label starts with at and code", "@bc|" + CODE_SETTINGS, "@bc", null, null, mCodeSettings); assertParser("Label contains at and code", "a@c|" + CODE_SETTINGS, "a@c", null, null, @@ -181,23 +178,28 @@ public class PopupCharactersParserTests extends AndroidTestCase { } public void testFormatError() { - assertParserError("Empty spec", "", null, null, null); - assertParserError("Empty label with outputText", "|a", null, "a", null); + assertParserError("Empty spec", "", null, null, null, Keyboard.CODE_UNSPECIFIED); + assertParserError("Empty label with outputText", "|a", null, "a", null, + Keyboard.CODE_DUMMY); assertParserError("Empty label with code", "|" + CODE_SETTINGS, null, null, null, mCodeSettings); - assertParserError("Empty outputText with label", "a|", "a", null, null); + assertParserError("Empty outputText with label", "a|", "a", null, null, + Keyboard.CODE_UNSPECIFIED); assertParserError("Empty outputText with icon", ICON_SETTINGS + "|", null, null, - mIconSettings); - assertParserError("Empty icon and code", "|", null, null, null); - assertParserError("Icon without code", ICON_SETTINGS, null, null, mIconSettings); - assertParserError("Non existing icon", ICON_NON_EXISTING + "|abc", null, "abc", null); - assertParserError("Non existing code", "abc|" + CODE_NON_EXISTING, "abc", null, null); - assertParserError("Third bar at end", "a|b|", "a", null, null); - assertParserError("Multiple bar", "a|b|c", "a", null, null); + mIconSettings, Keyboard.CODE_UNSPECIFIED); + assertParserError("Empty icon and code", "|", null, null, null, Keyboard.CODE_UNSPECIFIED); + assertParserError("Icon without code", ICON_SETTINGS, null, null, mIconSettings, + Keyboard.CODE_DUMMY); + assertParserError("Non existing icon", ICON_NON_EXISTING + "|abc", null, "abc", null, + Keyboard.CODE_DUMMY); + assertParserError("Non existing code", "abc|" + CODE_NON_EXISTING, "abc", null, null, + Keyboard.CODE_UNSPECIFIED); + assertParserError("Third bar at end", "a|b|", "a", null, null, Keyboard.CODE_UNSPECIFIED); + assertParserError("Multiple bar", "a|b|c", "a", null, null, Keyboard.CODE_UNSPECIFIED); assertParserError("Multiple bar with label and code", "a|" + CODE_SETTINGS + "|c", "a", null, null, mCodeSettings); assertParserError("Multiple bar with icon and outputText", ICON_SETTINGS + "|b|c", null, - null, mIconSettings); + null, mIconSettings, Keyboard.CODE_UNSPECIFIED); assertParserError("Multiple bar with icon and code", ICON_SETTINGS + "|" + CODE_SETTINGS + "|c", null, null, mIconSettings, mCodeSettings);