diff --git a/java/res/layout-large/candidate.xml b/java/res/layout-large/candidate.xml index 74532a1e2..e672707a1 100644 --- a/java/res/layout-large/candidate.xml +++ b/java/res/layout-large/candidate.xml @@ -2,7 +2,7 @@ <!-- /* ** -** Copyright 2010, The Android Open Source Project +** Copyright 2011, The Android Open Source Project ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. diff --git a/java/res/layout-large/candidate_preview.xml b/java/res/layout-large/candidate_preview.xml index 61d5f8e7b..3ef2e6ed4 100644 --- a/java/res/layout-large/candidate_preview.xml +++ b/java/res/layout-large/candidate_preview.xml @@ -2,7 +2,7 @@ <!-- /* ** -** Copyright 2010, The Android Open Source Project +** Copyright 2011, The Android Open Source Project ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. diff --git a/java/res/layout-large/candidates.xml b/java/res/layout-large/candidates.xml index e2ddb84b1..26d6822e9 100644 --- a/java/res/layout-large/candidates.xml +++ b/java/res/layout-large/candidates.xml @@ -2,7 +2,7 @@ <!-- /* ** -** Copyright 2010, The Android Open Source Project +** Copyright 2011, The Android Open Source Project ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. diff --git a/java/res/layout-large/keyboard_popup_honeycomb.xml b/java/res/layout-large/keyboard_popup_honeycomb.xml index 0b8229ca5..49eb936d6 100644 --- a/java/res/layout-large/keyboard_popup_honeycomb.xml +++ b/java/res/layout-large/keyboard_popup_honeycomb.xml @@ -2,7 +2,7 @@ <!-- /* ** -** Copyright 2010, The Android Open Source Project +** Copyright 2011, The Android Open Source Project ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. diff --git a/java/res/values-large-land/dimens.xml b/java/res/values-large-land/dimens.xml index 625dd263c..19b78d3b0 100644 --- a/java/res/values-large-land/dimens.xml +++ b/java/res/values-large-land/dimens.xml @@ -2,7 +2,7 @@ <!-- /* ** -** Copyright 2010, The Android Open Source Project +** Copyright 2011, The Android Open Source Project ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. diff --git a/java/res/values-large/config.xml b/java/res/values-large/config.xml index f075b1b50..fe5aee3cf 100644 --- a/java/res/values-large/config.xml +++ b/java/res/values-large/config.xml @@ -2,7 +2,7 @@ <!-- /* ** -** Copyright 2010, The Android Open Source Project +** Copyright 2011, The Android Open Source Project ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. @@ -19,9 +19,9 @@ --> <resources> - <bool name="config_enable_show_settings_key_option">false</bool> + <bool name="config_enable_show_settings_key_option">true</bool> <bool name="config_enable_show_subtype_settings">false</bool> - <bool name="config_enable_show_voice_key_option">false</bool> + <bool name="config_enable_show_voice_key_option">true</bool> <bool name="config_enable_show_popup_on_keypress_option">false</bool> <bool name="config_enable_show_recorrection_option">false</bool> <bool name="config_enable_quick_fixes_option">false</bool> @@ -29,7 +29,7 @@ <bool name="config_candidate_highlight_font_color_enabled">false</bool> <bool name="config_swipe_down_dismiss_keyboard_enabled">false</bool> <bool name="config_sliding_key_input_enabled">false</bool> - <bool name="config_digit_popup_characters_enabled">false</bool> + <bool name="config_digit_popup_characters_enabled">true</bool> <!-- Whether or not Popup on key press is enabled by default --> <bool name="config_default_popup_preview">false</bool> <bool name="config_default_sound_enabled">true</bool> diff --git a/java/res/values-large/dimens.xml b/java/res/values-large/dimens.xml index 69283202e..47d5e0f36 100644 --- a/java/res/values-large/dimens.xml +++ b/java/res/values-large/dimens.xml @@ -2,7 +2,7 @@ <!-- /* ** -** Copyright 2010, The Android Open Source Project +** Copyright 2011, The Android Open Source Project ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. diff --git a/java/res/values-large/donottranslate.xml b/java/res/values-large/donottranslate.xml index 672dea589..6d94c2811 100644 --- a/java/res/values-large/donottranslate.xml +++ b/java/res/values-large/donottranslate.xml @@ -2,7 +2,7 @@ <!-- /* ** -** Copyright 2010, The Android Open Source Project +** Copyright 2011, The Android Open Source Project ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. @@ -19,5 +19,5 @@ --> <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <!-- Default value of the visibility of the suggestion strip --> - <string name="prefs_suggestion_visibility_default_value" translatable="false">2</string> + <string name="prefs_suggestion_visibility_default_value" translatable="false">1</string> </resources> diff --git a/java/res/values/donottranslate-altchars.xml b/java/res/values/donottranslate-altchars.xml index 518e74af1..e77957578 100644 --- a/java/res/values/donottranslate-altchars.xml +++ b/java/res/values/donottranslate-altchars.xml @@ -47,12 +47,9 @@ <string name="alternates_for_currency_dollar">¢,£,€,¥,₱</string> <string name="alternates_for_currency_euro">¢,£,$,¥,₱</string> <string name="alternates_for_currency_pound">¢,$,€,¥,₱</string> - <string name="alternates_for_mic">"\@drawable/sym_keyboard_settings|\@integer/key_settings,\@drawable/sym_keyboard_mic|\@integer/key_voice"</string> <string name="alternates_for_smiley">":-)|:-) ,:-(|:-( ,;-)|;-) ,:-P|:-P ,=-O|=-O ,:-*|:-* ,:O|:O ,B-)|B-) ,:-$|:-$ ,:-!|:-! ,:-[|:-[ ,O:-)|O:-) ,:-\\\\\\\\|:-\\\\\\\\ ,:\'(|:\'( ,:-D|:-D "</string> - <string name="alternates_for_settings_slash">"\@drawable/sym_keyboard_settings|\@integer/key_settings,/"</string> - <string name="alternates_for_settings_at">"\@drawable/sym_keyboard_settings|\@integer/key_settings,\@"</string> - <string name="alternates_for_settings_comma">"\@drawable/sym_keyboard_settings|\@integer/key_settings,\\,"</string> - <string name="alternates_for_punctuation">":,/,&,(,),-,+,;,\@,\',\",\?,!,\\,"</string> + <string name="alternates_for_punctuation">"\\,,\?,!,:,-,\',\",(,),/,;,+,&,\@"</string> + <string name="alternates_for_web_tab_punctuation">".,\\,,\?,!,:,-,\',\",(,),/,;,+,&,\@"</string> <string name="keylabel_for_popular_domain">".com"</string> <!-- popular web domains for the locale - most popular, displayed on the keyboard --> <string name="alternates_for_popular_domain">".net,.org,.gov,.edu"</string> diff --git a/java/res/xml-large-land/kbd_popup_template.xml b/java/res/xml-large-land/kbd_popup_template.xml index 3caae1a60..2c1d1902e 100644 --- a/java/res/xml-large-land/kbd_popup_template.xml +++ b/java/res/xml-large-land/kbd_popup_template.xml @@ -2,7 +2,7 @@ <!-- /* ** -** Copyright 2010, The Android Open Source Project +** Copyright 2011, The Android Open Source Project ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. @@ -19,7 +19,7 @@ --> <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyWidth="3.5%p" + latin:keyWidth="5%p" latin:horizontalGap="0px" latin:verticalGap="0px" latin:rowHeight="@dimen/popup_key_height" diff --git a/java/res/xml-large/kbd_azerty_rows.xml b/java/res/xml-large/kbd_azerty_rows.xml index 564f77629..d0100e017 100644 --- a/java/res/xml-large/kbd_azerty_rows.xml +++ b/java/res/xml-large/kbd_azerty_rows.xml @@ -2,7 +2,7 @@ <!-- /* ** -** Copyright 2010, The Android Open Source Project +** Copyright 2011, The Android Open Source Project ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. @@ -24,59 +24,59 @@ <include latin:keyboardLayout="@xml/kbd_key_styles" /> <Row - latin:keyWidth="8.272%p" + latin:keyWidth="10%p" + latin:rowEdgeFlags="top" > <Key - latin:keyStyle="tabKeyStyle" - latin:keyLabelOption="alignLeft" - latin:keyWidth="7.949%p" + latin:keyLabel="a" + latin:keyHintIcon="@drawable/keyboard_hint_1" + latin:popupCharacters="@string/alternates_for_a" latin:keyEdgeFlags="left" /> - <Key - latin:keyLabel="a" - latin:popupCharacters="@string/alternates_for_a" /> <Key latin:keyLabel="z" + latin:keyHintIcon="@drawable/keyboard_hint_2" latin:popupCharacters="@string/alternates_for_z" /> <Key latin:keyLabel="e" + latin:keyHintIcon="@drawable/keyboard_hint_3" latin:popupCharacters="@string/alternates_for_e" /> <Key latin:keyLabel="r" + latin:keyHintIcon="@drawable/keyboard_hint_4" latin:popupCharacters="@string/alternates_for_r" /> <Key latin:keyLabel="t" + latin:keyHintIcon="@drawable/keyboard_hint_5" latin:popupCharacters="@string/alternates_for_t" /> <Key latin:keyLabel="y" + latin:keyHintIcon="@drawable/keyboard_hint_6" latin:popupCharacters="@string/alternates_for_y" /> <Key latin:keyLabel="u" + latin:keyHintIcon="@drawable/keyboard_hint_7" latin:popupCharacters="@string/alternates_for_u" /> <Key latin:keyLabel="i" + latin:keyHintIcon="@drawable/keyboard_hint_8" latin:popupCharacters="@string/alternates_for_i" /> <Key latin:keyLabel="o" + latin:keyHintIcon="@drawable/keyboard_hint_9" latin:popupCharacters="@string/alternates_for_o" /> <Key latin:keyLabel="p" - latin:popupCharacters="@string/alternates_for_p" /> - <Key - latin:keyStyle="deleteKeyStyle" - latin:keyWidth="9.331%p" + latin:keyHintIcon="@drawable/keyboard_hint_0" + latin:popupCharacters="@string/alternates_for_p" latin:keyEdgeFlags="right" /> </Row> <Row - latin:keyWidth="8.157%p" + latin:keyWidth="10%p" > - <Key - latin:keyStyle="toSymbolKeyStyle" - latin:keyLabelOption="alignLeft" - latin:keyWidth="10.167%p" - latin:keyEdgeFlags="left" /> <Key latin:keyLabel="q" - latin:popupCharacters="@string/alternates_for_q" /> + latin:popupCharacters="@string/alternates_for_q" + latin:keyEdgeFlags="left" /> <Key latin:keyLabel="s" latin:popupCharacters="@string/alternates_for_s" /> @@ -101,17 +101,13 @@ <Key latin:keyLabel="m" latin:keyEdgeFlags="right" /> - <Key - latin:keyStyle="returnKeyStyle" - latin:keyWidth="8.593%p" - latin:keyEdgeFlags="right" /> </Row> <Row - latin:keyWidth="8.042%p" + latin:keyWidth="10%p" > <Key latin:keyStyle="shiftKeyStyle" - latin:keyWidth="15.192%p" + latin:keyWidth="15%p" latin:keyEdgeFlags="left" /> <Key latin:keyLabel="w" @@ -120,6 +116,7 @@ latin:keyLabel="x" /> <Key latin:keyLabel="c" + latin:popupCharacters="@string/alternates_for_c" /> <Key latin:keyLabel="v" @@ -130,38 +127,10 @@ latin:keyLabel="n" latin:popupCharacters="@string/alternates_for_n" /> <Key - latin:keyLabel="\'" - latin:manualTemporaryUpperCaseCode="58" - latin:keyHintIcon="@drawable/key_hint_colon_holo" - latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_colon_large_holo" - latin:popupCharacters=":" /> - <switch> - <case - latin:mode="email" - > - <Key - latin:keyLabel="," /> - <Key - latin:keyLabel="." /> - </case> - <default> - <Key - latin:keyLabel="," - latin:manualTemporaryUpperCaseCode="33" - latin:keyHintIcon="@drawable/key_hint_exclamation_holo" - latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_exclamation_large_holo" - latin:popupCharacters="!" /> - <Key - latin:keyLabel="." - latin:manualTemporaryUpperCaseCode="63" - latin:keyHintIcon="@drawable/key_hint_question_holo" - latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_question_large_holo" - latin:popupCharacters="\?" /> - </default> - </switch> + latin:keyLabel="\'" /> <Key - latin:keyStyle="shiftKeyStyle" - latin:keyWidth="12.530%p" + latin:keyStyle="deleteKeyStyle" + latin:keyWidth="15%p" latin:keyEdgeFlags="right" /> </Row> <include diff --git a/java/res/xml-large/kbd_key_styles.xml b/java/res/xml-large/kbd_key_styles.xml index fc06d00fc..c2ca3e13a 100644 --- a/java/res/xml-large/kbd_key_styles.xml +++ b/java/res/xml-large/kbd_key_styles.xml @@ -2,7 +2,7 @@ <!-- /* ** -** Copyright 2010, The Android Open Source Project +** Copyright 2011, The Android Open Source Project ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. @@ -21,14 +21,45 @@ <merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > - <!-- Functional key styles --> + <!-- Base key style for the functional key --> <switch> - <case + <case latin:colorScheme="white" > <key-style latin:styleName="functionalKeyStyle" latin:isModifier="true" /> + </case> + <case + latin:colorScheme="black" + > + <key-style + latin:styleName="functionalKeyStyle" /> + </case> + </switch> + <!-- Base key style for the key which may have settings key as popup key --> + <switch> + <case + latin:hasSettingsKey="true" + > + <key-style + latin:styleName="settingsPopupStyle" + latin:parentStyle="functionalKeyStyle" /> + </case> + <!-- latin:hasSettingsKey="false" --> + <default> + <key-style + latin:styleName="settingsPopupStyle" + latin:keyHintIcon="@drawable/hint_popup" + latin:popupCharacters="\@drawable/sym_keyboard_settings|\@integer/key_settings" + latin:parentStyle="functionalKeyStyle" /> + </default> + </switch> + <!-- Functional key styles --> + <switch> + <case + latin:colorScheme="white" + > <key-style latin:styleName="shiftKeyStyle" latin:code="@integer/key_shift" @@ -44,45 +75,64 @@ latin:iconPreview="@drawable/sym_keyboard_feedback_delete" latin:parentStyle="functionalKeyStyle" latin:isRepeatable="true" /> - <key-style - latin:styleName="returnKeyStyle" - 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:code="@integer/key_space" - latin:iconPreview="@drawable/sym_keyboard_feedback_space" /> - <key-style - latin:styleName="nonSpecialBackgroundSpaceKeyStyle" - latin:code="@integer/key_space" - latin:iconPreview="@drawable/sym_keyboard_feedback_space" /> - <key-style - latin:styleName="smileyKeyStyle" - latin:keyLabel=":-)" - latin:keyOutputText=":-) " - latin:keyHintIcon="@drawable/hint_popup_holo" - latin:popupCharacters="@string/alternates_for_smiley" - latin:maxPopupKeyboardColumn="5" /> + <switch> + <!-- When this qwerty keyboard has no voice key but voice key is enabled, then + symbol keyboard will have mic key. That means we should use "?123mic" key + here. --> + <case + latin:voiceKeyEnabled="true" + latin:hasVoiceKey="false" + > + <key-style + latin:styleName="toSymbolKeyStyle" + 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" /> + </case> + <default> + <key-style + latin:styleName="toSymbolKeyStyle" + 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:code="@integer/key_settings" latin:keyIcon="@drawable/sym_keyboard_settings_holo" latin:iconPreview="@drawable/sym_keyboard_feedback_settings" latin:parentStyle="functionalKeyStyle" /> + <key-style + latin:styleName="spaceKeyStyle" + latin:code="@integer/key_space" + latin:keyIcon="@drawable/sym_keyboard_space_holo" + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:parentStyle="functionalKeyStyle" /> + <key-style + latin:styleName="tabKeyStyle" + 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:code="@integer/key_voice" - latin:keyIcon="@drawable/sym_keyboard_voice_holo" + latin:keyIcon="@drawable/sym_keyboard_mic" latin:iconPreview="@drawable/sym_keyboard_feedback_mic" - latin:parentStyle="functionalKeyStyle" /> + latin:parentStyle="settingsPopupStyle" /> + <!-- Note: This key style is not for functional tab key. This is used for the tab key + which is laid out as normal letter key. --> + <key-style + latin:styleName="nonSpecialBackgroundTabKeyStyle" + latin:code="@integer/key_tab" + latin:keyIcon="@drawable/sym_keyboard_tab" + latin:iconPreview="@drawable/sym_keyboard_feedback_tab" /> </case> <case latin:colorScheme="black" > - <key-style - latin:styleName="functionalKeyStyle" /> <key-style latin:styleName="shiftKeyStyle" latin:code="@integer/key_shift" @@ -98,73 +148,170 @@ latin:iconPreview="@drawable/sym_keyboard_feedback_delete" latin:parentStyle="functionalKeyStyle" latin:isRepeatable="true" /> - <key-style - latin:styleName="returnKeyStyle" - 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:code="@integer/key_space" - latin:iconPreview="@drawable/sym_keyboard_feedback_space" /> - <key-style - latin:styleName="nonSpecialBackgroundSpaceKeyStyle" - latin:code="@integer/key_space" - latin:iconPreview="@drawable/sym_keyboard_feedback_space" /> - <key-style - latin:styleName="smileyKeyStyle" - latin:keyLabel=":-)" - latin:keyOutputText=":-) " - latin:keyHintIcon="@drawable/hint_popup_holo" - latin:popupCharacters="@string/alternates_for_smiley" - latin:maxPopupKeyboardColumn="5" /> + <switch> + <!-- When this qwerty keyboard has no voice key but voice key is enabled, then + symbol keyboard will have mic key. That means we should use "?123mic" key + here. --> + <case + latin:voiceKeyEnabled="true" + latin:hasVoiceKey="false" + > + <key-style + latin:styleName="toSymbolKeyStyle" + 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" /> + </case> + <default> + <key-style + latin:styleName="toSymbolKeyStyle" + 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: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: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: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:code="@integer/key_voice" latin:keyIcon="@drawable/sym_bkeyboard_mic" latin:iconPreview="@drawable/sym_keyboard_feedback_mic" - latin:parentStyle="functionalKeyStyle" /> + latin:parentStyle="settingsPopupStyle" /> + <!-- Note: This key style is not for functional tab key. This is used for the tab key + which is laid out as normal letter key. --> + <key-style + latin:styleName="nonSpecialBackgroundTabKeyStyle" + latin:code="@integer/key_tab" + latin:keyIcon="@drawable/sym_bkeyboard_tab" + latin:iconPreview="@drawable/sym_keyboard_feedback_tab" /> </case> </switch> - <key-style - latin:styleName="tabKeyStyle" - latin:code="@integer/key_tab" - latin:keyLabel="@string/label_tab_key" - latin:keyLabelOption="fontNormal" - latin:parentStyle="functionalKeyStyle" /> - <key-style - latin:styleName="toSymbolKeyStyle" - latin:code="@integer/key_switch_alpha_symbol" - latin:keyLabel="@string/label_to_symbol_key" - latin:keyLabelOption="fontNormal" - latin:parentStyle="functionalKeyStyle" /> + <!-- Return key style --> + <switch> + <case + latin:imeAction="actionGo" + > + <key-style + latin:styleName="returnKeyStyle" + latin:code="@integer/key_return" + latin:keyLabel="@string/label_go_key" + latin:parentStyle="functionalKeyStyle" /> + </case> + <case + latin:imeAction="actionNext" + > + <key-style + latin:styleName="returnKeyStyle" + latin:code="@integer/key_return" + latin:keyLabel="@string/label_next_key" + latin:parentStyle="functionalKeyStyle" /> + </case> + <case + latin:imeAction="actionDone" + > + <key-style + latin:styleName="returnKeyStyle" + latin:code="@integer/key_return" + latin:keyLabel="@string/label_done_key" + latin:parentStyle="functionalKeyStyle" /> + </case> + <case + latin:imeAction="actionSend" + > + <key-style + latin:styleName="returnKeyStyle" + latin:code="@integer/key_return" + latin:keyLabel="@string/label_send_key" + latin:parentStyle="functionalKeyStyle" /> + </case> + <case + latin:imeAction="actionSearch" + > + <switch> + <case + latin:colorScheme="white" + > + <key-style + latin:styleName="returnKeyStyle" + latin:code="@integer/key_return" + latin:keyIcon="@drawable/sym_keyboard_search" + latin:iconPreview="@drawable/sym_keyboard_feedback_search" + latin:parentStyle="functionalKeyStyle" /> + </case> + <case + latin:colorScheme="black" + > + <key-style + latin:styleName="returnKeyStyle" + latin:code="@integer/key_return" + latin:keyIcon="@drawable/sym_bkeyboard_search" + latin:iconPreview="@drawable/sym_keyboard_feedback_search" + latin:parentStyle="functionalKeyStyle" /> + </case> + </switch> + </case> + <default> + <switch> + <case + latin:colorScheme="white" + > + <key-style + latin:styleName="returnKeyStyle" + latin:code="@integer/key_return" + latin:keyIcon="@drawable/sym_keyboard_return" + latin:iconPreview="@drawable/sym_keyboard_feedback_return" + latin:parentStyle="functionalKeyStyle" /> + </case> + <case + latin:colorScheme="black" + > + <key-style + latin:styleName="returnKeyStyle" + latin:code="@integer/key_return" + latin:keyIcon="@drawable/sym_bkeyboard_return" + latin:iconPreview="@drawable/sym_keyboard_feedback_return" + latin:parentStyle="functionalKeyStyle" /> + </case> + </switch> + </default> + </switch> <key-style latin:styleName="toAlphaKeyStyle" 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:styleName="altKeyStyle" latin:code="@integer/key_shift" - latin:keyLabel="@string/label_more_key" - latin:keyLabelOption="fontNormal" + latin:keyLabel="@string/label_alt_key" latin:parentStyle="functionalKeyStyle" latin:isSticky="true" /> <key-style - latin:styleName="comKeyStyle" - latin:keyLabel="@string/keylabel_for_popular_domain" - latin:keyLabelOption="fontNormal" - latin:keyOutputText="@string/keylabel_for_popular_domain" + latin:styleName="smileyKeyStyle" + latin:keyLabel=":-)" + latin:keyOutputText=":-) " latin:keyHintIcon="@drawable/hint_popup_holo" - latin:popupCharacters="@string/alternates_for_popular_domain" /> + latin:popupCharacters="@string/alternates_for_smiley" + latin:maxPopupKeyboardColumn="5" + latin:parentStyle="functionalKeyStyle" /> <switch> <case latin:passwordInput="true" @@ -172,12 +319,20 @@ <key-style latin:styleName="nonPasswordSymbolKeyStyle" latin:enabled="false" /> + <key-style + latin:styleName="nonPasswordFunctionalKeyStyle" + latin:enabled="false" + latin:parentStyle="functionalKeyStyle" /> </case> <!-- latin:passwordInput="false" --> <default> <key-style latin:styleName="nonPasswordSymbolKeyStyle" latin:enabled="true" /> + <key-style + latin:styleName="nonPasswordFunctionalKeyStyle" + latin:enabled="true" + latin:parentStyle="functionalKeyStyle" /> </default> </switch> </merge> diff --git a/java/res/xml-large/kbd_number.xml b/java/res/xml-large/kbd_number.xml index 012b75115..9b8d4b31d 100644 --- a/java/res/xml-large/kbd_number.xml +++ b/java/res/xml-large/kbd_number.xml @@ -2,7 +2,7 @@ <!-- /* ** -** Copyright 2010, The Android Open Source Project +** Copyright 2011, The Android Open Source Project ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. @@ -23,7 +23,7 @@ latin:keyboardHeight="@dimen/keyboardHeight" latin:maxKeyboardHeight="50%p" latin:rowHeight="25%p" - latin:keyWidth="11.949%p" + latin:keyWidth="26.67%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="@dimen/key_bottom_gap" latin:popupKeyboardTemplate="@xml/kbd_popup_template" @@ -33,197 +33,62 @@ latin:keyboardLayout="@xml/kbd_key_styles" /> <include latin:keyboardLayout="@xml/kbd_numkey_styles" /> - <switch> - <case - latin:passwordInput="true" - > - <!-- This row is intentionally not marked as a top row --> - <Row> - <Spacer - latin:horizontalGap="32.076%p" /> - <Key - latin:keyStyle="num1KeyStyle" /> - <Key - latin:keyStyle="num2KeyStyle" /> - <Key - latin:keyStyle="num3KeyStyle" /> - <Spacer - latin:horizontalGap="22.272%p" /> - <Key - latin:keyStyle="deleteKeyStyle" - latin:keyWidth="9.804%p" - latin:keyEdgeFlags="right" /> - </Row> - <Row> - <Spacer - latin:horizontalGap="32.076%p" /> - <Key - latin:keyStyle="num4KeyStyle" /> - <Key - latin:keyStyle="num5KeyStyle" /> - <Key - latin:keyStyle="num6KeyStyle" /> - <Spacer - latin:horizontalGap="17.371%p" /> - <Key - latin:keyStyle="returnKeyStyle" - latin:keyWidth="14.706%p" - latin:keyEdgeFlags="right" /> - </Row> - <Row> - <Spacer - latin:horizontalGap="32.076%p" /> - <Key - latin:keyStyle="num7KeyStyle" /> - <Key - latin:keyStyle="num8KeyStyle" /> - <Key - latin:keyStyle="num9KeyStyle" /> - <!-- There is an empty area below the "Enter" key and right of the "9" key. To - ignore the touch event on the area, "9" is intentionally not marked as a right - edge key. --> - </Row> - <!-- This row is intentionally not marked as a bottom row --> - <Row> - <Spacer - latin:horizontalGap="44.026%p" /> - <Key - latin:keyStyle="num0KeyStyle" /> - <!-- There is an empty area below the "Enter" key and right of the "#" key. To - ignore the touch event on the area, "#" is intentionally not marked as a right - edge key. --> - </Row> - </case> - <!-- latin:passwordInput="false" --> - <default> - <!-- This row is intentionally not marked as a top row --> - <Row> - <Key - latin:keyStyle="tabKeyStyle" - latin:keyLabelOption="alignLeft" - latin:keyEdgeFlags="left" /> - <Spacer - latin:horizontalGap="4.458%p" /> - <Key - latin:keyLabel="-" - latin:keyWidth="8.042%p" /> - <Key - latin:keyLabel="+" - latin:keyWidth="8.042%p" /> - <Key - latin:keyLabel="." - latin:keyWidth="8.042%p" /> - <Spacer - latin:horizontalGap="4.458%p" /> - <Key - latin:keyLabel="1" /> - <Key - latin:keyLabel="2" /> - <Key - latin:keyLabel="3" /> - <Spacer - latin:horizontalGap="9.360%p" /> - <Key - latin:keyStyle="deleteKeyStyle" - latin:keyWidth="9.804%p" - latin:keyEdgeFlags="right" /> - </Row> - <Row> - <Spacer - latin:horizontalGap="16.406%p" /> - <Key - latin:keyLabel="*" - latin:keyWidth="8.042%p" /> - <Key - latin:keyLabel="/" - latin:keyWidth="8.042%p" /> - <Key - latin:keyLabel="," - latin:keyWidth="8.042%p" /> - <Spacer - latin:horizontalGap="4.458%p" /> - <Key - latin:keyLabel="4" /> - <Key - latin:keyLabel="5" /> - <Key - latin:keyLabel="6" /> - <Spacer - latin:horizontalGap="4.458%p" /> - <Key - latin:keyStyle="returnKeyStyle" - latin:keyWidth="14.706%p" - latin:keyEdgeFlags="right" /> - </Row> - <Row> - <!-- There is an empty area below the "More" key and left of the "(" key. To - ignore the touch event on the area, "(" is intentionally not marked as a left - edge key. --> - <Spacer - latin:horizontalGap="16.406%p" /> - <Key - latin:keyLabel="(" - latin:keyWidth="8.042%p" /> - <Key - latin:keyLabel=")" - latin:keyWidth="8.042%p" /> - <Key - latin:keyLabel="=" - latin:keyWidth="8.042%p" /> - <Spacer - latin:horizontalGap="4.458%p" /> - <Key - latin:keyLabel="7" /> - <Key - latin:keyLabel="8" /> - <Key - latin:keyLabel="9" /> - <!-- There is an empty area below the "Enter" key and right of the "9" key. To - ignore the touch event on the area, "9" is intentionally not marked as a right - edge key. --> - </Row> - <!-- This row is intentionally not marked as a bottom row --> - <Row> - <!-- There is an empty area below the "More" key and left of the "space" key. To - ignore the touch event on the area, "space" is intentionally not marked as a - left edge key. --> - <Spacer - latin:horizontalGap="8.362%p" /> - <switch> - <case latin:hasSettingsKey="true"> - <Key - latin:keyStyle="settingsKeyStyle" - latin:keyWidth="8.042%p" /> - </case> - <default> - <Spacer - latin:horizontalGap="8.042%p" /> - </default> - </switch> - <Key - latin:keyStyle="nonSpecialBackgroundSpaceKeyStyle" - latin:keyWidth="24.127%p" /> - <Spacer - latin:horizontalGap="4.458%p" /> - <Key - latin:keyLabel="*" /> - <Key - latin:keyLabel="0" /> - <Key - latin:keyLabel="#" /> - <switch> - <case - latin:voiceKeyEnabled="true" - > - <Key - latin:keyStyle="micKeyStyle" - latin:keyWidth="8.042%p" /> - </case> - </switch> - <!-- There is an empty area below the "Enter" key and right of the "#" key. To - ignore the touch event on the area, "#" is intentionally not marked as a right - edge key. --> - </Row> - </default> - </switch> + <Row + latin:rowEdgeFlags="top" + > + <Key + latin:keyLabel="1" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="2" /> + <Key + latin:keyLabel="3" /> + <Key + latin:keyLabel="-" + latin:keyStyle="functionalKeyStyle" + latin:keyWidth="20%p" + latin:keyEdgeFlags="right" /> + </Row> + <Row> + <Key + latin:keyLabel="4" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="5" /> + <Key + latin:keyLabel="6" /> + <Key + latin:keyLabel="," + latin:keyStyle="functionalKeyStyle" + latin:keyWidth="20%p" + latin:keyEdgeFlags="right" /> + </Row> + <Row> + <Key + latin:keyLabel="7" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="8" /> + <Key + latin:keyLabel="9" /> + <Key + latin:keyStyle="deleteKeyStyle" + latin:keyWidth="20%p" + latin:keyEdgeFlags="right" /> + </Row> + <Row + latin:rowEdgeFlags="bottom" + > + <Key + latin:keyStyle="numSpaceKeyStyle" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="0" /> + <Key + latin:keyLabel="." /> + <Key + latin:keyStyle="returnKeyStyle" + latin:keyWidth="20%p" + latin:keyEdgeFlags="right" /> + </Row> </Keyboard> diff --git a/java/res/xml-large/kbd_numkey_styles.xml b/java/res/xml-large/kbd_numkey_styles.xml index e27db94c7..72efbbcba 100644 --- a/java/res/xml-large/kbd_numkey_styles.xml +++ b/java/res/xml-large/kbd_numkey_styles.xml @@ -2,7 +2,7 @@ <!-- /* ** -** Copyright 2010, The Android Open Source Project +** Copyright 2011, The Android Open Source Project ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. @@ -81,7 +81,8 @@ <key-style latin:styleName="numSpaceKeyStyle" latin:code="@integer/key_space" - latin:iconPreview="@drawable/sym_keyboard_feedback_space" /> + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyIcon="@drawable/sym_keyboard_space" /> </case> <case latin:colorScheme="black" @@ -142,7 +143,8 @@ <key-style latin:styleName="numSpaceKeyStyle" latin:code="@integer/key_space" - latin:iconPreview="@drawable/sym_keyboard_feedback_space" /> + latin:iconPreview="@drawable/sym_keyboard_feedback_space" + latin:keyIcon="@drawable/sym_keyboard_space" /> </case> </switch> </merge> diff --git a/java/res/xml-large/kbd_phone.xml b/java/res/xml-large/kbd_phone.xml index 9122176a9..8dd1ab760 100644 --- a/java/res/xml-large/kbd_phone.xml +++ b/java/res/xml-large/kbd_phone.xml @@ -2,7 +2,7 @@ <!-- /* ** -** Copyright 2010, The Android Open Source Project +** Copyright 2011, The Android Open Source Project ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. @@ -23,7 +23,7 @@ latin:keyboardHeight="@dimen/keyboardHeight" latin:maxKeyboardHeight="50%p" latin:rowHeight="25%p" - latin:keyWidth="11.949%p" + latin:keyWidth="26.67%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="@dimen/key_bottom_gap" latin:popupKeyboardTemplate="@xml/kbd_popup_template" @@ -33,134 +33,62 @@ latin:keyboardLayout="@xml/kbd_key_styles" /> <include latin:keyboardLayout="@xml/kbd_numkey_styles" /> - <!-- This row is intentionally not marked as a top row --> - <Row> + <Row + latin:rowEdgeFlags="top" + > <Key - latin:keyStyle="tabKeyStyle" - latin:keyLabelOption="alignLeft" + latin:keyStyle="num1KeyStyle" latin:keyEdgeFlags="left" /> - <!-- To match one character label size with "Tab", I placed spaces around the char '-' - and '+'. --> - <Spacer - latin:horizontalGap="8.470%p" /> - <Key - latin:code="45" - latin:keyLabel=" - " - latin:keyWidth="8.042%p" /> - <Key - latin:code="43" - latin:keyLabel=" + " - latin:keyWidth="8.042%p" /> - <Spacer - latin:horizontalGap="8.479%p" /> - <Key - latin:keyStyle="num1KeyStyle" /> <Key latin:keyStyle="num2KeyStyle" /> <Key latin:keyStyle="num3KeyStyle" /> - <Spacer - latin:horizontalGap="9.360%p" /> <Key - latin:keyStyle="deleteKeyStyle" - latin:keyWidth="9.804%p" + latin:keyLabel="-" + latin:keyStyle="functionalKeyStyle" + latin:keyWidth="20%p" latin:keyEdgeFlags="right" /> </Row> <Row> <Key - latin:keyStyle="moreKeyStyle" + latin:keyStyle="num4KeyStyle" latin:keyEdgeFlags="left" /> - <!-- To match one character label size with "More", I placed spaces around the char ',' - and '.'. --> - <Spacer - latin:horizontalGap="8.470%p" /> - <Key - latin:code="44" - latin:keyLabel=" , " - latin:keyWidth="8.042%p" /> - <Key - latin:code="46" - latin:keyLabel=" . " - latin:keyWidth="8.042%p" /> - <Spacer - latin:horizontalGap="8.479%p" /> - <Key - latin:keyStyle="num4KeyStyle" /> <Key latin:keyStyle="num5KeyStyle" /> <Key latin:keyStyle="num6KeyStyle" /> - <Spacer - latin:horizontalGap="4.458%p" /> <Key - latin:keyStyle="returnKeyStyle" - latin:keyWidth="14.706%p" + latin:keyLabel="." + latin:keyStyle="functionalKeyStyle" + latin:keyWidth="20%p" latin:keyEdgeFlags="right" /> </Row> <Row> - <!-- To match one character label size with "More", I placed spaces around the char '(' - and ')'. --> - <!-- There is an empty area bellow the "More" key and left of the "(" key. To ignore - the touch event on the area, "(" is intentionally not marked as a left edge key. --> - <Spacer - latin:horizontalGap="20.427%p" /> <Key - latin:code="40" - latin:keyLabel=" ( " - latin:keyWidth="8.042%p" /> - <Key - latin:code="41" - latin:keyLabel=" ) " - latin:keyWidth="8.042%p" /> - <Spacer - latin:horizontalGap="8.479%p" /> - <Key - latin:keyStyle="num7KeyStyle" /> + latin:keyStyle="num7KeyStyle" + latin:keyEdgeFlags="left" /> <Key latin:keyStyle="num8KeyStyle" /> <Key latin:keyStyle="num9KeyStyle" /> - <!-- There is an empty area bellow the "Enter" key and right of the "9" key. To ignore - the touch event on the area, "9" is intentionally not marked as a right edge key. --> - </Row> - <!-- This row is intentionally not marked as a bottom row --> - <Row> - <!-- There is an empty area bellow the "More" key and left of the "space" key. To ignore - the touch event on the area, "space" is intentionally not marked as a left edge key. --> - <Spacer - latin:horizontalGap="12.340%p" /> - <switch> - <case latin:hasSettingsKey="true"> - <Key - latin:keyStyle="settingsKeyStyle" - latin:keyWidth="8.042%p" /> - </case> - <default> - <Spacer - latin:horizontalGap="8.042%p" /> - </default> - </switch> <Key - latin:keyStyle="nonSpecialBackgroundSpaceKeyStyle" - latin:keyWidth="16.084%p" /> - <Spacer - latin:horizontalGap="8.479%p" /> + latin:keyStyle="deleteKeyStyle" + latin:keyWidth="20%p" + latin:keyEdgeFlags="right" /> + </Row> + <Row + latin:rowEdgeFlags="bottom" + > <Key - latin:keyStyle="numStarKeyStyle" /> + latin:keyStyle="numAltKeyStyle" + latin:keyEdgeFlags="left" /> <Key latin:keyStyle="num0KeyStyle" /> <Key - latin:keyStyle="numPoundKeyStyle" /> - <switch> - <case - latin:voiceKeyEnabled="true" - > - <Key - latin:keyStyle="micKeyStyle" - latin:keyWidth="8.042%p" /> - </case> - </switch> - <!-- There is an empty area bellow the "Enter" key and right of the "#" key. To ignore - the touch event on the area, "#" is intentionally not marked as a right edge key. --> + latin:keyStyle="numSpaceKeyStyle" /> + <Key + latin:keyStyle="returnKeyStyle" + latin:keyWidth="20%p" + latin:keyEdgeFlags="right" /> </Row> </Keyboard> diff --git a/java/res/xml-large/kbd_phone_symbols.xml b/java/res/xml-large/kbd_phone_symbols.xml index 055c14867..d355c8eac 100644 --- a/java/res/xml-large/kbd_phone_symbols.xml +++ b/java/res/xml-large/kbd_phone_symbols.xml @@ -2,7 +2,7 @@ <!-- /* ** -** Copyright 2010, The Android Open Source Project +** Copyright 2011, The Android Open Source Project ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. @@ -23,7 +23,7 @@ latin:keyboardHeight="@dimen/keyboardHeight" latin:maxKeyboardHeight="50%p" latin:rowHeight="25%p" - latin:keyWidth="11.949%p" + latin:keyWidth="26.67%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="@dimen/key_bottom_gap" latin:popupKeyboardTemplate="@xml/kbd_popup_template" @@ -33,146 +33,68 @@ latin:keyboardLayout="@xml/kbd_key_styles" /> <include latin:keyboardLayout="@xml/kbd_numkey_styles" /> - <!-- This row is intentionally not marked as a top row --> - <Row> + <Row + latin:rowEdgeFlags="top" + > <Key - latin:keyStyle="tabKeyStyle" - latin:keyLabelOption="alignLeft" + latin:keyLabel="(" latin:keyEdgeFlags="left" /> - <Spacer - latin:horizontalGap="4.458%p" /> <Key - latin:code="45" - latin:keyLabel=" - " - latin:keyWidth="8.042%p" /> + latin:keyLabel="/" /> <Key - latin:code="43" - latin:keyLabel=" + " - latin:keyWidth="8.042%p" /> + latin:keyLabel=")" /> <Key - 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 - char '-' and '+'. --> - <Spacer - latin:horizontalGap="4.458%p" /> - <Key - latin:keyStyle="num1KeyStyle" /> - <Key - latin:keyStyle="num2KeyStyle" /> - <Key - latin:keyStyle="num3KeyStyle" /> - <Spacer - latin:horizontalGap="9.360%p" /> - <Key - latin:keyStyle="deleteKeyStyle" - latin:keyWidth="9.804%p" + latin:keyLabel="-" + latin:keyStyle="functionalKeyStyle" + latin:keyWidth="20%p" latin:keyEdgeFlags="right" /> </Row> <Row> <Key - latin:keyStyle="moreKeyStyle" + latin:keyLabel="N" latin:keyEdgeFlags="left" /> - <Spacer - latin:horizontalGap="4.458%p" /> + <!-- Pause is a comma. Check PhoneNumberUtils.java to see if this + has changed. --> <Key latin:code="44" - latin:keyLabel=" , " - latin:keyWidth="8.042%p" /> + latin:keyLabel="Pause" /> <Key - latin:code="46" - latin:keyLabel=" . " - latin:keyWidth="8.042%p" /> + latin:keyLabel="," /> + <Key + latin:keyLabel="." + latin:keyStyle="functionalKeyStyle" + latin:keyWidth="20%p" + latin:keyEdgeFlags="right" /> + </Row> + <Row> + <Key + latin:keyStyle="numStarKeyStyle" + latin:keyEdgeFlags="left" /> + <!-- Wait is a semicolon. --> <Key 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 - char ',' and '.'. --> - <Spacer - latin:horizontalGap="4.458%p" /> - <Key - latin:keyStyle="num4KeyStyle" /> - <Key - latin:keyStyle="num5KeyStyle" /> - <Key - latin:keyStyle="num6KeyStyle" /> - <Spacer - latin:horizontalGap="4.458%p" /> - <Key - latin:keyStyle="returnKeyStyle" - latin:keyWidth="14.706%p" - latin:keyEdgeFlags="right" /> - </Row> - <Row> - <!-- To match one character label size with "More" and etc., I placed spaces around the - char 'N', '(' and ')'. --> - <!-- There is an empty area bellow the "More" key and left of the "(" key. To ignore - the touch event on the area, "(" is intentionally not marked as a left edge key. --> - <Spacer - latin:horizontalGap="16.406%p" /> - <Key - latin:code="40" - latin:keyLabel=" ( " - latin:keyWidth="8.042%p" /> - <Key - latin:code="41" - latin:keyLabel=" ) " - latin:keyWidth="8.042%p" /> - <Key - latin:code="78" - latin:keyLabel=" N " - latin:keyWidth="8.042%p" /> - <Spacer - latin:horizontalGap="4.458%p" /> - <Key - latin:keyStyle="num7KeyStyle" /> - <Key - latin:keyStyle="num8KeyStyle" /> - <Key - latin:keyStyle="num9KeyStyle" /> - <!-- There is an empty area bellow the "Enter" key and right of the "9" key. To ignore - the touch event on the area, "9" is intentionally not marked as a right edge key. --> - </Row> - <!-- This row is intentionally not marked as a bottom row --> - <Row> - <!-- There is an empty area bellow the "More" key and left of the "space" key. To ignore - the touch event on the area, "space" is intentionally not marked as a left edge key. --> - <Spacer - latin:horizontalGap="8.362%p" /> - <switch> - <case latin:hasSettingsKey="true"> - <Key - latin:keyStyle="settingsKeyStyle" - latin:keyWidth="8.042%p" /> - </case> - <default> - <Spacer - latin:horizontalGap="8.042%p" /> - </default> - </switch> - <Key - latin:keyStyle="nonSpecialBackgroundSpaceKeyStyle" - latin:keyWidth="24.127%p" /> - <Spacer - latin:horizontalGap="4.458%p" /> - <Key - latin:keyStyle="numStarKeyStyle" /> - <Key - latin:keyStyle="num0KeyStyle" /> + latin:keyLabel="Wait" /> <Key latin:keyStyle="numPoundKeyStyle" /> - <switch> - <case - latin:voiceKeyEnabled="true" - > - <Key - latin:keyStyle="micKeyStyle" - latin:keyWidth="8.042%p" /> - </case> - </switch> - <!-- There is an empty area bellow the "Enter" key and right of the "#" key. To ignore - the touch event on the area, "#" is intentionally not marked as a right edge key. --> + <Key + latin:keyStyle="deleteKeyStyle" + latin:keyWidth="20%p" + latin:keyEdgeFlags="right" /> + </Row> + <Row + latin:rowEdgeFlags="bottom" + > + <Key + latin:code="@integer/key_switch_alpha_symbol" + latin:keyLabel="@string/label_to_numeric_key" + latin:keyEdgeFlags="left" /> + <Key + latin:keyLabel="+" /> + <Key + latin:keyStyle="numSpaceKeyStyle" /> + <Key + latin:keyStyle="returnKeyStyle" + latin:keyWidth="20%p" + latin:keyEdgeFlags="right" /> </Row> </Keyboard> diff --git a/java/res/xml-large/kbd_popup_template.xml b/java/res/xml-large/kbd_popup_template.xml index 7d39d1a3a..fff2659be 100644 --- a/java/res/xml-large/kbd_popup_template.xml +++ b/java/res/xml-large/kbd_popup_template.xml @@ -2,7 +2,7 @@ <!-- /* ** -** Copyright 2008, The Android Open Source Project +** Copyright 2011, The Android Open Source Project ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. @@ -19,8 +19,8 @@ --> <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyWidth="5.0%p" - latin:horizontalGap="0px" + latin:keyWidth="8%p" + latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="0px" latin:rowHeight="@dimen/popup_key_height" > diff --git a/java/res/xml-large/kbd_qwerty.xml b/java/res/xml-large/kbd_qwerty.xml index 1c8d51ffe..9541e13fd 100644 --- a/java/res/xml-large/kbd_qwerty.xml +++ b/java/res/xml-large/kbd_qwerty.xml @@ -2,7 +2,7 @@ <!-- /* ** -** Copyright 2010, The Android Open Source Project +** Copyright 2011, The Android Open Source Project ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. @@ -23,6 +23,7 @@ latin:keyboardHeight="@dimen/keyboardHeight" latin:maxKeyboardHeight="50%p" latin:rowHeight="25%p" + latin:keyWidth="10%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="@dimen/key_bottom_gap" latin:popupKeyboardTemplate="@xml/kbd_popup_template" diff --git a/java/res/xml-large/kbd_qwerty_row1.xml b/java/res/xml-large/kbd_qwerty_row1.xml index f5135591c..df9712535 100644 --- a/java/res/xml-large/kbd_qwerty_row1.xml +++ b/java/res/xml-large/kbd_qwerty_row1.xml @@ -2,7 +2,7 @@ <!-- /* ** -** Copyright 2010, The Android Open Source Project +** Copyright 2011, The Android Open Source Project ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. @@ -21,48 +21,51 @@ <merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > - <!-- This row is intentionally not marked as a top row --> <Row - latin:keyWidth="8.272%p" + latin:keyWidth="10%p" + latin:rowEdgeFlags="top" > <Key - latin:keyStyle="tabKeyStyle" - latin:keyLabelOption="alignLeft" - latin:keyWidth="7.949%p" + latin:keyLabel="q" + latin:keyHintIcon="@drawable/keyboard_hint_1" + latin:popupCharacters="@string/alternates_for_q" latin:keyEdgeFlags="left" /> - <Key - latin:keyLabel="q" - latin:popupCharacters="@string/alternates_for_q" /> <Key latin:keyLabel="w" + latin:keyHintIcon="@drawable/keyboard_hint_2" latin:popupCharacters="@string/alternates_for_w" /> <Key latin:keyLabel="e" + latin:keyHintIcon="@drawable/keyboard_hint_3" latin:popupCharacters="@string/alternates_for_e" /> <Key latin:keyLabel="r" + latin:keyHintIcon="@drawable/keyboard_hint_4" latin:popupCharacters="@string/alternates_for_r" /> <Key latin:keyLabel="t" + latin:keyHintIcon="@drawable/keyboard_hint_5" latin:popupCharacters="@string/alternates_for_t" /> <Key latin:keyLabel="y" + latin:keyHintIcon="@drawable/keyboard_hint_6" latin:popupCharacters="@string/alternates_for_y" /> <Key latin:keyLabel="u" + latin:keyHintIcon="@drawable/keyboard_hint_7" latin:popupCharacters="@string/alternates_for_u" /> <Key latin:keyLabel="i" + latin:keyHintIcon="@drawable/keyboard_hint_8" latin:popupCharacters="@string/alternates_for_i" /> <Key latin:keyLabel="o" + latin:keyHintIcon="@drawable/keyboard_hint_9" latin:popupCharacters="@string/alternates_for_o" /> <Key latin:keyLabel="p" - latin:popupCharacters="@string/alternates_for_p" /> - <Key - latin:keyStyle="deleteKeyStyle" - latin:keyWidth="9.331%p" + latin:keyHintIcon="@drawable/keyboard_hint_0" + latin:popupCharacters="@string/alternates_for_p" latin:keyEdgeFlags="right" /> </Row> </merge> diff --git a/java/res/xml-large/kbd_qwerty_row2.xml b/java/res/xml-large/kbd_qwerty_row2.xml index 02bd0a6c9..07dd66f6b 100644 --- a/java/res/xml-large/kbd_qwerty_row2.xml +++ b/java/res/xml-large/kbd_qwerty_row2.xml @@ -2,7 +2,7 @@ <!-- /* ** -** Copyright 2010, The Android Open Source Project +** Copyright 2011, The Android Open Source Project ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. @@ -22,16 +22,14 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Row - latin:keyWidth="8.157%p" + latin:keyWidth="10%p" > - <Key - latin:keyStyle="toSymbolKeyStyle" - latin:keyLabelOption="alignLeft" - latin:keyWidth="11.167%p" - latin:keyEdgeFlags="left" /> + <Spacer + latin:horizontalGap="5%p" /> <Key latin:keyLabel="a" - latin:popupCharacters="@string/alternates_for_a" /> + latin:popupCharacters="@string/alternates_for_a" + latin:keyEdgeFlags="left" /> <Key latin:keyLabel="s" latin:popupCharacters="@string/alternates_for_s" /> @@ -52,10 +50,7 @@ latin:popupCharacters="@string/alternates_for_k" /> <Key latin:keyLabel="l" - latin:popupCharacters="@string/alternates_for_l" /> - <Key - latin:keyStyle="returnKeyStyle" - latin:keyWidth="15.750%p" + latin:popupCharacters="@string/alternates_for_l" latin:keyEdgeFlags="right" /> </Row> </merge> diff --git a/java/res/xml-large/kbd_qwerty_row3.xml b/java/res/xml-large/kbd_qwerty_row3.xml index b7e9bcff9..c8e78d440 100644 --- a/java/res/xml-large/kbd_qwerty_row3.xml +++ b/java/res/xml-large/kbd_qwerty_row3.xml @@ -2,7 +2,7 @@ <!-- /* ** -** Copyright 2010, The Android Open Source Project +** Copyright 2011, The Android Open Source Project ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. @@ -22,11 +22,11 @@ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > <Row - latin:keyWidth="8.042%p" + latin:keyWidth="10%p" > <Key latin:keyStyle="shiftKeyStyle" - latin:keyWidth="15.192%p" + latin:keyWidth="15%p" latin:keyEdgeFlags="left" /> <Key latin:keyLabel="z" @@ -46,33 +46,9 @@ latin:popupCharacters="@string/alternates_for_n" /> <Key latin:keyLabel="m" /> - <switch> - <case - latin:mode="email" - > - <Key - latin:keyLabel="," /> - <Key - latin:keyLabel="." /> - </case> - <default> - <Key - latin:keyLabel="," - latin:manualTemporaryUpperCaseCode="33" - latin:keyHintIcon="@drawable/key_hint_exclamation_holo" - latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_exclamation_large_holo" - latin:popupCharacters="!" /> - <Key - latin:keyLabel="." - latin:manualTemporaryUpperCaseCode="63" - latin:keyHintIcon="@drawable/key_hint_question_holo" - latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_question_large_holo" - latin:popupCharacters="\?" /> - </default> - </switch> <Key - latin:keyStyle="shiftKeyStyle" - latin:keyWidth="12.530%p" + latin:keyStyle="deleteKeyStyle" + latin:keyWidth="15%p" latin:keyEdgeFlags="right" /> </Row> </merge> diff --git a/java/res/xml-large/kbd_qwerty_row4.xml b/java/res/xml-large/kbd_qwerty_row4.xml index f36b61fc7..afe12e89b 100644 --- a/java/res/xml-large/kbd_qwerty_row4.xml +++ b/java/res/xml-large/kbd_qwerty_row4.xml @@ -2,7 +2,7 @@ <!-- /* ** -** Copyright 2010, The Android Open Source Project +** Copyright 2011, The Android Open Source Project ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. @@ -21,237 +21,116 @@ <merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > - <!-- This row is intentionally not marked as a bottom row --> <Row - latin:keyWidth="8.042%p" + latin:keyWidth="10%p" + latin:rowEdgeFlags="bottom" > - <Spacer - latin:horizontalGap="8.362%p" /> <switch> - <case latin:hasSettingsKey="true"> + <case + latin:hasSettingsKey="false" + > + <Key + latin:keyStyle="toSymbolKeyStyle" + latin:keyWidth="20%p" + latin:keyEdgeFlags="left" /> + <include + latin:keyboardLayout="@xml/kbd_qwerty_f1" /> + <Key + latin:keyStyle="spaceKeyStyle" + latin:keyWidth="40%p" /> + <switch> + <case + latin:mode="web" + > + <Key + latin:keyHintIcon="@drawable/hint_popup" + latin:popupCharacters="@string/alternates_for_web_tab_punctuation" + latin:maxPopupKeyboardColumn="8" + latin:keyStyle="tabKeyStyle" /> + </case> + <default> + <Key + latin:keyLabel="." + latin:keyHintIcon="@drawable/hint_popup" + latin:popupCharacters="@string/alternates_for_punctuation" + latin:maxPopupKeyboardColumn="7" + latin:keyStyle="functionalKeyStyle" /> + </default> + </switch> + <switch> + <case + latin:mode="im" + > + <Key + latin:keyStyle="smileyKeyStyle" + latin:keyWidth="20%p" + latin:keyEdgeFlags="right" /> + </case> + <default> + <Key + latin:keyStyle="returnKeyStyle" + latin:keyWidth="20%p" + latin:keyEdgeFlags="right" /> + </default> + </switch> + </case> + <case + latin:hasSettingsKey="true" + > + <Key + latin:keyStyle="toSymbolKeyStyle" + latin:keyWidth="15%p" + latin:keyEdgeFlags="left" /> <Key latin:keyStyle="settingsKeyStyle" /> - </case> - <default> - <Spacer - latin:horizontalGap="8.042%p" /> - </default> - </switch> - <switch> - <case - latin:languageCode="ru" - > + <include + latin:keyboardLayout="@xml/kbd_qwerty_f1" /> <switch> - <!-- TODO: implement logical OR for <case> attribute --> <case - latin:mode="email" + latin:mode="web" > <Key - latin:keyStyle="comKeyStyle" /> - </case> - <case - latin:mode="url" - > + latin:keyStyle="spaceKeyStyle" + latin:keyWidth="30%p" /> <Key - latin:keyStyle="comKeyStyle" /> - </case> - <case - latin:imeAction="actionSearch" - > - <Key - latin:keyLabel=":" - latin:manualTemporaryUpperCaseCode="43" - latin:keyHintIcon="@drawable/key_hint_plus_holo" - latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_plus_large_holo" - latin:popupCharacters="+" /> + latin:keyStyle="tabKeyStyle" /> </case> <default> <Key - latin:keyStyle="smileyKeyStyle" /> + latin:keyStyle="spaceKeyStyle" + latin:keyWidth="30%p" /> </default> </switch> - <switch> - <case - latin:mode="email" - > - <Key - latin:keyLabel="\@" /> - </case> - <case - latin:mode="url" - > - <Key - latin:keyLabel="-" - latin:manualTemporaryUpperCaseCode="95" - latin:keyHintIcon="@drawable/key_hint_underline_holo" - latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_underline_large_holo" - latin:popupCharacters="_" /> - </case> - <default> - <Key - latin:keyLabel="/" - latin:manualTemporaryUpperCaseCode="64" - latin:keyHintIcon="@drawable/key_hint_at_holo" - latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_at_large_holo" - latin:popupCharacters="\@" /> - </default> - </switch> - </case> - <!-- not languageCode="ru" --> - <default> - <switch> - <case - latin:mode="url" - > - <Key - latin:keyStyle="comKeyStyle" - latin:keyWidth="16.084%p" /> - </case> - <default> - <switch> - <case - latin:mode="email" - > - <Key - latin:keyStyle="comKeyStyle" /> - </case> - <case - latin:imeAction="actionSearch" - > - <Key - latin:keyLabel=":" - latin:manualTemporaryUpperCaseCode="43" - latin:keyHintIcon="@drawable/key_hint_plus_holo" - latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_plus_large_holo" - latin:popupCharacters="+" /> - </case> - <default> - <Key - latin:keyStyle="smileyKeyStyle" /> - </default> - </switch> - <switch> - <case - latin:mode="email" - > - <Key - latin:keyLabel="\@" /> - </case> - <default> - <Key - latin:keyLabel="/" - latin:manualTemporaryUpperCaseCode="64" - latin:keyHintIcon="@drawable/key_hint_at_holo" - latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_at_large_holo" - latin:popupCharacters="\@" /> - </default> - </switch> - </default> - </switch> - </default> - </switch> - <Key - latin:keyStyle="spaceKeyStyle" - latin:keyWidth="37.454%p" /> - <switch> - <case - latin:languageCode="ru" - > - <switch> - <case - latin:mode="email" - > - <Key - latin:keyLabel="-" /> - </case> - <case - latin:mode="url" - > - <Key - latin:keyLabel="/" - latin:manualTemporaryUpperCaseCode="58" - latin:keyHintIcon="@drawable/key_hint_colon_holo" - latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_colon_large_holo" - latin:popupCharacters=":" /> - </case> - <default> - <Key - latin:keyLabel="\?" - latin:manualTemporaryUpperCaseCode="95" - latin:keyHintIcon="@drawable/key_hint_underline_holo" - latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_underline_large_holo" - latin:popupCharacters="_" /> - </default> - </switch> - <switch> - <case - latin:mode="email" - > - <Key - latin:keyLabel="_" /> - </case> - <default> - <Key - latin:keyLabel="!" - latin:manualTemporaryUpperCaseCode="39" - latin:keyHintIcon="@drawable/key_hint_quote_holo" - latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_quote_large_holo" - latin:popupCharacters="\'" /> - </default> - </switch> - </case> - <!-- not languageCode="ru" --> - <default> - <switch> - <case - latin:mode="email" - > - <Key - latin:keyLabel="-" /> - </case> - <case - latin:mode="url" - > - <Key - latin:keyLabel="/" - latin:manualTemporaryUpperCaseCode="58" - latin:keyHintIcon="@drawable/key_hint_colon_holo" - latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_colon_large_holo" - latin:popupCharacters=":" /> - </case> - <default> - <Key - latin:keyLabel="\'" - latin:manualTemporaryUpperCaseCode="34" - latin:keyHintIcon="@drawable/key_hint_quote_holo" - latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_quote_large_holo" - latin:popupCharacters=""" /> - </default> - </switch> - <switch> - <case - latin:mode="email" - > - <Key - latin:keyLabel="_" /> - </case> - <default> - <Key - latin:keyLabel="-" - latin:manualTemporaryUpperCaseCode="95" - latin:keyHintIcon="@drawable/key_hint_underline_holo" - latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_underline_large_holo" - latin:popupCharacters="_" /> - </default> - </switch> - </default> - </switch> - <switch> - <case - latin:voiceKeyEnabled="true" - > <Key - latin:keyStyle="micKeyStyle" /> + latin:keyLabel="." + latin:keyHintIcon="@drawable/hint_popup" + latin:popupCharacters="@string/alternates_for_punctuation" + latin:maxPopupKeyboardColumn="7" + latin:keyStyle="functionalKeyStyle" /> + <switch> + <case + latin:mode="im" + > + <Key + latin:keyStyle="smileyKeyStyle" + latin:keyWidth="25%p" + latin:keyEdgeFlags="right" /> + </case> + <case + latin:mode="web" + > + <Key + latin:keyStyle="returnKeyStyle" + latin:keyWidth="15%p" + latin:keyEdgeFlags="right" /> + </case> + <default> + <Key + latin:keyStyle="returnKeyStyle" + latin:keyWidth="25%p" + latin:keyEdgeFlags="right" /> + </default> + </switch> </case> </switch> </Row> diff --git a/java/res/xml-large/kbd_qwerty_rows.xml b/java/res/xml-large/kbd_qwerty_rows.xml index 6237712f6..a2d26b3de 100644 --- a/java/res/xml-large/kbd_qwerty_rows.xml +++ b/java/res/xml-large/kbd_qwerty_rows.xml @@ -2,7 +2,7 @@ <!-- /* ** -** Copyright 2010, The Android Open Source Project +** Copyright 2011, The Android Open Source Project ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. diff --git a/java/res/xml-large/kbd_qwerty_rows_scandinavia.xml b/java/res/xml-large/kbd_qwerty_rows_scandinavia.xml index fb2034fb7..9521c0b37 100644 --- a/java/res/xml-large/kbd_qwerty_rows_scandinavia.xml +++ b/java/res/xml-large/kbd_qwerty_rows_scandinavia.xml @@ -2,7 +2,7 @@ <!-- /* ** -** Copyright 2010, The Android Open Source Project +** Copyright 2011, The Android Open Source Project ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. @@ -24,61 +24,64 @@ <include latin:keyboardLayout="@xml/kbd_key_styles" /> <Row - latin:keyWidth="7.520%p" + latin:keyWidth="9.09%p" + latin:rowEdgeFlags="top" > <Key - latin:keyStyle="tabKeyStyle" - latin:keyLabelOption="alignLeft" - latin:keyWidth="7.949%p" + latin:keyLabel="q" + latin:keyHintIcon="@drawable/keyboard_hint_1" + latin:popupCharacters="@string/alternates_for_q" + latin:keyWidth="8.75%p" latin:keyEdgeFlags="left" /> - <Key - latin:keyLabel="q" - latin:popupCharacters="@string/alternates_for_q" /> <Key latin:keyLabel="w" + latin:keyHintIcon="@drawable/keyboard_hint_2" latin:popupCharacters="@string/alternates_for_w" /> <Key latin:keyLabel="e" + latin:keyHintIcon="@drawable/keyboard_hint_3" latin:popupCharacters="@string/alternates_for_e" /> <Key latin:keyLabel="r" + latin:keyHintIcon="@drawable/keyboard_hint_4" latin:popupCharacters="@string/alternates_for_r" /> <Key latin:keyLabel="t" + latin:keyHintIcon="@drawable/keyboard_hint_5" latin:popupCharacters="@string/alternates_for_t" /> <Key latin:keyLabel="y" + latin:keyHintIcon="@drawable/keyboard_hint_6" latin:popupCharacters="@string/alternates_for_y" /> <Key latin:keyLabel="u" + latin:keyHintIcon="@drawable/keyboard_hint_7" latin:popupCharacters="@string/alternates_for_u" /> <Key latin:keyLabel="i" + latin:keyHintIcon="@drawable/keyboard_hint_8" latin:popupCharacters="@string/alternates_for_i" /> <Key latin:keyLabel="o" + latin:keyHintIcon="@drawable/keyboard_hint_9" latin:popupCharacters="@string/alternates_for_o" /> <Key latin:keyLabel="p" + latin:keyHintIcon="@drawable/keyboard_hint_0" latin:popupCharacters="@string/alternates_for_p" /> <Key - latin:keyLabel="å" /> - <Key - latin:keyStyle="deleteKeyStyle" - latin:keyWidth="9.331%p" + latin:keyLabel="å" + latin:keyWidth="8.75%p" latin:keyEdgeFlags="right" /> </Row> <Row - latin:keyWidth="7.520%p" + latin:keyWidth="9.09%p" > - <Key - latin:keyStyle="toSymbolKeyStyle" - latin:keyLabelOption="alignLeft" - latin:keyWidth="7.949%p" - latin:keyEdgeFlags="left" /> <Key latin:keyLabel="a" - latin:popupCharacters="@string/alternates_for_a" /> + latin:popupCharacters="@string/alternates_for_a" + latin:keyWidth="8.75%p" + latin:keyEdgeFlags="left" /> <Key latin:keyLabel="s" latin:popupCharacters="@string/alternates_for_s" /> @@ -105,10 +108,8 @@ latin:popupCharacters="@string/alternates_for_scandinavia_row2_10" /> <Key latin:keyLabel="@string/keylabel_for_scandinavia_row2_11" - latin:popupCharacters="@string/alternates_for_scandinavia_row2_11" /> - <Key - latin:keyStyle="returnKeyStyle" - latin:keyWidth="9.331%p" + latin:popupCharacters="@string/alternates_for_scandinavia_row2_11" + latin:keyWidth="8.75%p" latin:keyEdgeFlags="right" /> </Row> <include diff --git a/java/res/xml-large/kbd_qwertz_rows.xml b/java/res/xml-large/kbd_qwertz_rows.xml index 3e99f0511..239563dca 100644 --- a/java/res/xml-large/kbd_qwertz_rows.xml +++ b/java/res/xml-large/kbd_qwertz_rows.xml @@ -2,7 +2,7 @@ <!-- /* ** -** Copyright 2010, The Android Open Source Project +** Copyright 2011, The Android Open Source Project ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. @@ -24,56 +24,60 @@ <include latin:keyboardLayout="@xml/kbd_key_styles" /> <Row - latin:keyWidth="8.272%p" + latin:keyWidth="10%p" + latin:rowEdgeFlags="top" > <Key - latin:keyStyle="tabKeyStyle" - latin:keyLabelOption="alignLeft" - latin:keyWidth="7.949%p" + latin:keyLabel="q" + latin:keyHintIcon="@drawable/keyboard_hint_1" + latin:popupCharacters="@string/alternates_for_q" latin:keyEdgeFlags="left" /> - <Key - latin:keyLabel="q" - latin:popupCharacters="@string/alternates_for_q" /> <Key latin:keyLabel="w" + latin:keyHintIcon="@drawable/keyboard_hint_2" latin:popupCharacters="@string/alternates_for_w" /> <Key latin:keyLabel="e" + latin:keyHintIcon="@drawable/keyboard_hint_3" latin:popupCharacters="@string/alternates_for_e" /> <Key latin:keyLabel="r" + latin:keyHintIcon="@drawable/keyboard_hint_4" latin:popupCharacters="@string/alternates_for_r" /> <Key latin:keyLabel="t" + latin:keyHintIcon="@drawable/keyboard_hint_5" latin:popupCharacters="@string/alternates_for_t" /> <Key latin:keyLabel="z" + latin:keyHintIcon="@drawable/keyboard_hint_6" latin:popupCharacters="@string/alternates_for_z" /> <Key latin:keyLabel="u" + latin:keyHintIcon="@drawable/keyboard_hint_7" latin:popupCharacters="@string/alternates_for_u" /> <Key latin:keyLabel="i" + latin:keyHintIcon="@drawable/keyboard_hint_8" latin:popupCharacters="@string/alternates_for_i" /> <Key latin:keyLabel="o" + latin:keyHintIcon="@drawable/keyboard_hint_9" latin:popupCharacters="@string/alternates_for_o" /> <Key latin:keyLabel="p" - latin:popupCharacters="@string/alternates_for_p" /> - <Key - latin:keyStyle="deleteKeyStyle" - latin:keyWidth="9.331%p" + latin:keyHintIcon="@drawable/keyboard_hint_0" + latin:popupCharacters="@string/alternates_for_p" latin:keyEdgeFlags="right" /> </Row> <include latin:keyboardLayout="@xml/kbd_qwerty_row2" /> <Row - latin:keyWidth="8.042%p" + latin:keyWidth="10%p" > <Key latin:keyStyle="shiftKeyStyle" - latin:keyWidth="15.192%p" + latin:keyWidth="15%p" latin:keyEdgeFlags="left" /> <Key latin:keyLabel="y" @@ -93,33 +97,9 @@ latin:popupCharacters="@string/alternates_for_n" /> <Key latin:keyLabel="m" /> - <switch> - <case - latin:mode="email" - > - <Key - latin:keyLabel="," /> - <Key - latin:keyLabel="." /> - </case> - <default> - <Key - latin:keyLabel="," - latin:manualTemporaryUpperCaseCode="33" - latin:keyHintIcon="@drawable/key_hint_exclamation_holo" - latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_exclamation_large_holo" - latin:popupCharacters="!" /> - <Key - latin:keyLabel="." - latin:manualTemporaryUpperCaseCode="63" - latin:keyHintIcon="@drawable/key_hint_question_holo" - latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_question_large_holo" - latin:popupCharacters="\?" /> - </default> - </switch> <Key - latin:keyStyle="shiftKeyStyle" - latin:keyWidth="12.530%p" + latin:keyStyle="deleteKeyStyle" + latin:keyWidth="15%p" latin:keyEdgeFlags="right" /> </Row> <include diff --git a/java/res/xml-large/kbd_ru_rows.xml b/java/res/xml-large/kbd_ru_rows.xml index c5cd04371..fa2af3be0 100644 --- a/java/res/xml-large/kbd_ru_rows.xml +++ b/java/res/xml-large/kbd_ru_rows.xml @@ -23,62 +23,64 @@ > <include latin:keyboardLayout="@xml/kbd_key_styles" /> - <!-- This row is intentionally not marked as a top row --> <Row - latin:keyWidth="7.520%p" + latin:keyWidth="9.091%p" + latin:rowEdgeFlags="top" > <Key - latin:keyStyle="tabKeyStyle" - latin:keyLabelOption="alignLeft" - latin:keyWidth="7.949%p" + latin:keyLabel="й" + latin:keyHintIcon="@drawable/keyboard_hint_1" + latin:popupCharacters="1" + latin:keyWidth="8.75%p" latin:keyEdgeFlags="left" /> - <Key - latin:keyLabel="й" - latin:popupCharacters="1" /> <Key latin:keyLabel="ц" + latin:keyHintIcon="@drawable/keyboard_hint_2" latin:popupCharacters="2" /> <Key latin:keyLabel="у" + latin:keyHintIcon="@drawable/keyboard_hint_3" latin:popupCharacters="3" /> <Key latin:keyLabel="к" + latin:keyHintIcon="@drawable/keyboard_hint_4" latin:popupCharacters="4" /> <Key latin:keyLabel="е" + latin:keyHintIcon="@drawable/keyboard_hint_5" latin:popupCharacters="@string/alternates_for_cyrillic_e" /> <Key latin:keyLabel="н" + latin:keyHintIcon="@drawable/keyboard_hint_6" latin:popupCharacters="6" /> <Key latin:keyLabel="г" + latin:keyHintIcon="@drawable/keyboard_hint_7" latin:popupCharacters="7" /> <Key latin:keyLabel="ш" + latin:keyHintIcon="@drawable/keyboard_hint_8" latin:popupCharacters="8" /> <Key latin:keyLabel="щ" + latin:keyHintIcon="@drawable/keyboard_hint_9" latin:popupCharacters="9" /> <Key latin:keyLabel="з" + latin:keyHintIcon="@drawable/keyboard_hint_0" latin:popupCharacters="0" /> <Key - latin:keyLabel="х" /> - <Key - latin:keyStyle="deleteKeyStyle" - latin:keyWidth="9.331%p" + latin:keyLabel="х" + latin:keyWidth="8.75%p" latin:keyEdgeFlags="right" /> </Row> <Row - latin:keyWidth="7.520%p" + latin:keyWidth="9.091%p" > <Key - latin:keyStyle="toSymbolKeyStyle" - latin:keyLabelOption="alignLeft" - latin:keyWidth="7.949%p" + latin:keyLabel="ф" + latin:keyWidth="8.75%p" latin:keyEdgeFlags="left" /> - <Key - latin:keyLabel="ф" /> <Key latin:keyLabel="ы" /> <Key @@ -98,18 +100,16 @@ <Key latin:keyLabel="ж" /> <Key - latin:keyLabel="э" /> - <Key - latin:keyStyle="returnKeyStyle" - latin:keyWidth="9.331%p" + latin:keyLabel="э" + latin:keyWidth="8.75%p" latin:keyEdgeFlags="right" /> </Row> <Row - latin:keyWidth="7.520%p" + latin:keyWidth="8.5%p" > <Key latin:keyStyle="shiftKeyStyle" - latin:keyWidth="12.400%p" + latin:keyWidth="11.75%p" latin:keyEdgeFlags="left" /> <Key latin:keyLabel="я" /> @@ -131,14 +131,8 @@ <Key latin:keyLabel="ю" /> <Key - latin:keyLabel="." - latin:manualTemporaryUpperCaseCode="44" - latin:keyHintIcon="@drawable/key_hint_comma_holo" - latin:manualTemporaryUpperCaseHintIcon="@drawable/key_hint_comma_large_holo" - latin:popupCharacters="," /> - <Key - latin:keyStyle="shiftKeyStyle" - latin:keyWidth="12.400%p" + latin:keyStyle="deleteKeyStyle" + latin:keyWidth="11.75%p" latin:keyEdgeFlags="right" /> </Row> <include diff --git a/java/res/xml-large/kbd_symbols.xml b/java/res/xml-large/kbd_symbols.xml index 1061178e0..3f79ae178 100644 --- a/java/res/xml-large/kbd_symbols.xml +++ b/java/res/xml-large/kbd_symbols.xml @@ -2,7 +2,7 @@ <!-- /* ** -** Copyright 2010, The Android Open Source Project +** Copyright 2011, The Android Open Source Project ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. @@ -23,6 +23,7 @@ latin:keyboardHeight="@dimen/keyboardHeight" latin:maxKeyboardHeight="50%p" latin:rowHeight="25%p" + latin:keyWidth="10%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="@dimen/key_bottom_gap" latin:popupKeyboardTemplate="@xml/kbd_popup_template" @@ -32,18 +33,13 @@ latin:keyboardLayout="@xml/kbd_key_styles" /> <include latin:keyboardLayout="@xml/kbd_currency_key_styles" /> - <!-- This row is intentionally not marked as a top row --> <Row - latin:keyWidth="8.272%p" + latin:rowEdgeFlags="top" > - <Key - latin:keyStyle="tabKeyStyle" - latin:keyLabelOption="alignLeft" - latin:keyWidth="7.949%p" - latin:keyEdgeFlags="left" /> <Key latin:keyLabel="1" - latin:popupCharacters="¹,½,⅓,¼,⅛" /> + latin:popupCharacters="¹,½,⅓,¼,⅛" + latin:keyEdgeFlags="left" /> <Key latin:keyLabel="2" latin:popupCharacters="²,⅔" /> @@ -67,22 +63,15 @@ latin:keyLabel="9" /> <Key latin:keyLabel="0" - latin:popupCharacters="ⁿ,∅" /> - <Key - latin:keyStyle="deleteKeyStyle" - latin:keyWidth="9.331%p" + latin:popupCharacters="ⁿ,∅" latin:keyEdgeFlags="right" /> </Row> - <Row - latin:keyWidth="8.157%p" - > + <Row> <Key - latin:keyStyle="toAlphaKeyStyle" - latin:keyLabelOption="alignLeft" - latin:keyWidth="11.167%p" + latin:keyLabel="\@" latin:keyEdgeFlags="left" /> <Key - latin:keyLabel="#" /> + latin:keyLabel="\#" /> <Key latin:keyStyle="currencyKeyStyle" /> <Key @@ -104,127 +93,39 @@ latin:popupCharacters="[,{,<" /> <Key latin:keyLabel=")" - latin:popupCharacters="],},>" /> - <Key - latin:keyStyle="returnKeyStyle" - latin:keyWidth="15.750%p" + latin:popupCharacters="],},>" latin:keyEdgeFlags="right" /> </Row> - <Row - latin:keyWidth="8.042%p" - > + <Row> <Key - latin:keyStyle="moreKeyStyle" - latin:keyWidth="15.192%p" + latin:keyStyle="altKeyStyle" + latin:keyWidth="15%p" latin:keyEdgeFlags="left" /> <Key - latin:keyLabel="<" - latin:popupCharacters="≤,«,‹" /> + latin:keyLabel="!" + latin:popupCharacters="¡" /> + <!-- Note: DroidSans doesn't have double-high-reversed-quotation '\u201f' glyph. --> + <!-- latin:popupCharacters="“,”,„,‟,«,»" --> <Key - latin:keyLabel=">" - latin:popupCharacters="≥,»,›" /> + latin:keyLabel=""" + latin:popupCharacters="“,”,«,»" + latin:maxPopupKeyboardColumn="6" /> <Key - latin:keyLabel="=" - latin:popupCharacters="≠,≈" /> - <switch> - <case - latin:languageCode="ru" - > - <Key - latin:keyLabel=":" /> - </case> - <case - latin:mode="url" - > - <Key - latin:keyLabel="\'" /> - </case> - <default> - <Key - latin:keyLabel=":" /> - </default> - </switch> + latin:keyLabel="\'" + latin:popupCharacters="‘,’,‚,‛" /> + <Key + latin:keyLabel=":" /> <Key latin:keyLabel=";" /> - <switch> - <case - latin:languageCode="ru" - > - <Key - latin:keyLabel="\'" /> - <Key - latin:keyLabel=""" - latin:popupCharacters="“,”,«,»,˝" /> - <Key - latin:keyLabel="." /> - <Key - latin:keyLabel="," /> - </case> - <default> - <Key - latin:keyLabel="," /> - <Key - latin:keyLabel="." /> - <Key - latin:keyLabel="!" - latin:popupCharacters="¡" /> - <Key - latin:keyLabel="\?" - latin:popupCharacters="¿" /> - </default> - </switch> - <Key - latin:keyStyle="moreKeyStyle" - latin:keyWidth="12.530%p" - latin:keyEdgeFlags="right" /> - </Row> - <!-- This row is intentionally not marked as a bottom row --> - <Row - latin:keyWidth="8.042%p" - > - <Spacer - latin:horizontalGap="8.362%p" /> - <switch> - <case latin:hasSettingsKey="true"> - <Key - latin:keyStyle="settingsKeyStyle" /> - </case> - <default> - <Spacer - latin:horizontalGap="8.042%p" /> - </default> - </switch> <Key latin:keyLabel="/" /> <Key - latin:keyLabel="\@" /> + latin:keyLabel="\?" + latin:popupCharacters="¿" /> <Key - latin:keyStyle="spaceKeyStyle" - latin:keyWidth="37.454%p" /> - <switch> - <case - latin:languageCode="ru" - > - <Key - latin:keyLabel="_" /> - <Key - latin:keyLabel="-" /> - </case> - <default> - <Key - latin:keyLabel=""" - latin:popupCharacters="“,”,«,»,˝" /> - <Key - latin:keyLabel="_" /> - </default> - </switch> - <switch> - <case - latin:voiceKeyEnabled="true" - > - <Key - latin:keyStyle="micKeyStyle" /> - </case> - </switch> + latin:keyStyle="deleteKeyStyle" + latin:keyWidth="15%p" + latin:keyEdgeFlags="right" /> </Row> + <include latin:keyboardLayout="@xml/kbd_symbols_row4" /> </Keyboard> diff --git a/java/res/xml-large/kbd_symbols_shift.xml b/java/res/xml-large/kbd_symbols_shift.xml index 8359b7571..97fbc1ec7 100644 --- a/java/res/xml-large/kbd_symbols_shift.xml +++ b/java/res/xml-large/kbd_symbols_shift.xml @@ -2,7 +2,7 @@ <!-- /* ** -** Copyright 2010, The Android Open Source Project +** Copyright 2011, The Android Open Source Project ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. @@ -23,6 +23,7 @@ latin:keyboardHeight="@dimen/keyboardHeight" latin:maxKeyboardHeight="50%p" latin:rowHeight="25%p" + latin:keyWidth="10%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="@dimen/key_bottom_gap" latin:popupKeyboardTemplate="@xml/kbd_popup_template" @@ -30,17 +31,12 @@ > <include latin:keyboardLayout="@xml/kbd_key_styles" /> - <!-- This row is intentionally not marked as a top row --> <Row - latin:keyWidth="8.272%p" + latin:rowEdgeFlags="top" > <Key - latin:keyStyle="tabKeyStyle" - latin:keyLabelOption="alignLeft" - latin:keyWidth="7.949%p" + latin:keyLabel="~" latin:keyEdgeFlags="left" /> - <Key - latin:keyLabel="~" /> <Key latin:keyLabel="`" /> <Key @@ -63,24 +59,14 @@ latin:keyStyle="nonPasswordSymbolKeyStyle" latin:keyLabel="×" /> <Key - latin:keyStyle="nonPasswordSymbolKeyStyle" - latin:keyLabel="§" - latin:popupCharacters="¶" /> + latin:keyLabel="{" /> <Key - latin:keyStyle="nonPasswordSymbolKeyStyle" - latin:keyLabel="Δ" /> - <Key - latin:keyStyle="deleteKeyStyle" - latin:keyWidth="9.331%p" + latin:keyLabel="}" latin:keyEdgeFlags="right" /> </Row> - <Row - latin:keyWidth="8.157%p" - > + <Row> <Key - latin:keyStyle="toAlphaKeyStyle" - latin:keyLabelOption="alignLeft" - latin:keyWidth="11.167%p" + latin:keyStyle="nonSpecialBackgroundTabKeyStyle" latin:keyEdgeFlags="left" /> <Key latin:keyStyle="nonPasswordSymbolKeyStyle" @@ -93,88 +79,52 @@ latin:keyLabel="€" /> <Key latin:keyStyle="nonPasswordSymbolKeyStyle" - latin:keyLabel="¥" /> + latin:keyLabel="°" + latin:popupCharacters="′,″" /> <Key latin:keyLabel="^" latin:popupCharacters="↑,↓,←,→" /> <Key - latin:keyStyle="nonPasswordSymbolKeyStyle" - latin:keyLabel="°" /> + latin:keyLabel="_" /> <Key - latin:keyStyle="nonPasswordSymbolKeyStyle" - latin:keyLabel="±" - latin:popupCharacters="∞" /> + latin:keyLabel="=" + latin:popupCharacters="≠,≈,∞" /> <Key - latin:keyLabel="{" /> + latin:keyLabel="[" /> <Key - latin:keyLabel="}" /> - <Key - latin:keyStyle="returnKeyStyle" - latin:keyWidth="15.750%p" + latin:keyLabel="]" latin:keyEdgeFlags="right" /> </Row> - <Row - latin:keyWidth="8.042%p" - > + <Row> <Key - latin:keyStyle="moreKeyStyle" - latin:keyWidth="15.192%p" + latin:keyStyle="shiftKeyStyle" + latin:keyWidth="15%p" latin:keyEdgeFlags="left" /> - <Key - latin:keyLabel="\\" /> - <Key - latin:keyStyle="nonPasswordSymbolKeyStyle" - latin:keyLabel="©" /> - <Key - latin:keyStyle="nonPasswordSymbolKeyStyle" - latin:keyLabel="®" /> <Key latin:keyStyle="nonPasswordSymbolKeyStyle" latin:keyLabel="™" /> <Key latin:keyStyle="nonPasswordSymbolKeyStyle" - latin:keyLabel="℅" /> - <Key - latin:keyLabel="[" /> - <Key - latin:keyLabel="]" /> + latin:keyLabel="®" /> <Key latin:keyStyle="nonPasswordSymbolKeyStyle" - latin:keyLabel="¡" /> + latin:keyLabel="©" /> <Key latin:keyStyle="nonPasswordSymbolKeyStyle" - latin:keyLabel="¿" /> + latin:keyLabel="¶" + latin:popupCharacters="§" /> <Key - latin:keyStyle="moreKeyStyle" - latin:keyWidth="12.530%p" + latin:keyLabel="\\" /> + <Key + latin:keyLabel="<" + latin:popupCharacters="≤,«,‹" /> + <Key + latin:keyLabel=">" + latin:popupCharacters="≥,»,›" /> + <Key + latin:keyStyle="deleteKeyStyle" + latin:keyWidth="15%p" latin:keyEdgeFlags="right" /> </Row> - <!-- This row is intentionally not marked as a bottom row --> - <Row - latin:keyWidth="8.042%p" - > - <Spacer - latin:horizontalGap="24.446%p" /> - <switch> - <case latin:hasSettingsKey="true"> - <Key - latin:keyStyle="settingsKeyStyle" /> - </case> - <default> - <Spacer - latin:horizontalGap="8.042%p" /> - </default> - </switch> - <Key - latin:keyStyle="spaceKeyStyle" - latin:keyWidth="37.454%p" /> - <switch> - <case - latin:voiceKeyEnabled="true" - > - <Key - latin:keyStyle="micKeyStyle" /> - </case> - </switch> - </Row> + <include latin:keyboardLayout="@xml/kbd_symbols_shift_row4" /> </Keyboard> diff --git a/java/res/xml-xlarge/kbd_symbols.xml b/java/res/xml-xlarge/kbd_symbols.xml index 1061178e0..16722a04b 100644 --- a/java/res/xml-xlarge/kbd_symbols.xml +++ b/java/res/xml-xlarge/kbd_symbols.xml @@ -137,7 +137,8 @@ latin:mode="url" > <Key - latin:keyLabel="\'" /> + latin:keyLabel="\'" + latin:popupCharacters="‘,’,‚,‛" /> </case> <default> <Key @@ -151,10 +152,13 @@ latin:languageCode="ru" > <Key - latin:keyLabel="\'" /> + latin:keyLabel="\'" + latin:popupCharacters="‘,’,‚,‛" /> + <!-- Note: DroidSans doesn't have double-high-reversed-quotation '\u201f' glyph. --> + <!-- latin:popupCharacters="“,”,„,‟,«,»" --> <Key latin:keyLabel=""" - latin:popupCharacters="“,”,«,»,˝" /> + latin:popupCharacters="“,”,«,»" /> <Key latin:keyLabel="." /> <Key @@ -210,10 +214,12 @@ <Key latin:keyLabel="-" /> </case> - <default> + <default> + <!-- Note: DroidSans doesn't have double-high-reversed-quotation '\u201f' glyph. --> + <!-- latin:popupCharacters="“,”,„,‟,«,»,‘,’,‚,‛" --> <Key latin:keyLabel=""" - latin:popupCharacters="“,”,«,»,˝" /> + latin:popupCharacters="“,”,«,»,‘,’,‚,‛" /> <Key latin:keyLabel="_" /> </default> diff --git a/java/res/xml-xlarge/kbd_symbols_shift.xml b/java/res/xml-xlarge/kbd_symbols_shift.xml index 8359b7571..cc23358a5 100644 --- a/java/res/xml-xlarge/kbd_symbols_shift.xml +++ b/java/res/xml-xlarge/kbd_symbols_shift.xml @@ -99,7 +99,8 @@ latin:popupCharacters="↑,↓,←,→" /> <Key latin:keyStyle="nonPasswordSymbolKeyStyle" - latin:keyLabel="°" /> + latin:keyLabel="°" + latin:popupCharacters="′,″" /> <Key latin:keyStyle="nonPasswordSymbolKeyStyle" latin:keyLabel="±" diff --git a/java/res/xml/kbd_key_styles.xml b/java/res/xml/kbd_key_styles.xml index 473510ec4..54522369b 100644 --- a/java/res/xml/kbd_key_styles.xml +++ b/java/res/xml/kbd_key_styles.xml @@ -21,14 +21,45 @@ <merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > - <!-- Functional key styles --> + <!-- Base key style for the functional key --> <switch> - <case + <case latin:colorScheme="white" > <key-style latin:styleName="functionalKeyStyle" latin:isModifier="true" /> + </case> + <case + latin:colorScheme="black" + > + <key-style + latin:styleName="functionalKeyStyle" /> + </case> + </switch> + <!-- Base key style for the key which may have settings key as popup key --> + <switch> + <case + latin:hasSettingsKey="true" + > + <key-style + latin:styleName="settingsPopupStyle" + latin:parentStyle="functionalKeyStyle" /> + </case> + <!-- latin:hasSettingsKey="false" --> + <default> + <key-style + latin:styleName="settingsPopupStyle" + latin:keyHintIcon="@drawable/hint_popup" + latin:popupCharacters="\@drawable/sym_keyboard_settings|\@integer/key_settings" + latin:parentStyle="functionalKeyStyle" /> + </default> + </switch> + <!-- Functional key styles --> + <switch> + <case + latin:colorScheme="white" + > <key-style latin:styleName="shiftKeyStyle" latin:code="@integer/key_shift" @@ -90,9 +121,7 @@ latin:code="@integer/key_voice" latin:keyIcon="@drawable/sym_keyboard_mic" latin:iconPreview="@drawable/sym_keyboard_feedback_mic" - latin:keyHintIcon="@drawable/hint_popup" - latin:popupCharacters="@string/alternates_for_mic" - latin:parentStyle="functionalKeyStyle" /> + latin:parentStyle="settingsPopupStyle" /> <!-- Note: This key style is not for functional tab key. This is used for the tab key which is laid out as normal letter key. --> <key-style @@ -104,8 +133,6 @@ <case latin:colorScheme="black" > - <key-style - latin:styleName="functionalKeyStyle" /> <key-style latin:styleName="shiftKeyStyle" latin:code="@integer/key_shift" @@ -167,9 +194,7 @@ latin:code="@integer/key_voice" latin:keyIcon="@drawable/sym_bkeyboard_mic" latin:iconPreview="@drawable/sym_keyboard_feedback_mic" - latin:keyHintIcon="@drawable/hint_popup" - latin:popupCharacters="@string/alternates_for_mic" - latin:parentStyle="functionalKeyStyle" /> + latin:parentStyle="settingsPopupStyle" /> <!-- Note: This key style is not for functional tab key. This is used for the tab key which is laid out as normal letter key. --> <key-style @@ -287,4 +312,27 @@ latin:popupCharacters="@string/alternates_for_smiley" latin:maxPopupKeyboardColumn="5" latin:parentStyle="functionalKeyStyle" /> -</merge> \ No newline at end of file + <switch> + <case + latin:passwordInput="true" + > + <key-style + latin:styleName="nonPasswordSymbolKeyStyle" + latin:enabled="false" /> + <key-style + latin:styleName="nonPasswordFunctionalKeyStyle" + latin:enabled="false" + latin:parentStyle="functionalKeyStyle" /> + </case> + <!-- latin:passwordInput="false" --> + <default> + <key-style + latin:styleName="nonPasswordSymbolKeyStyle" + latin:enabled="true" /> + <key-style + latin:styleName="nonPasswordFunctionalKeyStyle" + latin:enabled="true" + latin:parentStyle="functionalKeyStyle" /> + </default> + </switch> +</merge> diff --git a/java/res/xml/kbd_popup_narrow_template.xml b/java/res/xml/kbd_popup_narrow_template.xml deleted file mode 100644 index 36caf1c15..000000000 --- a/java/res/xml/kbd_popup_narrow_template.xml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -** -** Copyright 2010, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ ---> - -<Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - latin:keyWidth="9.45%p" - latin:horizontalGap="0px" - latin:verticalGap="0px" - latin:rowHeight="@dimen/popup_key_height" - > -</Keyboard> diff --git a/java/res/xml/kbd_qwerty_black_symbol.xml b/java/res/xml/kbd_qwerty_black_symbol.xml deleted file mode 100644 index 6e45c12bf..000000000 --- a/java/res/xml/kbd_qwerty_black_symbol.xml +++ /dev/null @@ -1,84 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -** -** Copyright 2010, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ ---> - -<merge - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" -> - <switch> - <case - latin:hasSettingsKey="false" - > - <switch> - <!-- When this qwerty keyboard has no voice key but voice key is enabled, then - symbol keyboard will have mic key. That means we should use "?123mic" key here. - --> - <case - latin:voiceKeyEnabled="true" - latin:hasVoiceKey="false" - > - <Key - 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" - latin:isModifier="true" - latin:keyEdgeFlags="left" /> - </case> - <default> - <Key - latin:code="@integer/key_switch_alpha_symbol" - latin:keyLabel="@string/label_to_symbol_key" - latin:keyWidth="20%p" - latin:isModifier="true" - latin:keyEdgeFlags="left" /> - </default> - </switch> - </case> - <case - latin:hasSettingsKey="true" - > - <switch> - <!-- When this qwerty keyboard has no voice key but voice key is enabled, then - symbol keyboard will have mic key. That means we should use "?123mic" key here. - --> - <case - latin:voiceKeyEnabled="true" - latin:hasVoiceKey="false" - > - <Key - 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" - latin:isModifier="true" - latin:keyEdgeFlags="left" /> - </case> - <default> - <Key - latin:code="@integer/key_switch_alpha_symbol" - latin:keyLabel="@string/label_to_symbol_key" - latin:keyWidth="15%p" - latin:isModifier="true" - latin:keyEdgeFlags="left" /> - </default> - </switch> - </case> - </switch> -</merge> diff --git a/java/res/xml/kbd_qwerty_f1.xml b/java/res/xml/kbd_qwerty_f1.xml index cbdb8c09a..d0e2884e1 100644 --- a/java/res/xml/kbd_qwerty_f1.xml +++ b/java/res/xml/kbd_qwerty_f1.xml @@ -27,18 +27,14 @@ > <Key latin:keyLabel="/" - latin:keyHintIcon="@drawable/hint_popup" - latin:popupCharacters="@string/alternates_for_settings_slash" - latin:isModifier="true" /> + latin:keyStyle="settingsPopupStyle" /> </case> <case latin:mode="email" > <Key latin:keyLabel="\@" - latin:keyHintIcon="@drawable/hint_popup" - latin:popupCharacters="@string/alternates_for_settings_at" - latin:isModifier="true" /> + latin:keyStyle="settingsPopupStyle" /> </case> <default> <switch> @@ -48,15 +44,19 @@ <Key latin:keyStyle="micKeyStyle" /> </case> + <!-- latin:hasVoiceKey="false" --> <case - latin:hasVoiceKey="false" + latin:mode="web" > <Key - latin:keyLabel="," - latin:keyHintIcon="@drawable/hint_popup" - latin:popupCharacters="@string/alternates_for_settings_comma" - latin:isModifier="true" /> + latin:keyLabel="." + latin:keyStyle="settingsPopupStyle" /> </case> + <default> + <Key + latin:keyLabel="," + latin:keyStyle="settingsPopupStyle" /> + </default> </switch> </default> </switch> diff --git a/java/res/xml/kbd_symbols.xml b/java/res/xml/kbd_symbols.xml index b3b3f4ebd..bd3917bb2 100644 --- a/java/res/xml/kbd_symbols.xml +++ b/java/res/xml/kbd_symbols.xml @@ -104,12 +104,15 @@ <Key latin:keyLabel="!" latin:popupCharacters="¡" /> + <!-- Note: DroidSans doesn't have double-high-reversed-quotation '\u201f' glyph. --> + <!-- latin:popupCharacters="“,”,„,‟,«,»" --> <Key latin:keyLabel=""" - latin:popupCharacters="“,”,«,»,˝" /> + latin:popupCharacters="“,”,«,»" + latin:maxPopupKeyboardColumn="6" /> <Key latin:keyLabel="\'" - latin:popupCharacters="‘,’" /> + latin:popupCharacters="‘,’,‚,‛" /> <Key latin:keyLabel=":" /> <Key diff --git a/java/res/xml/kbd_symbols_f1.xml b/java/res/xml/kbd_symbols_f1.xml index 8487b6158..0fb7136b9 100644 --- a/java/res/xml/kbd_symbols_f1.xml +++ b/java/res/xml/kbd_symbols_f1.xml @@ -28,14 +28,11 @@ <Key latin:keyStyle="micKeyStyle" /> </case> - <case - latin:hasVoiceKey="false" - > + <!-- latin:hasVoiceKey="false" --> + <default> <Key latin:keyLabel="," - latin:keyHintIcon="@drawable/hint_popup" - latin:popupCharacters="@string/alternates_for_settings_comma" - latin:keyStyle="functionalKeyStyle" /> - </case> + latin:keyStyle="settingsPopupStyle" /> + </default> </switch> </merge> diff --git a/java/res/xml/kbd_symbols_shift.xml b/java/res/xml/kbd_symbols_shift.xml index 368ee805b..b99d97084 100644 --- a/java/res/xml/kbd_symbols_shift.xml +++ b/java/res/xml/kbd_symbols_shift.xml @@ -42,16 +42,21 @@ <Key latin:keyLabel="|" /> <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" latin:keyLabel="•" latin:popupCharacters="♪,♥,♠,♦,♣" /> <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" latin:keyLabel="√" /> <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" latin:keyLabel="π" latin:popupCharacters="Π" /> <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" latin:keyLabel="÷" /> <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" latin:keyLabel="×" /> <Key latin:keyLabel="{" /> @@ -64,13 +69,18 @@ latin:keyStyle="nonSpecialBackgroundTabKeyStyle" latin:keyEdgeFlags="left" /> <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" latin:keyLabel="£" /> <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" latin:keyLabel="¢" /> <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" latin:keyLabel="€" /> <Key - latin:keyLabel="°" /> + latin:keyStyle="nonPasswordSymbolKeyStyle" + latin:keyLabel="°" + latin:popupCharacters="′,″" /> <Key latin:keyLabel="^" latin:popupCharacters="↑,↓,←,→" /> @@ -91,12 +101,16 @@ latin:keyWidth="15%p" latin:keyEdgeFlags="left" /> <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" latin:keyLabel="™" /> <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" latin:keyLabel="®" /> <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" latin:keyLabel="©" /> <Key + latin:keyStyle="nonPasswordSymbolKeyStyle" latin:keyLabel="¶" latin:popupCharacters="§" /> <Key diff --git a/java/res/xml/kbd_symbols_shift_row4.xml b/java/res/xml/kbd_symbols_shift_row4.xml index 9159bab24..e4b5403b5 100644 --- a/java/res/xml/kbd_symbols_shift_row4.xml +++ b/java/res/xml/kbd_symbols_shift_row4.xml @@ -34,13 +34,13 @@ latin:keyEdgeFlags="left" /> <Key latin:keyLabel="„" - latin:keyStyle="functionalKeyStyle" /> + latin:keyStyle="nonPasswordFunctionalKeyStyle" /> <Key latin:keyStyle="spaceKeyStyle" latin:keyWidth="40%p" /> <Key latin:keyLabel="…" - latin:keyStyle="functionalKeyStyle" /> + latin:keyStyle="nonPasswordFunctionalKeyStyle" /> <switch> <case latin:mode="im" @@ -69,13 +69,13 @@ latin:keyStyle="settingsKeyStyle" /> <Key latin:keyLabel="„" - latin:keyStyle="functionalKeyStyle" /> + latin:keyStyle="nonPasswordFunctionalKeyStyle" /> <Key latin:keyStyle="spaceKeyStyle" latin:keyWidth="30%p" /> <Key latin:keyLabel="…" - latin:keyStyle="functionalKeyStyle" /> + latin:keyStyle="nonPasswordFunctionalKeyStyle" /> <switch> <case latin:mode="im" diff --git a/java/src/com/android/inputmethod/keyboard/Key.java b/java/src/com/android/inputmethod/keyboard/Key.java index 15259a289..8eadf4ba4 100644 --- a/java/src/com/android/inputmethod/keyboard/Key.java +++ b/java/src/com/android/inputmethod/keyboard/Key.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of @@ -140,9 +140,9 @@ public class Key { * This constructor is being used only for key in mini popup keyboard. */ public Key(Resources res, Keyboard keyboard, CharSequence popupCharacter, int x, int y, - int width, int edgeFlags) { + int width, int height, int edgeFlags) { mKeyboard = keyboard; - mHeight = keyboard.getRowHeight() - keyboard.getVerticalGap(); + mHeight = height - keyboard.getVerticalGap(); mGap = keyboard.getHorizontalGap(); mWidth = width - mGap; mEdgeFlags = edgeFlags; diff --git a/java/src/com/android/inputmethod/keyboard/KeyDetector.java b/java/src/com/android/inputmethod/keyboard/KeyDetector.java index a7ede5f26..a8346c581 100644 --- a/java/src/com/android/inputmethod/keyboard/KeyDetector.java +++ b/java/src/com/android/inputmethod/keyboard/KeyDetector.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/keyboard/KeyStyles.java b/java/src/com/android/inputmethod/keyboard/KeyStyles.java index 169f2e6c3..8d9b1b41e 100644 --- a/java/src/com/android/inputmethod/keyboard/KeyStyles.java +++ b/java/src/com/android/inputmethod/keyboard/KeyStyles.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/keyboard/Keyboard.java b/java/src/com/android/inputmethod/keyboard/Keyboard.java index 06d44680d..0b545d9c2 100644 --- a/java/src/com/android/inputmethod/keyboard/Keyboard.java +++ b/java/src/com/android/inputmethod/keyboard/Keyboard.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardActionListener.java b/java/src/com/android/inputmethod/keyboard/KeyboardActionListener.java index 098af214e..7e67d6f6b 100644 --- a/java/src/com/android/inputmethod/keyboard/KeyboardActionListener.java +++ b/java/src/com/android/inputmethod/keyboard/KeyboardActionListener.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardId.java b/java/src/com/android/inputmethod/keyboard/KeyboardId.java index d09f6786e..97ef687bd 100644 --- a/java/src/com/android/inputmethod/keyboard/KeyboardId.java +++ b/java/src/com/android/inputmethod/keyboard/KeyboardId.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardParser.java b/java/src/com/android/inputmethod/keyboard/KeyboardParser.java index feb56ab3a..6af0d537c 100644 --- a/java/src/com/android/inputmethod/keyboard/KeyboardParser.java +++ b/java/src/com/android/inputmethod/keyboard/KeyboardParser.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardShiftState.java b/java/src/com/android/inputmethod/keyboard/KeyboardShiftState.java index d5412791d..e015b5158 100644 --- a/java/src/com/android/inputmethod/keyboard/KeyboardShiftState.java +++ b/java/src/com/android/inputmethod/keyboard/KeyboardShiftState.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardView.java b/java/src/com/android/inputmethod/keyboard/KeyboardView.java index 61af15b1d..e33e76251 100644 --- a/java/src/com/android/inputmethod/keyboard/KeyboardView.java +++ b/java/src/com/android/inputmethod/keyboard/KeyboardView.java @@ -37,7 +37,6 @@ import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; import android.os.SystemClock; -import android.provider.Settings; import android.util.AttributeSet; import android.util.Log; import android.util.TypedValue; @@ -1108,7 +1107,7 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { miniKeyboardView.mGestureDetector = null; final Keyboard keyboard = new MiniKeyboardBuilder(this, mKeyboard.getPopupKeyboardResId(), - popupKey).build(); + popupKey, mKeyboard).build(); miniKeyboardView.setKeyboard(keyboard); miniKeyboardView.mMiniKeyboardParent = this; diff --git a/java/src/com/android/inputmethod/keyboard/MiniKeyboard.java b/java/src/com/android/inputmethod/keyboard/MiniKeyboard.java index 3b1408ccf..a45aaa4c6 100644 --- a/java/src/com/android/inputmethod/keyboard/MiniKeyboard.java +++ b/java/src/com/android/inputmethod/keyboard/MiniKeyboard.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011 Google Inc. + * Copyright (C) 2011 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/keyboard/MiniKeyboardBuilder.java b/java/src/com/android/inputmethod/keyboard/MiniKeyboardBuilder.java index 53dab9440..765750fbe 100644 --- a/java/src/com/android/inputmethod/keyboard/MiniKeyboardBuilder.java +++ b/java/src/com/android/inputmethod/keyboard/MiniKeyboardBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of @@ -34,7 +34,7 @@ public class MiniKeyboardBuilder { /* package */ static class MiniKeyboardLayoutParams { public final int mKeyWidth; public final int mRowHeight; - /* package */ final boolean mTopRowNeedsCentering; + /* package */ final int mTopRowAdjustment; public final int mNumRows; public final int mNumColumns; public final int mLeftKeys; @@ -55,29 +55,52 @@ public class MiniKeyboardBuilder { if (parentKeyboardWidth / keyWidth < maxColumns) throw new IllegalArgumentException("Keyboard is too small to hold mini keyboard: " + parentKeyboardWidth + " " + keyWidth + " " + maxColumns); - final int numRows = (numKeys + maxColumns - 1) / maxColumns; mKeyWidth = keyWidth; mRowHeight = rowHeight; - mNumRows = numRows; - final int numColumns = Math.min(numKeys, maxColumns); - final int topRowKeys = numKeys % numColumns; + final int numRows = (numKeys + maxColumns - 1) / maxColumns; + mNumRows = numRows; + final int numColumns = getOptimizedColumns(numKeys, maxColumns); mNumColumns = numColumns; - mTopRowNeedsCentering = topRowKeys != 0 && (numColumns - topRowKeys) % 2 != 0; final int numLeftKeys = (numColumns - 1) / 2; final int numRightKeys = numColumns - numLeftKeys; // including default key. final int maxLeftKeys = coordXInParent / keyWidth; final int maxRightKeys = Math.max(1, (parentKeyboardWidth - coordXInParent) / keyWidth); + int leftKeys, rightKeys; if (numLeftKeys > maxLeftKeys) { - mLeftKeys = maxLeftKeys; - mRightKeys = numColumns - maxLeftKeys; + leftKeys = maxLeftKeys; + rightKeys = numColumns - maxLeftKeys; } else if (numRightKeys > maxRightKeys) { - mLeftKeys = numColumns - maxRightKeys; - mRightKeys = maxRightKeys; + leftKeys = numColumns - maxRightKeys; + rightKeys = maxRightKeys; } else { - mLeftKeys = numLeftKeys; - mRightKeys = numRightKeys; + leftKeys = numLeftKeys; + rightKeys = numRightKeys; + } + // Shift right if the left edge of mini keyboard is on the edge of parent keyboard + // unless the parent key is on the left edge. + if (leftKeys * keyWidth >= coordXInParent && leftKeys > 0) { + leftKeys--; + rightKeys++; + } + // Shift left if the right edge of mini keyboard is on the edge of parent keyboard + // unless the parent key is on the right edge. + if (rightKeys * keyWidth + coordXInParent >= parentKeyboardWidth && rightKeys > 1) { + leftKeys++; + rightKeys--; + } + mLeftKeys = leftKeys; + mRightKeys = rightKeys; + + // Centering of the top row. + final boolean onEdge = (leftKeys == 0 || rightKeys == 1); + if (numRows < 2 || onEdge || getTopRowEmptySlots(numKeys, numColumns) % 2 == 0) { + mTopRowAdjustment = 0; + } else if (mLeftKeys < mRightKeys - 1) { + mTopRowAdjustment = 1; + } else { + mTopRowAdjustment = -1; } } @@ -113,14 +136,32 @@ public class MiniKeyboardBuilder { return pos; } + private static int getTopRowEmptySlots(int numKeys, int numColumns) { + final int remainingKeys = numKeys % numColumns; + if (remainingKeys == 0) { + return 0; + } else { + return numColumns - remainingKeys; + } + } + + private int getOptimizedColumns(int numKeys, int maxColumns) { + int numColumns = Math.min(numKeys, maxColumns); + while (getTopRowEmptySlots(numKeys, numColumns) >= mNumRows) { + numColumns--; + } + return numColumns; + } + public int getDefaultKeyCoordX() { return mLeftKeys * mKeyWidth; } public int getX(int n, int row) { final int x = getColumnPos(n) * mKeyWidth + getDefaultKeyCoordX(); - if (isLastRow(row) && mTopRowNeedsCentering) - return x - mKeyWidth / 2; + if (isTopRow(row)) { + return x + mTopRowAdjustment * (mKeyWidth / 2); + } return x; } @@ -131,31 +172,33 @@ public class MiniKeyboardBuilder { public int getRowFlags(int row) { int rowFlags = 0; if (row == 0) rowFlags |= Keyboard.EDGE_TOP; - if (isLastRow(row)) rowFlags |= Keyboard.EDGE_BOTTOM; + if (isTopRow(row)) rowFlags |= Keyboard.EDGE_BOTTOM; return rowFlags; } - private boolean isLastRow(int rowCount) { + private boolean isTopRow(int rowCount) { return rowCount == mNumRows - 1; } } - public MiniKeyboardBuilder(KeyboardView view, int layoutTemplateResId, Key popupKey) { + public MiniKeyboardBuilder(KeyboardView view, int layoutTemplateResId, Key parentKey, + Keyboard parentKeyboard) { final Context context = view.getContext(); mRes = context.getResources(); final MiniKeyboard keyboard = new MiniKeyboard(context, layoutTemplateResId, null); mKeyboard = keyboard; - mPopupCharacters = popupKey.mPopupCharacters; + mPopupCharacters = parentKey.mPopupCharacters; final int keyWidth = getMaxKeyWidth(view, mPopupCharacters, keyboard.getKeyWidth()); final MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams( - mPopupCharacters.length, popupKey.mMaxPopupColumn, - keyWidth, keyboard.getRowHeight(), - popupKey.mX + (popupKey.mWidth + popupKey.mGap) / 2 - keyWidth / 2, + mPopupCharacters.length, parentKey.mMaxPopupColumn, + keyWidth, parentKeyboard.getRowHeight(), + parentKey.mX + (parentKey.mWidth + parentKey.mGap) / 2 - keyWidth / 2, view.getMeasuredWidth()); mParams = params; - keyboard.setHeight(params.mNumRows * params.mRowHeight - keyboard.getVerticalGap()); + keyboard.setRowHeight(params.mRowHeight); + keyboard.setHeight(params.mNumRows * params.mRowHeight); keyboard.setMinWidth(params.mNumColumns * params.mKeyWidth); keyboard.setDefaultCoordX(params.getDefaultKeyCoordX() + params.mKeyWidth / 2); } @@ -194,7 +237,7 @@ public class MiniKeyboardBuilder { final CharSequence label = mPopupCharacters[n]; final int row = n / params.mNumColumns; final Key key = new Key(mRes, keyboard, label, params.getX(n, row), params.getY(row), - params.mKeyWidth, params.getRowFlags(row)); + params.mKeyWidth, params.mRowHeight, params.getRowFlags(row)); keys.add(key); } return keyboard; diff --git a/java/src/com/android/inputmethod/keyboard/MiniKeyboardKeyDetector.java b/java/src/com/android/inputmethod/keyboard/MiniKeyboardKeyDetector.java index a8750d378..1243f6f37 100644 --- a/java/src/com/android/inputmethod/keyboard/MiniKeyboardKeyDetector.java +++ b/java/src/com/android/inputmethod/keyboard/MiniKeyboardKeyDetector.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/keyboard/ModifierKeyState.java b/java/src/com/android/inputmethod/keyboard/ModifierKeyState.java index f215db876..ebbc79a9e 100644 --- a/java/src/com/android/inputmethod/keyboard/ModifierKeyState.java +++ b/java/src/com/android/inputmethod/keyboard/ModifierKeyState.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/keyboard/PointerTracker.java b/java/src/com/android/inputmethod/keyboard/PointerTracker.java index 746857819..4b3fe8b8b 100644 --- a/java/src/com/android/inputmethod/keyboard/PointerTracker.java +++ b/java/src/com/android/inputmethod/keyboard/PointerTracker.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/keyboard/PointerTrackerKeyState.java b/java/src/com/android/inputmethod/keyboard/PointerTrackerKeyState.java index a62ed96a3..64ba80a04 100644 --- a/java/src/com/android/inputmethod/keyboard/PointerTrackerKeyState.java +++ b/java/src/com/android/inputmethod/keyboard/PointerTrackerKeyState.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/keyboard/PointerTrackerQueue.java b/java/src/com/android/inputmethod/keyboard/PointerTrackerQueue.java index 928f3cdc1..01d9b5d2c 100644 --- a/java/src/com/android/inputmethod/keyboard/PointerTrackerQueue.java +++ b/java/src/com/android/inputmethod/keyboard/PointerTrackerQueue.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/keyboard/PopupCharactersParser.java b/java/src/com/android/inputmethod/keyboard/PopupCharactersParser.java index 32c25801d..ff78ee5c9 100644 --- a/java/src/com/android/inputmethod/keyboard/PopupCharactersParser.java +++ b/java/src/com/android/inputmethod/keyboard/PopupCharactersParser.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/keyboard/ProximityInfo.java b/java/src/com/android/inputmethod/keyboard/ProximityInfo.java index 80d6de952..33acc6907 100644 --- a/java/src/com/android/inputmethod/keyboard/ProximityInfo.java +++ b/java/src/com/android/inputmethod/keyboard/ProximityInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011 Google Inc. + * Copyright (C) 2011 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/keyboard/ProximityKeyDetector.java b/java/src/com/android/inputmethod/keyboard/ProximityKeyDetector.java index 87f3e1497..e2ff8c48e 100644 --- a/java/src/com/android/inputmethod/keyboard/ProximityKeyDetector.java +++ b/java/src/com/android/inputmethod/keyboard/ProximityKeyDetector.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/keyboard/Row.java b/java/src/com/android/inputmethod/keyboard/Row.java index 3618c0448..40d7e1472 100644 --- a/java/src/com/android/inputmethod/keyboard/Row.java +++ b/java/src/com/android/inputmethod/keyboard/Row.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/keyboard/ShiftKeyState.java b/java/src/com/android/inputmethod/keyboard/ShiftKeyState.java index 9229208a9..ba15624f0 100644 --- a/java/src/com/android/inputmethod/keyboard/ShiftKeyState.java +++ b/java/src/com/android/inputmethod/keyboard/ShiftKeyState.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/keyboard/SlidingLocaleDrawable.java b/java/src/com/android/inputmethod/keyboard/SlidingLocaleDrawable.java index 41f8c2a7c..ad8b0d623 100644 --- a/java/src/com/android/inputmethod/keyboard/SlidingLocaleDrawable.java +++ b/java/src/com/android/inputmethod/keyboard/SlidingLocaleDrawable.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/keyboard/SwipeTracker.java b/java/src/com/android/inputmethod/keyboard/SwipeTracker.java index 730cdc390..975b13b50 100644 --- a/java/src/com/android/inputmethod/keyboard/SwipeTracker.java +++ b/java/src/com/android/inputmethod/keyboard/SwipeTracker.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/latin/AutoDictionary.java b/java/src/com/android/inputmethod/latin/AutoDictionary.java index a00b0915c..54c6f309c 100644 --- a/java/src/com/android/inputmethod/latin/AutoDictionary.java +++ b/java/src/com/android/inputmethod/latin/AutoDictionary.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/latin/EditingUtils.java b/java/src/com/android/inputmethod/latin/EditingUtils.java index 0ca06ddfc..90c250dcb 100644 --- a/java/src/com/android/inputmethod/latin/EditingUtils.java +++ b/java/src/com/android/inputmethod/latin/EditingUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009 Google Inc. + * Copyright (C) 2009 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/latin/InputLanguageSelection.java b/java/src/com/android/inputmethod/latin/InputLanguageSelection.java index 5587c685f..b58a57e42 100644 --- a/java/src/com/android/inputmethod/latin/InputLanguageSelection.java +++ b/java/src/com/android/inputmethod/latin/InputLanguageSelection.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008-2009 Google Inc. + * Copyright (C) 2008-2009 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/latin/LanguageSwitcher.java b/java/src/com/android/inputmethod/latin/LanguageSwitcher.java index 6faf7f95e..2dd3038f9 100644 --- a/java/src/com/android/inputmethod/latin/LanguageSwitcher.java +++ b/java/src/com/android/inputmethod/latin/LanguageSwitcher.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/latin/UserBigramDictionary.java b/java/src/com/android/inputmethod/latin/UserBigramDictionary.java index 4750fb991..656e6f8e0 100644 --- a/java/src/com/android/inputmethod/latin/UserBigramDictionary.java +++ b/java/src/com/android/inputmethod/latin/UserBigramDictionary.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/voice/FieldContext.java b/java/src/com/android/inputmethod/voice/FieldContext.java index dfdfbaa9f..95c7f5be0 100644 --- a/java/src/com/android/inputmethod/voice/FieldContext.java +++ b/java/src/com/android/inputmethod/voice/FieldContext.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009 Google Inc. + * Copyright (C) 2009 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/voice/Hints.java b/java/src/com/android/inputmethod/voice/Hints.java index d11d3b042..f5689092f 100644 --- a/java/src/com/android/inputmethod/voice/Hints.java +++ b/java/src/com/android/inputmethod/voice/Hints.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009 Google Inc. + * Copyright (C) 2009 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/voice/RecognitionView.java b/java/src/com/android/inputmethod/voice/RecognitionView.java index 95a79f463..d26a877d5 100644 --- a/java/src/com/android/inputmethod/voice/RecognitionView.java +++ b/java/src/com/android/inputmethod/voice/RecognitionView.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009 Google Inc. + * Copyright (C) 2009 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/voice/SettingsUtil.java b/java/src/com/android/inputmethod/voice/SettingsUtil.java index 4d746e120..372e8d6da 100644 --- a/java/src/com/android/inputmethod/voice/SettingsUtil.java +++ b/java/src/com/android/inputmethod/voice/SettingsUtil.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009 Google Inc. + * Copyright (C) 2009 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/voice/SoundIndicator.java b/java/src/com/android/inputmethod/voice/SoundIndicator.java index 543290b32..40b68996a 100644 --- a/java/src/com/android/inputmethod/voice/SoundIndicator.java +++ b/java/src/com/android/inputmethod/voice/SoundIndicator.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011 Google Inc. + * Copyright (C) 2011 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/voice/VoiceIMEConnector.java b/java/src/com/android/inputmethod/voice/VoiceIMEConnector.java index 105656fe0..a244c9e41 100644 --- a/java/src/com/android/inputmethod/voice/VoiceIMEConnector.java +++ b/java/src/com/android/inputmethod/voice/VoiceIMEConnector.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Google Inc. + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/voice/VoiceInput.java b/java/src/com/android/inputmethod/voice/VoiceInput.java index 2df9e8588..392eea364 100644 --- a/java/src/com/android/inputmethod/voice/VoiceInput.java +++ b/java/src/com/android/inputmethod/voice/VoiceInput.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009 Google Inc. + * Copyright (C) 2009 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/voice/VoiceInputLogger.java b/java/src/com/android/inputmethod/voice/VoiceInputLogger.java index 3e65434a2..07f2bd1c5 100644 --- a/java/src/com/android/inputmethod/voice/VoiceInputLogger.java +++ b/java/src/com/android/inputmethod/voice/VoiceInputLogger.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008 Google Inc. + * Copyright (C) 2008 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/voice/WaveformImage.java b/java/src/com/android/inputmethod/voice/WaveformImage.java index 8bac669fc..b0ea99b79 100644 --- a/java/src/com/android/inputmethod/voice/WaveformImage.java +++ b/java/src/com/android/inputmethod/voice/WaveformImage.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008-2009 Google Inc. + * Copyright (C) 2008-2009 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/java/src/com/android/inputmethod/voice/Whitelist.java b/java/src/com/android/inputmethod/voice/Whitelist.java index f4c24de0c..adbd59135 100644 --- a/java/src/com/android/inputmethod/voice/Whitelist.java +++ b/java/src/com/android/inputmethod/voice/Whitelist.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009 Google Inc. + * Copyright (C) 2009 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of diff --git a/tests/src/com/android/inputmethod/keyboard/MiniKeyboardBuilderTests.java b/tests/src/com/android/inputmethod/keyboard/MiniKeyboardBuilderTests.java index 7e3106d7f..600342a7c 100644 --- a/tests/src/com/android/inputmethod/keyboard/MiniKeyboardBuilderTests.java +++ b/tests/src/com/android/inputmethod/keyboard/MiniKeyboardBuilderTests.java @@ -25,6 +25,16 @@ public class MiniKeyboardBuilderTests extends AndroidTestCase { private static final int WIDTH = 10; private static final int HEIGHT = 10; + private static final int KEYBOARD_WIDTH = WIDTH * 10; + private static final int XPOS_L0 = WIDTH * 0; + private static final int XPOS_L1 = WIDTH * 1; + private static final int XPOS_L2 = WIDTH * 2; + private static final int XPOS_M0 = WIDTH * 5; + private static final int XPOS_R3 = WIDTH * 6; + private static final int XPOS_R2 = WIDTH * 7; + private static final int XPOS_R1 = WIDTH * 8; + private static final int XPOS_R0 = WIDTH * 9; + @Override protected void setUp() throws Exception { super.setUp(); @@ -33,9 +43,8 @@ public class MiniKeyboardBuilderTests extends AndroidTestCase { public void testLayoutError() { MiniKeyboardLayoutParams params = null; try { - params = new MiniKeyboardLayoutParams( - 10, MAX_COLUMNS + 1, WIDTH, HEIGHT, - WIDTH * 2, WIDTH * MAX_COLUMNS); + params = new MiniKeyboardLayoutParams(10, MAX_COLUMNS + 1, WIDTH, HEIGHT, WIDTH * 2, + WIDTH * MAX_COLUMNS); fail("Should throw IllegalArgumentException"); } catch (IllegalArgumentException e) { // Too small keyboard to hold mini keyboard. @@ -48,39 +57,198 @@ public class MiniKeyboardBuilderTests extends AndroidTestCase { // "[1]" is the default key. // [1] - public void testLayout1Key() { - MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams( - 1, MAX_COLUMNS, WIDTH, HEIGHT, - WIDTH * 5, WIDTH * 10); - assertEquals("1 key columns", 1, params.mNumColumns); - assertEquals("1 key rows", 1, params.mNumRows); - assertEquals("1 key left", 0, params.mLeftKeys); - assertEquals("1 key right", 1, params.mRightKeys); - assertEquals("1 key [1]", 0, params.getColumnPos(0)); - assertEquals("1 key centering", false, params.mTopRowNeedsCentering); - assertEquals("1 key default", 0, params.getDefaultKeyCoordX()); + public void testLayout1KeyM0() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(1, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_M0, KEYBOARD_WIDTH); + assertEquals("1 key M0 columns", 1, params.mNumColumns); + assertEquals("1 key M0 rows", 1, params.mNumRows); + assertEquals("1 key M0 left", 0, params.mLeftKeys); + assertEquals("1 key M0 right", 1, params.mRightKeys); + assertEquals("1 key M0 [1]", 0, params.getColumnPos(0)); + assertEquals("1 key M0 adjust", 0, params.mTopRowAdjustment); + assertEquals("1 key M0 default", WIDTH * 0, params.getDefaultKeyCoordX()); + } + + // |[1] + public void testLayout1KeyL0() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(1, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_L0, KEYBOARD_WIDTH); + assertEquals("1 key L0 columns", 1, params.mNumColumns); + assertEquals("1 key L0 rows", 1, params.mNumRows); + assertEquals("1 key L0 left", 0, params.mLeftKeys); + assertEquals("1 key L0 right", 1, params.mRightKeys); + assertEquals("1 key L0 [1]", 0, params.getColumnPos(0)); + assertEquals("1 key L0 adjust", 0, params.mTopRowAdjustment); + assertEquals("1 key L0 default", WIDTH * 0, params.getDefaultKeyCoordX()); + } + + // |___ [1] + public void testLayout1KeyL1() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(1, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_L1, KEYBOARD_WIDTH); + assertEquals("1 key L1 columns", 1, params.mNumColumns); + assertEquals("1 key L1 rows", 1, params.mNumRows); + assertEquals("1 key L1 left", 0, params.mLeftKeys); + assertEquals("1 key L1 right", 1, params.mRightKeys); + assertEquals("1 key L1 [1]", 0, params.getColumnPos(0)); + assertEquals("1 key L1 adjust", 0, params.mTopRowAdjustment); + assertEquals("1 key L1 default", WIDTH * 0, params.getDefaultKeyCoordX()); + } + + // |___ ___ [1] + public void testLayout1KeyL2() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(1, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_L2, KEYBOARD_WIDTH); + assertEquals("1 key L2 columns", 1, params.mNumColumns); + assertEquals("1 key L2 rows", 1, params.mNumRows); + assertEquals("1 key L2 left", 0, params.mLeftKeys); + assertEquals("1 key L2 right", 1, params.mRightKeys); + assertEquals("1 key L2 [1]", 0, params.getColumnPos(0)); + assertEquals("1 key L2 adjust", 0, params.mTopRowAdjustment); + assertEquals("1 key L2 default", WIDTH * 0, params.getDefaultKeyCoordX()); + } + + // [1]| + public void testLayout1KeyR0() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(1, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_R0, KEYBOARD_WIDTH); + assertEquals("1 key R0 columns", 1, params.mNumColumns); + assertEquals("1 key R0 rows", 1, params.mNumRows); + assertEquals("1 key R0 left", 0, params.mLeftKeys); + assertEquals("1 key R0 right", 1, params.mRightKeys); + assertEquals("1 key R0 [1]", 0, params.getColumnPos(0)); + assertEquals("1 key R0 adjust", 0, params.mTopRowAdjustment); + assertEquals("1 key R0 default", WIDTH * 0, params.getDefaultKeyCoordX()); + } + + // [1] ___| + public void testLayout1KeyR1() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(1, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_R1, KEYBOARD_WIDTH); + assertEquals("1 key R1 columns", 1, params.mNumColumns); + assertEquals("1 key R1 rows", 1, params.mNumRows); + assertEquals("1 key R1 left", 0, params.mLeftKeys); + assertEquals("1 key R1 right", 1, params.mRightKeys); + assertEquals("1 key R1 [1]", 0, params.getColumnPos(0)); + assertEquals("1 key R1 adjust", 0, params.mTopRowAdjustment); + assertEquals("1 key R1 default", WIDTH * 0, params.getDefaultKeyCoordX()); + } + + // [1] ___ ___| + public void testLayout1KeyR2() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(1, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_R2, KEYBOARD_WIDTH); + assertEquals("1 key R2 columns", 1, params.mNumColumns); + assertEquals("1 key R2 rows", 1, params.mNumRows); + assertEquals("1 key R2 left", 0, params.mLeftKeys); + assertEquals("1 key R2 right", 1, params.mRightKeys); + assertEquals("1 key R2 [1]", 0, params.getColumnPos(0)); + assertEquals("1 key R2 adjust", 0, params.mTopRowAdjustment); + assertEquals("1 key R2 default", WIDTH * 0, params.getDefaultKeyCoordX()); } // [1] [2] - public void testLayout2Key() { - MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams( - 2, MAX_COLUMNS, WIDTH, HEIGHT, - WIDTH * 5, WIDTH * 10); - assertEquals("2 key columns", 2, params.mNumColumns); - assertEquals("2 key rows", 1, params.mNumRows); - assertEquals("2 key left", 0, params.mLeftKeys); - assertEquals("2 key right", 2, params.mRightKeys); - assertEquals("2 key [1]", 0, params.getColumnPos(0)); - assertEquals("2 key [2]", 1, params.getColumnPos(1)); - assertEquals("2 key centering", false, params.mTopRowNeedsCentering); - assertEquals("2 key default", 0, params.getDefaultKeyCoordX()); + public void testLayout2KeyM0() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(2, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_M0, KEYBOARD_WIDTH); + assertEquals("2 key M0 columns", 2, params.mNumColumns); + assertEquals("2 key M0 rows", 1, params.mNumRows); + assertEquals("2 key M0 left", 0, params.mLeftKeys); + assertEquals("2 key M0 right", 2, params.mRightKeys); + assertEquals("2 key M0 [1]", 0, params.getColumnPos(0)); + assertEquals("2 key M0 [2]", 1, params.getColumnPos(1)); + assertEquals("2 key M0 adjust", 0, params.mTopRowAdjustment); + assertEquals("2 key M0 default", WIDTH * 0, params.getDefaultKeyCoordX()); + } + + // |[1] [2] + public void testLayout2KeyL0() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(2, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_L0, KEYBOARD_WIDTH); + assertEquals("2 key L0 columns", 2, params.mNumColumns); + assertEquals("2 key L0 rows", 1, params.mNumRows); + assertEquals("2 key L0 left", 0, params.mLeftKeys); + assertEquals("2 key L0 right", 2, params.mRightKeys); + assertEquals("2 key L0 [1]", 0, params.getColumnPos(0)); + assertEquals("2 key L0 [2]", 1, params.getColumnPos(1)); + assertEquals("2 key L0 adjust", 0, params.mTopRowAdjustment); + assertEquals("2 key L0 default", WIDTH * 0, params.getDefaultKeyCoordX()); + } + + // |___ [1] [2] + public void testLayout2KeyL1() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(2, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_L1, KEYBOARD_WIDTH); + assertEquals("2 key L1 columns", 2, params.mNumColumns); + assertEquals("2 key L1 rows", 1, params.mNumRows); + assertEquals("2 key L1 left", 0, params.mLeftKeys); + assertEquals("2 key L1 right", 2, params.mRightKeys); + assertEquals("2 key L1 [1]", 0, params.getColumnPos(0)); + assertEquals("2 key L1 [2]", 1, params.getColumnPos(1)); + assertEquals("2 key L1 adjust", 0, params.mTopRowAdjustment); + assertEquals("2 key L1 default", WIDTH * 0, params.getDefaultKeyCoordX()); + } + + // |___ ___ [1] [2] + public void testLayout2KeyL2() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(2, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_L2, KEYBOARD_WIDTH); + assertEquals("2 key L2 columns", 2, params.mNumColumns); + assertEquals("2 key L2 rows", 1, params.mNumRows); + assertEquals("2 key L2 left", 0, params.mLeftKeys); + assertEquals("2 key L2 right", 2, params.mRightKeys); + assertEquals("2 key L2 [1]", 0, params.getColumnPos(0)); + assertEquals("2 key L2 [2]", 1, params.getColumnPos(1)); + assertEquals("2 key L2 adjust", 0, params.mTopRowAdjustment); + assertEquals("2 key L2 default", WIDTH * 0, params.getDefaultKeyCoordX()); + } + + // [2] [1]| + public void testLayout2KeyR0() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(2, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_R0, KEYBOARD_WIDTH); + assertEquals("2 key R0 columns", 2, params.mNumColumns); + assertEquals("2 key R0 rows", 1, params.mNumRows); + assertEquals("2 key R0 left", 1, params.mLeftKeys); + assertEquals("2 key R0 right", 1, params.mRightKeys); + assertEquals("2 key R0 [1]", 0, params.getColumnPos(0)); + assertEquals("2 key R0 [2]", -1, params.getColumnPos(1)); + assertEquals("2 key R0 adjust", 0, params.mTopRowAdjustment); + assertEquals("2 key R0 default", WIDTH * 1, params.getDefaultKeyCoordX()); + } + + // [2] [1] ___| + public void testLayout2KeyR1() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(2, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_R1, KEYBOARD_WIDTH); + assertEquals("2 key R1 columns", 2, params.mNumColumns); + assertEquals("2 key R1 rows", 1, params.mNumRows); + assertEquals("2 key R1 left", 1, params.mLeftKeys); + assertEquals("2 key R1 right", 1, params.mRightKeys); + assertEquals("2 key R1 [1]", 0, params.getColumnPos(0)); + assertEquals("2 key R1 [2]", -1, params.getColumnPos(1)); + assertEquals("2 key R1 adjust", 0, params.mTopRowAdjustment); + assertEquals("2 key R1 default", WIDTH * 1, params.getDefaultKeyCoordX()); + } + + // [1] [2] ___ ___| + public void testLayout2KeyR2() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(2, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_R2, KEYBOARD_WIDTH); + assertEquals("2 key R2 columns", 2, params.mNumColumns); + assertEquals("2 key R2 rows", 1, params.mNumRows); + assertEquals("2 key R2 left", 0, params.mLeftKeys); + assertEquals("2 key R2 right", 2, params.mRightKeys); + assertEquals("2 key R2 [1]", 0, params.getColumnPos(0)); + assertEquals("2 key R2 [2]", 1, params.getColumnPos(1)); + assertEquals("2 key R2 adjust", 0, params.mTopRowAdjustment); + assertEquals("2 key R2 default", WIDTH * 0, params.getDefaultKeyCoordX()); } // [3] [1] [2] - public void testLayout3Key() { - MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams( - 3, MAX_COLUMNS, WIDTH, HEIGHT, - WIDTH * 5, WIDTH * 10); + public void testLayout3KeyM0() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(3, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_M0, KEYBOARD_WIDTH); assertEquals("3 key columns", 3, params.mNumColumns); assertEquals("3 key rows", 1, params.mNumRows); assertEquals("3 key left", 1, params.mLeftKeys); @@ -88,15 +256,104 @@ public class MiniKeyboardBuilderTests extends AndroidTestCase { assertEquals("3 key [1]", 0, params.getColumnPos(0)); assertEquals("3 key [2]", 1, params.getColumnPos(1)); assertEquals("3 key [3]", -1, params.getColumnPos(2)); - assertEquals("3 key centering", false, params.mTopRowNeedsCentering); - assertEquals("3 key default", WIDTH, params.getDefaultKeyCoordX()); + assertEquals("3 key adjust", 0, params.mTopRowAdjustment); + assertEquals("3 key default", WIDTH * 1, params.getDefaultKeyCoordX()); + } + + // |[1] [2] [3] + public void testLayout3KeyL0() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(3, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_L0, KEYBOARD_WIDTH); + assertEquals("3 key L0 columns", 3, params.mNumColumns); + assertEquals("3 key L0 rows", 1, params.mNumRows); + assertEquals("3 key L0 left", 0, params.mLeftKeys); + assertEquals("3 key L0 right", 3, params.mRightKeys); + assertEquals("3 key L0 [1]", 0, params.getColumnPos(0)); + assertEquals("3 key L0 [2]", 1, params.getColumnPos(1)); + assertEquals("3 key L0 [3]", 2, params.getColumnPos(2)); + assertEquals("3 key L0 adjust", 0, params.mTopRowAdjustment); + assertEquals("3 key L0 default", WIDTH * 0, params.getDefaultKeyCoordX()); + } + + // |___ [1] [2] [3] + public void testLayout3KeyL1() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(3, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_L1, KEYBOARD_WIDTH); + assertEquals("3 key L1 columns", 3, params.mNumColumns); + assertEquals("3 key L1 rows", 1, params.mNumRows); + assertEquals("3 key L1 left", 0, params.mLeftKeys); + assertEquals("3 key L1 right", 3, params.mRightKeys); + assertEquals("3 key L1 [1]", 0, params.getColumnPos(0)); + assertEquals("3 key L1 [2]", 1, params.getColumnPos(1)); + assertEquals("3 key L1 [3]", 2, params.getColumnPos(2)); + assertEquals("3 key L1 adjust", 0, params.mTopRowAdjustment); + assertEquals("3 key L1 default", WIDTH * 0, params.getDefaultKeyCoordX()); + } + + // |___ ___ [3] [1] [2] + public void testLayout3KeyL2() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(3, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_L2, KEYBOARD_WIDTH); + assertEquals("3 key L2 columns", 3, params.mNumColumns); + assertEquals("3 key L2 rows", 1, params.mNumRows); + assertEquals("3 key L2 left", 1, params.mLeftKeys); + assertEquals("3 key L2 right", 2, params.mRightKeys); + assertEquals("3 key L2 [1]", 0, params.getColumnPos(0)); + assertEquals("3 key L2 [2]", 1, params.getColumnPos(1)); + assertEquals("3 key L2 [3]", -1, params.getColumnPos(2)); + assertEquals("3 key L2 adjust", 0, params.mTopRowAdjustment); + assertEquals("3 key L2 default", WIDTH * 1, params.getDefaultKeyCoordX()); + } + + // [3] [2] [1]| + public void testLayout3KeyR0() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(3, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_R0, KEYBOARD_WIDTH); + assertEquals("3 key R0 columns", 3, params.mNumColumns); + assertEquals("3 key R0 rows", 1, params.mNumRows); + assertEquals("3 key R0 left", 2, params.mLeftKeys); + assertEquals("3 key R0 right", 1, params.mRightKeys); + assertEquals("3 key R0 [1]", 0, params.getColumnPos(0)); + assertEquals("3 key R0 [2]", -1, params.getColumnPos(1)); + assertEquals("3 key R0 [3]", -2, params.getColumnPos(2)); + assertEquals("3 key R0 adjust", 0, params.mTopRowAdjustment); + assertEquals("3 key R0 default", WIDTH * 2, params.getDefaultKeyCoordX()); + } + + // [3] [2] [1] ___| + public void testLayout3KeyR1() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(3, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_R1, KEYBOARD_WIDTH); + assertEquals("3 key R1 columns", 3, params.mNumColumns); + assertEquals("3 key R1 rows", 1, params.mNumRows); + assertEquals("3 key R1 left", 2, params.mLeftKeys); + assertEquals("3 key R1 right", 1, params.mRightKeys); + assertEquals("3 key R1 [1]", 0, params.getColumnPos(0)); + assertEquals("3 key R1 [2]", -1, params.getColumnPos(1)); + assertEquals("3 key R1 [3]", -2, params.getColumnPos(2)); + assertEquals("3 key R1 adjust", 0, params.mTopRowAdjustment); + assertEquals("3 key R1 default", WIDTH * 2, params.getDefaultKeyCoordX()); + } + + // [3] [1] [2] ___ ___| + public void testLayout3KeyR2() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(3, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_R2, KEYBOARD_WIDTH); + assertEquals("3 key R2 columns", 3, params.mNumColumns); + assertEquals("3 key R2 rows", 1, params.mNumRows); + assertEquals("3 key R2 left", 1, params.mLeftKeys); + assertEquals("3 key R2 right", 2, params.mRightKeys); + assertEquals("3 key R2 [1]", 0, params.getColumnPos(0)); + assertEquals("3 key R2 [2]", 1, params.getColumnPos(1)); + assertEquals("3 key R2 [3]", -1, params.getColumnPos(2)); + assertEquals("3 key R2 adjust", 0, params.mTopRowAdjustment); + assertEquals("3 key R2 default", WIDTH * 1, params.getDefaultKeyCoordX()); } // [3] [1] [2] [4] - public void testLayout4Key() { - MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams( - 4, MAX_COLUMNS, WIDTH, HEIGHT, - WIDTH * 5, WIDTH * 10); + public void testLayout4KeyM0() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(4, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_M0, KEYBOARD_WIDTH); assertEquals("4 key columns", 4, params.mNumColumns); assertEquals("4 key rows", 1, params.mNumRows); assertEquals("4 key left", 1, params.mLeftKeys); @@ -105,15 +362,110 @@ public class MiniKeyboardBuilderTests extends AndroidTestCase { assertEquals("4 key [2]", 1, params.getColumnPos(1)); assertEquals("4 key [3]", -1, params.getColumnPos(2)); assertEquals("4 key [4]", 2, params.getColumnPos(3)); - assertEquals("4 key centering", false, params.mTopRowNeedsCentering); - assertEquals("4 key default", WIDTH, params.getDefaultKeyCoordX()); + assertEquals("4 key adjust", 0, params.mTopRowAdjustment); + assertEquals("4 key default", WIDTH * 1, params.getDefaultKeyCoordX()); + } + + // |[1] [2] [3] [4] + public void testLayout4KeyL0() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(4, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_L0, KEYBOARD_WIDTH); + assertEquals("4 key L0 columns", 4, params.mNumColumns); + assertEquals("4 key L0 rows", 1, params.mNumRows); + assertEquals("4 key L0 left", 0, params.mLeftKeys); + assertEquals("4 key L0 right", 4, params.mRightKeys); + assertEquals("4 key L0 [1]", 0, params.getColumnPos(0)); + assertEquals("4 key L0 [2]", 1, params.getColumnPos(1)); + assertEquals("4 key L0 [3]", 2, params.getColumnPos(2)); + assertEquals("4 key L0 [4]", 3, params.getColumnPos(3)); + assertEquals("4 key L0 adjust", 0, params.mTopRowAdjustment); + assertEquals("4 key L0 default", WIDTH * 0, params.getDefaultKeyCoordX()); + } + + // |___ [1] [2] [3] [4] + public void testLayout4KeyL1() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(4, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_L1, KEYBOARD_WIDTH); + assertEquals("4 key L1 columns", 4, params.mNumColumns); + assertEquals("4 key L1 rows", 1, params.mNumRows); + assertEquals("4 key L1 left", 0, params.mLeftKeys); + assertEquals("4 key L1 right", 4, params.mRightKeys); + assertEquals("4 key L1 [1]", 0, params.getColumnPos(0)); + assertEquals("4 key L1 [2]", 1, params.getColumnPos(1)); + assertEquals("4 key L1 [3]", 2, params.getColumnPos(2)); + assertEquals("4 key L1 [4]", 3, params.getColumnPos(3)); + assertEquals("4 key L1 adjust", 0, params.mTopRowAdjustment); + assertEquals("4 key L1 default", WIDTH * 0, params.getDefaultKeyCoordX()); + } + + // |___ ___ [3] [1] [2] [4] + public void testLayout4KeyL2() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(4, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_L2, KEYBOARD_WIDTH); + assertEquals("4 key L2 columns", 4, params.mNumColumns); + assertEquals("4 key L2 rows", 1, params.mNumRows); + assertEquals("4 key L2 left", 1, params.mLeftKeys); + assertEquals("4 key L2 right", 3, params.mRightKeys); + assertEquals("4 key L2 [1]", 0, params.getColumnPos(0)); + assertEquals("4 key L2 [2]", 1, params.getColumnPos(1)); + assertEquals("4 key L2 [3]", -1, params.getColumnPos(2)); + assertEquals("4 key L2 [4]", 2, params.getColumnPos(3)); + assertEquals("4 key L2 adjust", 0, params.mTopRowAdjustment); + assertEquals("4 key L2 default", WIDTH * 1, params.getDefaultKeyCoordX()); + } + + // [4] [3] [2] [1]| + public void testLayout4KeyR0() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(4, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_R0, KEYBOARD_WIDTH); + assertEquals("4 key R0 columns", 4, params.mNumColumns); + assertEquals("4 key R0 rows", 1, params.mNumRows); + assertEquals("4 key R0 left", 3, params.mLeftKeys); + assertEquals("4 key R0 right", 1, params.mRightKeys); + assertEquals("4 key R0 [1]", 0, params.getColumnPos(0)); + assertEquals("4 key R0 [2]", -1, params.getColumnPos(1)); + assertEquals("4 key R0 [3]", -2, params.getColumnPos(2)); + assertEquals("4 key R0 [4]", -3, params.getColumnPos(3)); + assertEquals("4 key R0 adjust", 0, params.mTopRowAdjustment); + assertEquals("4 key R0 default", WIDTH * 3, params.getDefaultKeyCoordX()); + } + + // [4] [3] [2] [1] ___| + public void testLayout4KeyR1() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(4, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_R1, KEYBOARD_WIDTH); + assertEquals("4 key R1 columns", 4, params.mNumColumns); + assertEquals("4 key R1 rows", 1, params.mNumRows); + assertEquals("4 key R1 left", 3, params.mLeftKeys); + assertEquals("4 key R1 right", 1, params.mRightKeys); + assertEquals("4 key R1 [1]", 0, params.getColumnPos(0)); + assertEquals("4 key R1 [2]", -1, params.getColumnPos(1)); + assertEquals("4 key R1 [3]", -2, params.getColumnPos(2)); + assertEquals("4 key R1 [4]", -3, params.getColumnPos(3)); + assertEquals("4 key R1 adjust", 0, params.mTopRowAdjustment); + assertEquals("4 key R1 default", WIDTH * 3, params.getDefaultKeyCoordX()); + } + + // [4] [3] [1] [2] ___ ___| + public void testLayout4KeyR2() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(4, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_R2, KEYBOARD_WIDTH); + assertEquals("4 key R2 columns", 4, params.mNumColumns); + assertEquals("4 key R2 rows", 1, params.mNumRows); + assertEquals("4 key R2 left", 2, params.mLeftKeys); + assertEquals("4 key R2 right", 2, params.mRightKeys); + assertEquals("4 key R2 [1]", 0, params.getColumnPos(0)); + assertEquals("4 key R2 [2]", 1, params.getColumnPos(1)); + assertEquals("4 key R2 [3]", -1, params.getColumnPos(2)); + assertEquals("4 key R2 [4]", -2, params.getColumnPos(3)); + assertEquals("4 key R2 adjust", 0, params.mTopRowAdjustment); + assertEquals("4 key R2 default", WIDTH * 2, params.getDefaultKeyCoordX()); } // [5] [3] [1] [2] [4] - public void testLayout5Key() { - MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams( - 5, MAX_COLUMNS, WIDTH, HEIGHT, - WIDTH * 5, WIDTH * 10); + public void testLayout5KeyM0() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(5, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_M0, KEYBOARD_WIDTH); assertEquals("5 key columns", 5, params.mNumColumns); assertEquals("5 key rows", 1, params.mNumRows); assertEquals("5 key left", 2, params.mLeftKeys); @@ -123,190 +475,942 @@ public class MiniKeyboardBuilderTests extends AndroidTestCase { assertEquals("5 key [3]", -1, params.getColumnPos(2)); assertEquals("5 key [4]", 2, params.getColumnPos(3)); assertEquals("5 key [5]", -2, params.getColumnPos(4)); - assertEquals("5 key centering", false, params.mTopRowNeedsCentering); + assertEquals("5 key adjust", 0, params.mTopRowAdjustment); assertEquals("5 key default", WIDTH * 2, params.getDefaultKeyCoordX()); } - // [6] - // [5] [3] [1] [2] [4] - public void testLayout6Key() { - MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams( - 6, MAX_COLUMNS, WIDTH, HEIGHT, - WIDTH * 5, WIDTH * 10); - assertEquals("6 key columns", 5, params.mNumColumns); + // |[1] [2] [3] [4] [5] + public void testLayout5KeyL0() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(5, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_L0, KEYBOARD_WIDTH); + assertEquals("5 key L0 columns", 5, params.mNumColumns); + assertEquals("5 key L0 rows", 1, params.mNumRows); + assertEquals("5 key L0 left", 0, params.mLeftKeys); + assertEquals("5 key L0 right", 5, params.mRightKeys); + assertEquals("5 key L0 [1]", 0, params.getColumnPos(0)); + assertEquals("5 key L0 [2]", 1, params.getColumnPos(1)); + assertEquals("5 key L0 [3]", 2, params.getColumnPos(2)); + assertEquals("5 key L0 [4]", 3, params.getColumnPos(3)); + assertEquals("5 key L0 [5]", 4, params.getColumnPos(4)); + assertEquals("5 key L0 adjust", 0, params.mTopRowAdjustment); + assertEquals("5 key L0 default", WIDTH * 0, params.getDefaultKeyCoordX()); + } + + // |___ [1] [2] [3] [4] [5] + public void testLayout5KeyL1() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(5, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_L1, KEYBOARD_WIDTH); + assertEquals("5 key L1 columns", 5, params.mNumColumns); + assertEquals("5 key L1 rows", 1, params.mNumRows); + assertEquals("5 key L1 left", 0, params.mLeftKeys); + assertEquals("5 key L1 right", 5, params.mRightKeys); + assertEquals("5 key L1 [1]", 0, params.getColumnPos(0)); + assertEquals("5 key L1 [2]", 1, params.getColumnPos(1)); + assertEquals("5 key L1 [3]", 2, params.getColumnPos(2)); + assertEquals("5 key L1 [4]", 3, params.getColumnPos(3)); + assertEquals("5 key L1 [5]", 4, params.getColumnPos(4)); + assertEquals("5 key L1 adjust", 0, params.mTopRowAdjustment); + assertEquals("5 key L1 default", WIDTH * 0, params.getDefaultKeyCoordX()); + } + + // |___ ___ [3] [1] [2] [4] [5] + public void testLayout5KeyL2() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(5, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_L2, KEYBOARD_WIDTH); + assertEquals("5 key L2 columns", 5, params.mNumColumns); + assertEquals("5 key L2 rows", 1, params.mNumRows); + assertEquals("5 key L2 left", 1, params.mLeftKeys); + assertEquals("5 key L2 right", 4, params.mRightKeys); + assertEquals("5 key L2 [1]", 0, params.getColumnPos(0)); + assertEquals("5 key L2 [2]", 1, params.getColumnPos(1)); + assertEquals("5 key L2 [3]", -1, params.getColumnPos(2)); + assertEquals("5 key L2 [4]", 2, params.getColumnPos(3)); + assertEquals("5 key L2 [5]", 3, params.getColumnPos(4)); + assertEquals("5 key L2 adjust", 0, params.mTopRowAdjustment); + assertEquals("5 key L2 default", WIDTH * 1, params.getDefaultKeyCoordX()); + } + + // [5] [4] [3] [2] [1]| + public void testLayout5KeyR0() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(5, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_R0, KEYBOARD_WIDTH); + assertEquals("5 key R0 columns", 5, params.mNumColumns); + assertEquals("5 key R0 rows", 1, params.mNumRows); + assertEquals("5 key R0 left", 4, params.mLeftKeys); + assertEquals("5 key R0 right", 1, params.mRightKeys); + assertEquals("5 key R0 [1]", 0, params.getColumnPos(0)); + assertEquals("5 key R0 [2]", -1, params.getColumnPos(1)); + assertEquals("5 key R0 [3]", -2, params.getColumnPos(2)); + assertEquals("5 key R0 [4]", -3, params.getColumnPos(3)); + assertEquals("5 key R0 [5]", -4, params.getColumnPos(4)); + assertEquals("5 key R0 adjust", 0, params.mTopRowAdjustment); + assertEquals("5 key R0 default", WIDTH * 4, params.getDefaultKeyCoordX()); + } + + // [5] [4] [3] [2] [1] ___| + public void testLayout5KeyR1() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(5, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_R1, KEYBOARD_WIDTH); + assertEquals("5 key R1 columns", 5, params.mNumColumns); + assertEquals("5 key R1 rows", 1, params.mNumRows); + assertEquals("5 key R1 left", 4, params.mLeftKeys); + assertEquals("5 key R1 right", 1, params.mRightKeys); + assertEquals("5 key R1 [1]", 0, params.getColumnPos(0)); + assertEquals("5 key R1 [2]", -1, params.getColumnPos(1)); + assertEquals("5 key R1 [3]", -2, params.getColumnPos(2)); + assertEquals("5 key R1 [4]", -3, params.getColumnPos(3)); + assertEquals("5 key R1 [5]", -4, params.getColumnPos(4)); + assertEquals("5 key R1 adjust", 0, params.mTopRowAdjustment); + assertEquals("5 key R1 default", WIDTH * 4, params.getDefaultKeyCoordX()); + } + + // [5] [4] [3] [1] [2] ___ ___| + public void testLayout5KeyR2() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(5, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_R2, KEYBOARD_WIDTH); + assertEquals("5 key R2 columns", 5, params.mNumColumns); + assertEquals("5 key R2 rows", 1, params.mNumRows); + assertEquals("5 key R2 left", 3, params.mLeftKeys); + assertEquals("5 key R2 right", 2, params.mRightKeys); + assertEquals("5 key R2 [1]", 0, params.getColumnPos(0)); + assertEquals("5 key R2 [2]", 1, params.getColumnPos(1)); + assertEquals("5 key R2 [3]", -1, params.getColumnPos(2)); + assertEquals("5 key R2 [4]", -2, params.getColumnPos(3)); + assertEquals("5 key R2 [5]", -3, params.getColumnPos(4)); + assertEquals("5 key R2 adjust", 0, params.mTopRowAdjustment); + assertEquals("5 key R2 default", WIDTH * 3, params.getDefaultKeyCoordX()); + } + + // [6] [4] [5] + // [3] [1] [2] + public void testLayout6KeyM0() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(6, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_M0, KEYBOARD_WIDTH); + assertEquals("6 key columns", 3, params.mNumColumns); assertEquals("6 key rows", 2, params.mNumRows); - assertEquals("6 key left", 2, params.mLeftKeys); - assertEquals("6 key right", 3, params.mRightKeys); + assertEquals("6 key left", 1, params.mLeftKeys); + assertEquals("6 key right", 2, params.mRightKeys); assertEquals("6 key [1]", 0, params.getColumnPos(0)); assertEquals("6 key [2]", 1, params.getColumnPos(1)); assertEquals("6 key [3]", -1, params.getColumnPos(2)); - assertEquals("6 key [4]", 2, params.getColumnPos(3)); - assertEquals("6 key [5]", -2, params.getColumnPos(4)); - assertEquals("6 key [6]", 0, params.getColumnPos(5)); - assertEquals("6 key centering", false, params.mTopRowNeedsCentering); - assertEquals("6 key default", WIDTH * 2, params.getDefaultKeyCoordX()); + assertEquals("6 key [4]", 0, params.getColumnPos(3)); + assertEquals("6 key [5]", 1, params.getColumnPos(4)); + assertEquals("6 key [6]", -1, params.getColumnPos(5)); + assertEquals("6 key adjust", 0, params.mTopRowAdjustment); + assertEquals("6 key default", WIDTH * 1, params.getDefaultKeyCoordX()); } - // [6] [7] - // [5] [3] [1] [2] [4] - public void testLayout7Key() { - MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams( - 7, MAX_COLUMNS, WIDTH, HEIGHT, - WIDTH * 5, WIDTH * 10); - assertEquals("7 key columns", 5, params.mNumColumns); + // |[4] [5] [6] + // |[1] [2] [3] + public void testLayout6KeyL0() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(6, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_L0, KEYBOARD_WIDTH); + assertEquals("6 key L0 columns", 3, params.mNumColumns); + assertEquals("6 key L0 rows", 2, params.mNumRows); + assertEquals("6 key L0 left", 0, params.mLeftKeys); + assertEquals("6 key L0 right", 3, params.mRightKeys); + assertEquals("6 key L0 [1]", 0, params.getColumnPos(0)); + assertEquals("6 key L0 [2]", 1, params.getColumnPos(1)); + assertEquals("6 key L0 [3]", 2, params.getColumnPos(2)); + assertEquals("6 key L0 [4]", 0, params.getColumnPos(3)); + assertEquals("6 key L0 [5]", 1, params.getColumnPos(4)); + assertEquals("6 key L0 [6]", 2, params.getColumnPos(5)); + assertEquals("6 key L0 adjust", 0, params.mTopRowAdjustment); + assertEquals("6 key L0 default", WIDTH * 0, params.getDefaultKeyCoordX()); + } + + // |___ [4] [5] [6] + // |___ [1] [2] [3] + public void testLayout6KeyL1() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(6, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_L1, KEYBOARD_WIDTH); + assertEquals("6 key L1 columns", 3, params.mNumColumns); + assertEquals("6 key L1 rows", 2, params.mNumRows); + assertEquals("6 key L1 left", 0, params.mLeftKeys); + assertEquals("6 key L1 right", 3, params.mRightKeys); + assertEquals("6 key L1 [1]", 0, params.getColumnPos(0)); + assertEquals("6 key L1 [2]", 1, params.getColumnPos(1)); + assertEquals("6 key L1 [3]", 2, params.getColumnPos(2)); + assertEquals("6 key L1 [4]", 0, params.getColumnPos(3)); + assertEquals("6 key L1 [5]", 1, params.getColumnPos(4)); + assertEquals("6 key L1 [6]", 2, params.getColumnPos(5)); + assertEquals("6 key L1 adjust", 0, params.mTopRowAdjustment); + assertEquals("6 key L1 default", WIDTH * 0, params.getDefaultKeyCoordX()); + } + + // |___ ___ [6] [4] [5] + // |___ ___ [3] [1] [2] + public void testLayout6KeyL2() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(6, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_L2, KEYBOARD_WIDTH); + assertEquals("6 key L2 columns", 3, params.mNumColumns); + assertEquals("6 key L2 rows", 2, params.mNumRows); + assertEquals("6 key L2 left", 1, params.mLeftKeys); + assertEquals("6 key L2 right", 2, params.mRightKeys); + assertEquals("6 key L2 [1]", 0, params.getColumnPos(0)); + assertEquals("6 key L2 [2]", 1, params.getColumnPos(1)); + assertEquals("6 key L2 [3]", -1, params.getColumnPos(2)); + assertEquals("6 key L2 [4]", 0, params.getColumnPos(3)); + assertEquals("6 key L2 [5]", 1, params.getColumnPos(4)); + assertEquals("6 key L2 [6]", -1, params.getColumnPos(5)); + assertEquals("6 key L2 adjust", 0, params.mTopRowAdjustment); + assertEquals("6 key L2 default", WIDTH * 1, params.getDefaultKeyCoordX()); + } + + // [6] [5] [4]| + // [3] [2] [1]| + public void testLayout6KeyR0() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(6, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_R0, KEYBOARD_WIDTH); + assertEquals("6 key R0 columns", 3, params.mNumColumns); + assertEquals("6 key R0 rows", 2, params.mNumRows); + assertEquals("6 key R0 left", 2, params.mLeftKeys); + assertEquals("6 key R0 right", 1, params.mRightKeys); + assertEquals("6 key R0 [1]", 0, params.getColumnPos(0)); + assertEquals("6 key R0 [2]", -1, params.getColumnPos(1)); + assertEquals("6 key R0 [3]", -2, params.getColumnPos(2)); + assertEquals("6 key R0 [4]", 0, params.getColumnPos(3)); + assertEquals("6 key R0 [5]", -1, params.getColumnPos(4)); + assertEquals("6 key R0 [6]", -2, params.getColumnPos(5)); + assertEquals("6 key R0 adjust", 0, params.mTopRowAdjustment); + assertEquals("6 key R0 default", WIDTH * 2, params.getDefaultKeyCoordX()); + } + + // [6] [5] [4] ___| + // [3] [2] [1] ___| + public void testLayout6KeyR1() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(6, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_R1, KEYBOARD_WIDTH); + assertEquals("6 key R1 columns", 3, params.mNumColumns); + assertEquals("6 key R1 rows", 2, params.mNumRows); + assertEquals("6 key R1 left", 2, params.mLeftKeys); + assertEquals("6 key R1 right", 1, params.mRightKeys); + assertEquals("6 key R1 [1]", 0, params.getColumnPos(0)); + assertEquals("6 key R1 [2]", -1, params.getColumnPos(1)); + assertEquals("6 key R1 [3]", -2, params.getColumnPos(2)); + assertEquals("6 key R1 [4]", 0, params.getColumnPos(3)); + assertEquals("6 key R1 [5]", -1, params.getColumnPos(4)); + assertEquals("6 key R1 [6]", -2, params.getColumnPos(5)); + assertEquals("6 key R1 adjust", 0, params.mTopRowAdjustment); + assertEquals("6 key R1 default", WIDTH * 2, params.getDefaultKeyCoordX()); + } + + // [6] [4] [5] ___ ___| + // [3] [1] [2] ___ ___| + public void testLayout6KeyR2() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(6, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_R2, KEYBOARD_WIDTH); + assertEquals("6 key R2 columns", 3, params.mNumColumns); + assertEquals("6 key R2 rows", 2, params.mNumRows); + assertEquals("6 key R2 left", 1, params.mLeftKeys); + assertEquals("6 key R2 right", 2, params.mRightKeys); + assertEquals("6 key R2 [1]", 0, params.getColumnPos(0)); + assertEquals("6 key R2 [2]", 1, params.getColumnPos(1)); + assertEquals("6 key R2 [3]", -1, params.getColumnPos(2)); + assertEquals("6 key R2 [4]", 0, params.getColumnPos(3)); + assertEquals("6 key R2 [5]", 1, params.getColumnPos(4)); + assertEquals("6 key R2 [6]", -1, params.getColumnPos(5)); + assertEquals("6 key R2 adjust", 0, params.mTopRowAdjustment); + assertEquals("6 key R2 default", WIDTH * 1, params.getDefaultKeyCoordX()); + } + + // [7] [5] [6] + // [3] [1] [2] [4] + public void testLayout7KeyM0() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(7, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_M0, KEYBOARD_WIDTH); + assertEquals("7 key columns", 4, params.mNumColumns); assertEquals("7 key rows", 2, params.mNumRows); - assertEquals("7 key left", 2, params.mLeftKeys); + assertEquals("7 key left", 1, params.mLeftKeys); assertEquals("7 key right", 3, params.mRightKeys); assertEquals("7 key [1]", 0, params.getColumnPos(0)); assertEquals("7 key [2]", 1, params.getColumnPos(1)); assertEquals("7 key [3]", -1, params.getColumnPos(2)); assertEquals("7 key [4]", 2, params.getColumnPos(3)); - assertEquals("7 key [5]", -2, params.getColumnPos(4)); - assertEquals("7 key [6]", 0, params.getColumnPos(5)); - assertEquals("7 key [7]", 1, params.getColumnPos(6)); - assertEquals("7 key centering", true, params.mTopRowNeedsCentering); - assertEquals("7 key default", WIDTH * 2, params.getDefaultKeyCoordX()); + assertEquals("7 key [5]", 0, params.getColumnPos(4)); + assertEquals("7 key [6]", 1, params.getColumnPos(5)); + assertEquals("7 key [7]", -1, params.getColumnPos(6)); + assertEquals("7 key adjust", 1, params.mTopRowAdjustment); + assertEquals("7 key default", WIDTH * 1, params.getDefaultKeyCoordX()); } - // [8] [6] [7] - // [5] [3] [1] [2] [4] - public void testLayout8Key() { - MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams( - 8, MAX_COLUMNS, WIDTH, HEIGHT, - WIDTH * 5, WIDTH * 10); - assertEquals("8 key columns", 5, params.mNumColumns); - assertEquals("8 key rows", 2, params.mNumRows); - assertEquals("8 key left", 2, params.mLeftKeys); - assertEquals("8 key right", 3, params.mRightKeys); - assertEquals("8 key [1]", 0, params.getColumnPos(0)); - assertEquals("8 key [2]", 1, params.getColumnPos(1)); - assertEquals("8 key [3]", -1, params.getColumnPos(2)); - assertEquals("8 key [4]", 2, params.getColumnPos(3)); - assertEquals("8 key [5]", -2, params.getColumnPos(4)); - assertEquals("8 key [6]", 0, params.getColumnPos(5)); - assertEquals("8 key [7]", 1, params.getColumnPos(6)); - assertEquals("8 key [8]", -1, params.getColumnPos(7)); - assertEquals("8 key centering", false, params.mTopRowNeedsCentering); - assertEquals("8 key default", WIDTH * 2, params.getDefaultKeyCoordX()); + // |[5] [6] [7] + // |[1] [2] [3] [4] + public void testLayout7KeyL0() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(7, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_L0, KEYBOARD_WIDTH); + assertEquals("7 key L0 columns", 4, params.mNumColumns); + assertEquals("7 key L0 rows", 2, params.mNumRows); + assertEquals("7 key L0 left", 0, params.mLeftKeys); + assertEquals("7 key L0 right", 4, params.mRightKeys); + assertEquals("7 key L0 [1]", 0, params.getColumnPos(0)); + assertEquals("7 key L0 [2]", 1, params.getColumnPos(1)); + assertEquals("7 key L0 [3]", 2, params.getColumnPos(2)); + assertEquals("7 key L0 [4]", 3, params.getColumnPos(3)); + assertEquals("7 key L0 [5]", 0, params.getColumnPos(4)); + assertEquals("7 key L0 [6]", 1, params.getColumnPos(5)); + assertEquals("7 key L0 [7]", 2, params.getColumnPos(6)); + assertEquals("7 key L0 adjust", 0, params.mTopRowAdjustment); + assertEquals("7 key L0 default", WIDTH * 0, params.getDefaultKeyCoordX()); + } + + // |___ [5] [6] [7] + // |___ [1] [2] [3] [4] + public void testLayout7KeyL1() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(7, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_L1, KEYBOARD_WIDTH); + assertEquals("7 key L1 columns", 4, params.mNumColumns); + assertEquals("7 key L1 rows", 2, params.mNumRows); + assertEquals("7 key L1 left", 0, params.mLeftKeys); + assertEquals("7 key L1 right", 4, params.mRightKeys); + assertEquals("7 key L1 [1]", 0, params.getColumnPos(0)); + assertEquals("7 key L1 [2]", 1, params.getColumnPos(1)); + assertEquals("7 key L1 [3]", 2, params.getColumnPos(2)); + assertEquals("7 key L1 [4]", 3, params.getColumnPos(3)); + assertEquals("7 key L1 [5]", 0, params.getColumnPos(4)); + assertEquals("7 key L1 [6]", 1, params.getColumnPos(5)); + assertEquals("7 key L1 [7]", 2, params.getColumnPos(6)); + assertEquals("7 key L1 adjust", 0, params.mTopRowAdjustment); + assertEquals("7 key L1 default", WIDTH * 0, params.getDefaultKeyCoordX()); + } + + // |___ ___ [7] [5] [6] + // |___ ___ [3] [1] [2] [4] + public void testLayout7KeyL2() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(7, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_L2, KEYBOARD_WIDTH); + assertEquals("7 key L2 columns", 4, params.mNumColumns); + assertEquals("7 key L2 rows", 2, params.mNumRows); + assertEquals("7 key L2 left", 1, params.mLeftKeys); + assertEquals("7 key L2 right", 3, params.mRightKeys); + assertEquals("7 key L2 [1]", 0, params.getColumnPos(0)); + assertEquals("7 key L2 [2]", 1, params.getColumnPos(1)); + assertEquals("7 key L2 [3]", -1, params.getColumnPos(2)); + assertEquals("7 key L2 [4]", 2, params.getColumnPos(3)); + assertEquals("7 key L2 [5]", 0, params.getColumnPos(4)); + assertEquals("7 key L2 [6]", 1, params.getColumnPos(5)); + assertEquals("7 key L2 [7]", -1, params.getColumnPos(6)); + assertEquals("7 key L2 adjust", 1, params.mTopRowAdjustment); + assertEquals("7 key L2 default", WIDTH * 1, params.getDefaultKeyCoordX()); + } + + // [7] [6] [5]| + // [4] [3] [2] [1]| + public void testLayout7KeyR0() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(7, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_R0, KEYBOARD_WIDTH); + assertEquals("7 key R0 columns", 4, params.mNumColumns); + assertEquals("7 key R0 rows", 2, params.mNumRows); + assertEquals("7 key R0 left", 3, params.mLeftKeys); + assertEquals("7 key R0 right", 1, params.mRightKeys); + assertEquals("7 key R0 [1]", 0, params.getColumnPos(0)); + assertEquals("7 key R0 [2]", -1, params.getColumnPos(1)); + assertEquals("7 key R0 [3]", -2, params.getColumnPos(2)); + assertEquals("7 key R0 [4]", -3, params.getColumnPos(3)); + assertEquals("7 key R0 [5]", 0, params.getColumnPos(4)); + assertEquals("7 key R0 [6]", -1, params.getColumnPos(5)); + assertEquals("7 key R0 [7]", -2, params.getColumnPos(6)); + assertEquals("7 key R0 adjust", 0, params.mTopRowAdjustment); + assertEquals("7 key R0 default", WIDTH * 3, params.getDefaultKeyCoordX()); + } + + // [7] [6] [5] ___| + // [4] [3] [2] [1] ___| + public void testLayout7KeyR1() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(7, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_R1, KEYBOARD_WIDTH); + assertEquals("7 key R1 columns", 4, params.mNumColumns); + assertEquals("7 key R1 rows", 2, params.mNumRows); + assertEquals("7 key R1 left", 3, params.mLeftKeys); + assertEquals("7 key R1 right", 1, params.mRightKeys); + assertEquals("7 key R1 [1]", 0, params.getColumnPos(0)); + assertEquals("7 key R1 [2]", -1, params.getColumnPos(1)); + assertEquals("7 key R1 [3]", -2, params.getColumnPos(2)); + assertEquals("7 key R1 [4]", -3, params.getColumnPos(3)); + assertEquals("7 key R1 [5]", 0, params.getColumnPos(4)); + assertEquals("7 key R1 [6]", -1, params.getColumnPos(5)); + assertEquals("7 key R1 [7]", -2, params.getColumnPos(6)); + assertEquals("7 key R1 adjust", 0, params.mTopRowAdjustment); + assertEquals("7 key R1 default", WIDTH * 3, params.getDefaultKeyCoordX()); + } + + // [7] [5] [6] ___ ___| + // [4] [3] [1] [2] ___ ___| + public void testLayout7KeyR2() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(7, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_R2, KEYBOARD_WIDTH); + assertEquals("7 key R2 columns", 4, params.mNumColumns); + assertEquals("7 key R2 rows", 2, params.mNumRows); + assertEquals("7 key R2 left", 2, params.mLeftKeys); + assertEquals("7 key R2 right", 2, params.mRightKeys); + assertEquals("7 key R2 [1]", 0, params.getColumnPos(0)); + assertEquals("7 key R2 [2]", 1, params.getColumnPos(1)); + assertEquals("7 key R2 [3]", -1, params.getColumnPos(2)); + assertEquals("7 key R2 [4]", -2, params.getColumnPos(3)); + assertEquals("7 key R2 [5]", 0, params.getColumnPos(4)); + assertEquals("7 key R2 [6]", 1, params.getColumnPos(5)); + assertEquals("7 key R2 [7]", -1, params.getColumnPos(6)); + assertEquals("7 key R2 adjust", -1, params.mTopRowAdjustment); + assertEquals("7 key R2 default", WIDTH * 2, params.getDefaultKeyCoordX()); + } + + // [7] [6] [5] [3] [1] [2] [4] ___| + public void testLayout7KeyR3Max7() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(7, 7, WIDTH, + HEIGHT, XPOS_R3, KEYBOARD_WIDTH); + assertEquals("7 key R2 columns", 7, params.mNumColumns); + assertEquals("7 key R2 rows", 1, params.mNumRows); + assertEquals("7 key R2 left", 4, params.mLeftKeys); + assertEquals("7 key R2 right", 3, params.mRightKeys); + assertEquals("7 key R2 [1]", 0, params.getColumnPos(0)); + assertEquals("7 key R2 [2]", 1, params.getColumnPos(1)); + assertEquals("7 key R2 [3]", -1, params.getColumnPos(2)); + assertEquals("7 key R2 [4]", 2, params.getColumnPos(3)); + assertEquals("7 key R2 [5]", -2, params.getColumnPos(4)); + assertEquals("7 key R2 [6]", -3, params.getColumnPos(5)); + assertEquals("7 key R2 [7]", -4, params.getColumnPos(6)); + assertEquals("7 key R2 adjust", 0, params.mTopRowAdjustment); + assertEquals("7 key R2 default", WIDTH * 4, params.getDefaultKeyCoordX()); + } + + // [7] [5] [6] [8] + // [3] [1] [2] [4] + public void testLayout8KeyM0() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(8, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_M0, KEYBOARD_WIDTH); + assertEquals("8 key M0 columns", 4, params.mNumColumns); + assertEquals("8 key M0 rows", 2, params.mNumRows); + assertEquals("8 key M0 left", 1, params.mLeftKeys); + assertEquals("8 key M0 right", 3, params.mRightKeys); + assertEquals("8 key M0 [1]", 0, params.getColumnPos(0)); + assertEquals("8 key M0 [2]", 1, params.getColumnPos(1)); + assertEquals("8 key M0 [3]", -1, params.getColumnPos(2)); + assertEquals("8 key M0 [4]", 2, params.getColumnPos(3)); + assertEquals("8 key M0 [5]", 0, params.getColumnPos(4)); + assertEquals("8 key M0 [6]", 1, params.getColumnPos(5)); + assertEquals("8 key M0 [7]", -1, params.getColumnPos(6)); + assertEquals("8 key M0 [8]", 2, params.getColumnPos(7)); + assertEquals("8 key M0 adjust", 0, params.mTopRowAdjustment); + assertEquals("8 key M0 default", WIDTH * 1, params.getDefaultKeyCoordX()); + } + + // |[5] [6] [7] [8] + // |[1] [2] [3] [4] + public void testLayout8KeyL0() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(8, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_L0, KEYBOARD_WIDTH); + assertEquals("8 key L0 columns", 4, params.mNumColumns); + assertEquals("8 key L0 rows", 2, params.mNumRows); + assertEquals("8 key L0 left", 0, params.mLeftKeys); + assertEquals("8 key L0 right", 4, params.mRightKeys); + assertEquals("8 key L0 [1]", 0, params.getColumnPos(0)); + assertEquals("8 key L0 [2]", 1, params.getColumnPos(1)); + assertEquals("8 key L0 [3]", 2, params.getColumnPos(2)); + assertEquals("8 key L0 [4]", 3, params.getColumnPos(3)); + assertEquals("8 key L0 [5]", 0, params.getColumnPos(4)); + assertEquals("8 key L0 [6]", 1, params.getColumnPos(5)); + assertEquals("8 key L0 [7]", 2, params.getColumnPos(6)); + assertEquals("8 key L0 [8]", 3, params.getColumnPos(7)); + assertEquals("8 key L0 adjust", 0, params.mTopRowAdjustment); + assertEquals("8 key L0 default", WIDTH * 0, params.getDefaultKeyCoordX()); + } + + // |___ [5] [6] [7] [8] + // |___ [1] [2] [3] [4] + public void testLayout8KeyL1() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(8, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_L1, KEYBOARD_WIDTH); + assertEquals("8 key L1 columns", 4, params.mNumColumns); + assertEquals("8 key L1 rows", 2, params.mNumRows); + assertEquals("8 key L1 left", 0, params.mLeftKeys); + assertEquals("8 key L1 right", 4, params.mRightKeys); + assertEquals("8 key L1 [1]", 0, params.getColumnPos(0)); + assertEquals("8 key L1 [2]", 1, params.getColumnPos(1)); + assertEquals("8 key L1 [3]", 2, params.getColumnPos(2)); + assertEquals("8 key L1 [4]", 3, params.getColumnPos(3)); + assertEquals("8 key L1 [5]", 0, params.getColumnPos(4)); + assertEquals("8 key L1 [6]", 1, params.getColumnPos(5)); + assertEquals("8 key L1 [7]", 2, params.getColumnPos(6)); + assertEquals("8 key L1 [8]", 3, params.getColumnPos(7)); + assertEquals("8 key L1 adjust", 0, params.mTopRowAdjustment); + assertEquals("8 key L1 default", WIDTH * 0, params.getDefaultKeyCoordX()); + } + + // |___ ___ [7] [5] [6] [8] + // |___ ___ [3] [1] [2] [4] + public void testLayout8KeyL2() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(8, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_L2, KEYBOARD_WIDTH); + assertEquals("8 key L2 columns", 4, params.mNumColumns); + assertEquals("8 key L2 rows", 2, params.mNumRows); + assertEquals("8 key L2 left", 1, params.mLeftKeys); + assertEquals("8 key L2 right", 3, params.mRightKeys); + assertEquals("8 key L2 [1]", 0, params.getColumnPos(0)); + assertEquals("8 key L2 [2]", 1, params.getColumnPos(1)); + assertEquals("8 key L2 [3]", -1, params.getColumnPos(2)); + assertEquals("8 key L2 [4]", 2, params.getColumnPos(3)); + assertEquals("8 key L2 [5]", 0, params.getColumnPos(4)); + assertEquals("8 key L2 [6]", 1, params.getColumnPos(5)); + assertEquals("8 key L2 [7]", -1, params.getColumnPos(6)); + assertEquals("8 key L2 [8]", 2, params.getColumnPos(7)); + assertEquals("8 key L2 adjust", 0, params.mTopRowAdjustment); + assertEquals("8 key L2 default", WIDTH * 1, params.getDefaultKeyCoordX()); + } + + // [8] [7] [6] [5]| + // [4] [3] [2] [1]| + public void testLayout8KeyR0() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(8, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_R0, KEYBOARD_WIDTH); + assertEquals("8 key R0 columns", 4, params.mNumColumns); + assertEquals("8 key R0 rows", 2, params.mNumRows); + assertEquals("8 key R0 left", 3, params.mLeftKeys); + assertEquals("8 key R0 right", 1, params.mRightKeys); + assertEquals("8 key R0 [1]", 0, params.getColumnPos(0)); + assertEquals("8 key R0 [2]", -1, params.getColumnPos(1)); + assertEquals("8 key R0 [3]", -2, params.getColumnPos(2)); + assertEquals("8 key R0 [4]", -3, params.getColumnPos(3)); + assertEquals("8 key R0 [5]", 0, params.getColumnPos(4)); + assertEquals("8 key R0 [6]", -1, params.getColumnPos(5)); + assertEquals("8 key R0 [7]", -2, params.getColumnPos(6)); + assertEquals("8 key R0 [8]", -3, params.getColumnPos(7)); + assertEquals("8 key R0 adjust", 0, params.mTopRowAdjustment); + assertEquals("8 key R0 default", WIDTH * 3, params.getDefaultKeyCoordX()); + } + + // [8] [7] [6] [5] ___| + // [4] [3] [2] [1] ___| + public void testLayout8KeyR1() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(8, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_R1, KEYBOARD_WIDTH); + assertEquals("8 key R1 columns", 4, params.mNumColumns); + assertEquals("8 key R1 rows", 2, params.mNumRows); + assertEquals("8 key R1 left", 3, params.mLeftKeys); + assertEquals("8 key R1 right", 1, params.mRightKeys); + assertEquals("8 key R1 [1]", 0, params.getColumnPos(0)); + assertEquals("8 key R1 [2]", -1, params.getColumnPos(1)); + assertEquals("8 key R1 [3]", -2, params.getColumnPos(2)); + assertEquals("8 key R1 [4]", -3, params.getColumnPos(3)); + assertEquals("8 key R1 [5]", 0, params.getColumnPos(4)); + assertEquals("8 key R1 [6]", -1, params.getColumnPos(5)); + assertEquals("8 key R1 [7]", -2, params.getColumnPos(6)); + assertEquals("8 key R1 [8]", -3, params.getColumnPos(7)); + assertEquals("8 key R1 adjust", 0, params.mTopRowAdjustment); + assertEquals("8 key R1 default", WIDTH * 3, params.getDefaultKeyCoordX()); + } + + // [8] [7] [5] [6] ___ ___| + // [4] [3] [1] [2] ___ ___| + public void testLayout8KeyR2() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(8, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_R2, KEYBOARD_WIDTH); + assertEquals("8 key R2 columns", 4, params.mNumColumns); + assertEquals("8 key R2 rows", 2, params.mNumRows); + assertEquals("8 key R2 left", 2, params.mLeftKeys); + assertEquals("8 key R2 right", 2, params.mRightKeys); + assertEquals("8 key R2 [1]", 0, params.getColumnPos(0)); + assertEquals("8 key R2 [2]", 1, params.getColumnPos(1)); + assertEquals("8 key R2 [3]", -1, params.getColumnPos(2)); + assertEquals("8 key R2 [4]", -2, params.getColumnPos(3)); + assertEquals("8 key R2 [5]", 0, params.getColumnPos(4)); + assertEquals("8 key R2 [6]", 1, params.getColumnPos(5)); + assertEquals("8 key R2 [7]", -1, params.getColumnPos(6)); + assertEquals("8 key R2 [8]", -2, params.getColumnPos(7)); + assertEquals("8 key R2 adjust", 0, params.mTopRowAdjustment); + assertEquals("8 key R2 default", WIDTH * 2, params.getDefaultKeyCoordX()); } // [8] [6] [7] [9] // [5] [3] [1] [2] [4] - public void testLayout9Key() { - MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams( - 9, MAX_COLUMNS, WIDTH, HEIGHT, - WIDTH * 5, WIDTH * 10); - assertEquals("9 key columns", 5, params.mNumColumns); - assertEquals("9 key rows", 2, params.mNumRows); - assertEquals("9 key left", 2, params.mLeftKeys); - assertEquals("9 key right", 3, params.mRightKeys); - assertEquals("9 key [1]", 0, params.getColumnPos(0)); - assertEquals("9 key [2]", 1, params.getColumnPos(1)); - assertEquals("9 key [3]", -1, params.getColumnPos(2)); - assertEquals("9 key [4]", 2, params.getColumnPos(3)); - assertEquals("9 key [5]", -2, params.getColumnPos(4)); - assertEquals("9 key [6]", 0, params.getColumnPos(5)); - assertEquals("9 key [7]", 1, params.getColumnPos(6)); - assertEquals("9 key [8]", -1, params.getColumnPos(7)); - assertEquals("9 key [9]", 2, params.getColumnPos(8)); - assertEquals("9 key centering", true, params.mTopRowNeedsCentering); - assertEquals("9 key default", WIDTH * 2, params.getDefaultKeyCoordX()); + public void testLayout9KeyM0() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(9, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_M0, KEYBOARD_WIDTH); + assertEquals("9 key M0 columns", 5, params.mNumColumns); + assertEquals("9 key M0 rows", 2, params.mNumRows); + assertEquals("9 key M0 left", 2, params.mLeftKeys); + assertEquals("9 key M0 right", 3, params.mRightKeys); + assertEquals("9 key M0 [1]", 0, params.getColumnPos(0)); + assertEquals("9 key M0 [2]", 1, params.getColumnPos(1)); + assertEquals("9 key M0 [3]", -1, params.getColumnPos(2)); + assertEquals("9 key M0 [4]", 2, params.getColumnPos(3)); + assertEquals("9 key M0 [5]", -2, params.getColumnPos(4)); + assertEquals("9 key M0 [6]", 0, params.getColumnPos(5)); + assertEquals("9 key M0 [7]", 1, params.getColumnPos(6)); + assertEquals("9 key M0 [8]", -1, params.getColumnPos(7)); + assertEquals("9 key M0 [9]", 2, params.getColumnPos(8)); + assertEquals("9 key M0 adjust", -1, params.mTopRowAdjustment); + assertEquals("9 key M0 default", WIDTH * 2, params.getDefaultKeyCoordX()); } - // Nine keys test. There is no key space for mini keyboard at left of the parent key. - // [6] [7] [8] [9] - // [1] [2] [3] [4] [5] - public void testLayout9KeyLeft() { - MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams( - 9, MAX_COLUMNS, WIDTH, HEIGHT, - 0, WIDTH * 10); - assertEquals("9 key left columns", 5, params.mNumColumns); - assertEquals("9 key left rows", 2, params.mNumRows); - assertEquals("9 key left left", 0, params.mLeftKeys); - assertEquals("9 key left right", 5, params.mRightKeys); - assertEquals("9 key left [1]", 0, params.getColumnPos(0)); - assertEquals("9 key left [2]", 1, params.getColumnPos(1)); - assertEquals("9 key left [3]", 2, params.getColumnPos(2)); - assertEquals("9 key left [4]", 3, params.getColumnPos(3)); - assertEquals("9 key left [5]", 4, params.getColumnPos(4)); - assertEquals("9 key left [6]", 0, params.getColumnPos(5)); - assertEquals("9 key left [7]", 1, params.getColumnPos(6)); - assertEquals("9 key left [8]", 2, params.getColumnPos(7)); - assertEquals("9 key left [9]", 3, params.getColumnPos(8)); - assertEquals("9 key left centering", true, params.mTopRowNeedsCentering); - assertEquals("9 key left default", 0, params.getDefaultKeyCoordX()); + // |[6] [7] [8] [9] + // |[1] [2] [3] [4] [5] + public void testLayout9KeyL0() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(9, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_L0, KEYBOARD_WIDTH); + assertEquals("9 key L0 columns", 5, params.mNumColumns); + assertEquals("9 key L0 rows", 2, params.mNumRows); + assertEquals("9 key L0 left", 0, params.mLeftKeys); + assertEquals("9 key L0 right", 5, params.mRightKeys); + assertEquals("9 key L0 [1]", 0, params.getColumnPos(0)); + assertEquals("9 key L0 [2]", 1, params.getColumnPos(1)); + assertEquals("9 key L0 [3]", 2, params.getColumnPos(2)); + assertEquals("9 key L0 [4]", 3, params.getColumnPos(3)); + assertEquals("9 key L0 [5]", 4, params.getColumnPos(4)); + assertEquals("9 key L0 [6]", 0, params.getColumnPos(5)); + assertEquals("9 key L0 [7]", 1, params.getColumnPos(6)); + assertEquals("9 key L0 [8]", 2, params.getColumnPos(7)); + assertEquals("9 key L0 [9]", 3, params.getColumnPos(8)); + assertEquals("9 key L0 adjust", 0, params.mTopRowAdjustment); + assertEquals("9 key L0 default", WIDTH * 0, params.getDefaultKeyCoordX()); } - // Nine keys test. There is only one key space for mini keyboard at left of the parent key. - // [8] [6] [7] [9] - // [3] [1] [2] [4] [5] - public void testLayout9KeyNearLeft() { - MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams( - 9, MAX_COLUMNS, WIDTH, HEIGHT, - WIDTH, WIDTH * 10); - assertEquals("9 key near left columns", 5, params.mNumColumns); - assertEquals("9 key near left rows", 2, params.mNumRows); - assertEquals("9 key near left left", 1, params.mLeftKeys); - assertEquals("9 key near left right", 4, params.mRightKeys); - assertEquals("9 key near left [1]", 0, params.getColumnPos(0)); - assertEquals("9 key near left [2]", 1, params.getColumnPos(1)); - assertEquals("9 key near left [3]", -1, params.getColumnPos(2)); - assertEquals("9 key near left [4]", 2, params.getColumnPos(3)); - assertEquals("9 key near left [5]", 3, params.getColumnPos(4)); - assertEquals("9 key near left [6]", 0, params.getColumnPos(5)); - assertEquals("9 key near left [7]", 1, params.getColumnPos(6)); - assertEquals("9 key near left [8]", -1, params.getColumnPos(7)); - assertEquals("9 key near left [9]", 2, params.getColumnPos(8)); - assertEquals("9 key near left centering", true, params.mTopRowNeedsCentering); - assertEquals("9 key near left default", WIDTH, params.getDefaultKeyCoordX()); + // |___ [6] [7] [8] [9] + // |___ [1] [2] [3] [4] [5] + public void testLayout9KeyL1() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(9, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_L1, KEYBOARD_WIDTH); + assertEquals("9 key L1 columns", 5, params.mNumColumns); + assertEquals("9 key L1 rows", 2, params.mNumRows); + assertEquals("9 key L1 left", 0, params.mLeftKeys); + assertEquals("9 key L1 right", 5, params.mRightKeys); + assertEquals("9 key L1 [1]", 0, params.getColumnPos(0)); + assertEquals("9 key L1 [2]", 1, params.getColumnPos(1)); + assertEquals("9 key L1 [3]", 2, params.getColumnPos(2)); + assertEquals("9 key L1 [4]", 3, params.getColumnPos(3)); + assertEquals("9 key L1 [5]", 4, params.getColumnPos(4)); + assertEquals("9 key L1 [6]", 0, params.getColumnPos(5)); + assertEquals("9 key L1 [7]", 1, params.getColumnPos(6)); + assertEquals("9 key L1 [8]", 2, params.getColumnPos(7)); + assertEquals("9 key L1 [9]", 3, params.getColumnPos(8)); + assertEquals("9 key L1 adjust", 0, params.mTopRowAdjustment); + assertEquals("9 key L1 default", WIDTH * 0, params.getDefaultKeyCoordX()); + } + + // |___ ___ [8] [6] [7] [9] + // |___ ___ [3] [1] [2] [4] [5] + public void testLayout9KeyL2() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(9, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_L2, KEYBOARD_WIDTH); + assertEquals("9 key L2 columns", 5, params.mNumColumns); + assertEquals("9 key L2 rows", 2, params.mNumRows); + assertEquals("9 key L2 left", 1, params.mLeftKeys); + assertEquals("9 key L2 right", 4, params.mRightKeys); + assertEquals("9 key L2 [1]", 0, params.getColumnPos(0)); + assertEquals("9 key L2 [2]", 1, params.getColumnPos(1)); + assertEquals("9 key L2 [3]", -1, params.getColumnPos(2)); + assertEquals("9 key L2 [4]", 2, params.getColumnPos(3)); + assertEquals("9 key L2 [5]", 3, params.getColumnPos(4)); + assertEquals("9 key L2 [6]", 0, params.getColumnPos(5)); + assertEquals("9 key L2 [7]", 1, params.getColumnPos(6)); + assertEquals("9 key L2 [8]", -1, params.getColumnPos(7)); + assertEquals("9 key L2 [9]", 2, params.getColumnPos(8)); + assertEquals("9 key L2 adjust", 1, params.mTopRowAdjustment); + assertEquals("9 key L2 default", WIDTH * 1, params.getDefaultKeyCoordX()); + } + + // [9] [8] [7] [6]| + // [5] [4] [3] [2] [1]| + public void testLayout9KeyR0() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(9, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_R0, KEYBOARD_WIDTH); + assertEquals("9 key R0 columns", 5, params.mNumColumns); + assertEquals("9 key R0 rows", 2, params.mNumRows); + assertEquals("9 key R0 left", 4, params.mLeftKeys); + assertEquals("9 key R0 right", 1, params.mRightKeys); + assertEquals("9 key R0 [1]", 0, params.getColumnPos(0)); + assertEquals("9 key R0 [2]", -1, params.getColumnPos(1)); + assertEquals("9 key R0 [3]", -2, params.getColumnPos(2)); + assertEquals("9 key R0 [4]", -3, params.getColumnPos(3)); + assertEquals("9 key R0 [5]", -4, params.getColumnPos(4)); + assertEquals("9 key R0 [6]", 0, params.getColumnPos(5)); + assertEquals("9 key R0 [7]", -1, params.getColumnPos(6)); + assertEquals("9 key R0 [8]", -2, params.getColumnPos(7)); + assertEquals("9 key R0 [9]", -3, params.getColumnPos(8)); + assertEquals("9 key R0 adjust", 0, params.mTopRowAdjustment); + assertEquals("9 key R0 default", WIDTH * 4, params.getDefaultKeyCoordX()); + } + + // [9] [8] [7] [6] ___| + // [5] [4] [3] [2] [1] ___| + public void testLayout9KeyR1() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(9, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_R1, KEYBOARD_WIDTH); + assertEquals("9 key R1 columns", 5, params.mNumColumns); + assertEquals("9 key R1 rows", 2, params.mNumRows); + assertEquals("9 key R1 left", 4, params.mLeftKeys); + assertEquals("9 key R1 right", 1, params.mRightKeys); + assertEquals("9 key R1 [1]", 0, params.getColumnPos(0)); + assertEquals("9 key R1 [2]", -1, params.getColumnPos(1)); + assertEquals("9 key R1 [3]", -2, params.getColumnPos(2)); + assertEquals("9 key R1 [4]", -3, params.getColumnPos(3)); + assertEquals("9 key R1 [5]", -4, params.getColumnPos(4)); + assertEquals("9 key R1 [6]", 0, params.getColumnPos(5)); + assertEquals("9 key R1 [7]", -1, params.getColumnPos(6)); + assertEquals("9 key R1 [8]", -2, params.getColumnPos(7)); + assertEquals("9 key R1 [9]", -3, params.getColumnPos(8)); + assertEquals("9 key R1 adjust", 0, params.mTopRowAdjustment); + assertEquals("9 key R1 default", WIDTH * 4, params.getDefaultKeyCoordX()); + } + + // [9] [8] [6] [7] ___ ___| + // [5] [4] [3] [1] [2] ___ ___| + public void testLayout9KeyR2() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(9, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_R2, KEYBOARD_WIDTH); + assertEquals("9 key R2 columns", 5, params.mNumColumns); + assertEquals("9 key R2 rows", 2, params.mNumRows); + assertEquals("9 key R2 left", 3, params.mLeftKeys); + assertEquals("9 key R2 right", 2, params.mRightKeys); + assertEquals("9 key R2 [1]", 0, params.getColumnPos(0)); + assertEquals("9 key R2 [2]", 1, params.getColumnPos(1)); + assertEquals("9 key R2 [3]", -1, params.getColumnPos(2)); + assertEquals("9 key R2 [4]", -2, params.getColumnPos(3)); + assertEquals("9 key R2 [5]", -3, params.getColumnPos(4)); + assertEquals("9 key R2 [6]", 0, params.getColumnPos(5)); + assertEquals("9 key R2 [7]", 1, params.getColumnPos(6)); + assertEquals("9 key R2 [8]", -1, params.getColumnPos(7)); + assertEquals("9 key R2 [9]", -2, params.getColumnPos(8)); + assertEquals("9 key R2 adjust", -1, params.mTopRowAdjustment); + assertEquals("9 key R2 default", WIDTH * 3, params.getDefaultKeyCoordX()); + } + + // [A] [8] [6] [7] [9] + // [5] [3] [1] [2] [4] + public void testLayout10KeyM0() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(10, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_M0, KEYBOARD_WIDTH); + assertEquals("10 key M0 columns", 5, params.mNumColumns); + assertEquals("10 key M0 rows", 2, params.mNumRows); + assertEquals("10 key M0 left", 2, params.mLeftKeys); + assertEquals("10 key M0 right", 3, params.mRightKeys); + assertEquals("10 key M0 [1]", 0, params.getColumnPos(0)); + assertEquals("10 key M0 [2]", 1, params.getColumnPos(1)); + assertEquals("10 key M0 [3]", -1, params.getColumnPos(2)); + assertEquals("10 key M0 [4]", 2, params.getColumnPos(3)); + assertEquals("10 key M0 [5]", -2, params.getColumnPos(4)); + assertEquals("10 key M0 [6]", 0, params.getColumnPos(5)); + assertEquals("10 key M0 [7]", 1, params.getColumnPos(6)); + assertEquals("10 key M0 [8]", -1, params.getColumnPos(7)); + assertEquals("10 key M0 [9]", 2, params.getColumnPos(8)); + assertEquals("10 key M0 [A]", -2, params.getColumnPos(9)); + assertEquals("10 key M0 adjust", 0, params.mTopRowAdjustment); + assertEquals("10 key M0 default", WIDTH * 2, params.getDefaultKeyCoordX()); + } + + // |[6] [7] [8] [9] [A] + // |[1] [2] [3] [4] [5] + public void testLayout10KeyL0() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(10, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_L0, KEYBOARD_WIDTH); + assertEquals("10 key L0 columns", 5, params.mNumColumns); + assertEquals("10 key L0 rows", 2, params.mNumRows); + assertEquals("10 key L0 left", 0, params.mLeftKeys); + assertEquals("10 key L0 right", 5, params.mRightKeys); + assertEquals("10 key L0 [1]", 0, params.getColumnPos(0)); + assertEquals("10 key L0 [2]", 1, params.getColumnPos(1)); + assertEquals("10 key L0 [3]", 2, params.getColumnPos(2)); + assertEquals("10 key L0 [4]", 3, params.getColumnPos(3)); + assertEquals("10 key L0 [5]", 4, params.getColumnPos(4)); + assertEquals("10 key L0 [6]", 0, params.getColumnPos(5)); + assertEquals("10 key L0 [7]", 1, params.getColumnPos(6)); + assertEquals("10 key L0 [8]", 2, params.getColumnPos(7)); + assertEquals("10 key L0 [9]", 3, params.getColumnPos(8)); + assertEquals("10 key L0 [A]", 4, params.getColumnPos(9)); + assertEquals("10 key L0 adjust", 0, params.mTopRowAdjustment); + assertEquals("10 key L0 default", WIDTH * 0, params.getDefaultKeyCoordX()); + } + + // |___ [6] [7] [8] [9] [A] + // |___ [1] [2] [3] [4] [5] + public void testLayout10KeyL1() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(10, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_L1, KEYBOARD_WIDTH); + assertEquals("10 key L1 columns", 5, params.mNumColumns); + assertEquals("10 key L1 rows", 2, params.mNumRows); + assertEquals("10 key L1 left", 0, params.mLeftKeys); + assertEquals("10 key L1 right", 5, params.mRightKeys); + assertEquals("10 key L1 [1]", 0, params.getColumnPos(0)); + assertEquals("10 key L1 [2]", 1, params.getColumnPos(1)); + assertEquals("10 key L1 [3]", 2, params.getColumnPos(2)); + assertEquals("10 key L1 [4]", 3, params.getColumnPos(3)); + assertEquals("10 key L1 [5]", 4, params.getColumnPos(4)); + assertEquals("10 key L1 [6]", 0, params.getColumnPos(5)); + assertEquals("10 key L1 [7]", 1, params.getColumnPos(6)); + assertEquals("10 key L1 [8]", 2, params.getColumnPos(7)); + assertEquals("10 key L1 [9]", 3, params.getColumnPos(8)); + assertEquals("10 key L1 [A]", 4, params.getColumnPos(9)); + assertEquals("10 key L1 adjust", 0, params.mTopRowAdjustment); + assertEquals("10 key L1 default", WIDTH * 0, params.getDefaultKeyCoordX()); + } + + // |___ ___ [8] [6] [7] [9] [A] + // |___ ___ [3] [1] [2] [4] [5] + public void testLayout10KeyL2() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(10, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_L2, KEYBOARD_WIDTH); + assertEquals("10 key L2 columns", 5, params.mNumColumns); + assertEquals("10 key L2 rows", 2, params.mNumRows); + assertEquals("10 key L2 left", 1, params.mLeftKeys); + assertEquals("10 key L2 right", 4, params.mRightKeys); + assertEquals("10 key L2 [1]", 0, params.getColumnPos(0)); + assertEquals("10 key L2 [2]", 1, params.getColumnPos(1)); + assertEquals("10 key L2 [3]", -1, params.getColumnPos(2)); + assertEquals("10 key L2 [4]", 2, params.getColumnPos(3)); + assertEquals("10 key L2 [5]", 3, params.getColumnPos(4)); + assertEquals("10 key L2 [6]", 0, params.getColumnPos(5)); + assertEquals("10 key L2 [7]", 1, params.getColumnPos(6)); + assertEquals("10 key L2 [8]", -1, params.getColumnPos(7)); + assertEquals("10 key L2 [9]", 2, params.getColumnPos(8)); + assertEquals("10 key L2 [A]", 3, params.getColumnPos(9)); + assertEquals("10 key L2 adjust", 0, params.mTopRowAdjustment); + assertEquals("10 key L2 default", WIDTH * 1, params.getDefaultKeyCoordX()); + } + + // [A] [9] [8] [7] [6]| + // [5] [4] [3] [2] [1]| + public void testLayout10KeyR0() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(10, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_R0, KEYBOARD_WIDTH); + assertEquals("10 key R0 columns", 5, params.mNumColumns); + assertEquals("10 key R0 rows", 2, params.mNumRows); + assertEquals("10 key R0 left", 4, params.mLeftKeys); + assertEquals("10 key R0 right", 1, params.mRightKeys); + assertEquals("10 key R0 [1]", 0, params.getColumnPos(0)); + assertEquals("10 key R0 [2]", -1, params.getColumnPos(1)); + assertEquals("10 key R0 [3]", -2, params.getColumnPos(2)); + assertEquals("10 key R0 [4]", -3, params.getColumnPos(3)); + assertEquals("10 key R0 [5]", -4, params.getColumnPos(4)); + assertEquals("10 key R0 [6]", 0, params.getColumnPos(5)); + assertEquals("10 key R0 [7]", -1, params.getColumnPos(6)); + assertEquals("10 key R0 [8]", -2, params.getColumnPos(7)); + assertEquals("10 key R0 [9]", -3, params.getColumnPos(8)); + assertEquals("10 key R0 [A]", -4, params.getColumnPos(9)); + assertEquals("10 key R0 adjust", 0, params.mTopRowAdjustment); + assertEquals("10 key R0 default", WIDTH * 4, params.getDefaultKeyCoordX()); + } + + // [A] [9] [8] [7] [6] ___| + // [5] [4] [3] [2] [1] ___| + public void testLayout10KeyR1() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(10, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_R1, KEYBOARD_WIDTH); + assertEquals("10 key R1 columns", 5, params.mNumColumns); + assertEquals("10 key R1 rows", 2, params.mNumRows); + assertEquals("10 key R1 left", 4, params.mLeftKeys); + assertEquals("10 key R1 right", 1, params.mRightKeys); + assertEquals("10 key R1 [1]", 0, params.getColumnPos(0)); + assertEquals("10 key R1 [2]", -1, params.getColumnPos(1)); + assertEquals("10 key R1 [3]", -2, params.getColumnPos(2)); + assertEquals("10 key R1 [4]", -3, params.getColumnPos(3)); + assertEquals("10 key R1 [5]", -4, params.getColumnPos(4)); + assertEquals("10 key R1 [6]", 0, params.getColumnPos(5)); + assertEquals("10 key R1 [7]", -1, params.getColumnPos(6)); + assertEquals("10 key R1 [8]", -2, params.getColumnPos(7)); + assertEquals("10 key R1 [9]", -3, params.getColumnPos(8)); + assertEquals("10 key R1 [A]", -4, params.getColumnPos(9)); + assertEquals("10 key R1 adjust", 0, params.mTopRowAdjustment); + assertEquals("10 key R1 default", WIDTH * 4, params.getDefaultKeyCoordX()); + } + + // [A] [9] [8] [6] [7] ___ ___| + // [5] [4] [3] [1] [2] ___ ___| + public void testLayout10KeyR2() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(10, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_R2, KEYBOARD_WIDTH); + assertEquals("10 key R2 columns", 5, params.mNumColumns); + assertEquals("10 key R2 rows", 2, params.mNumRows); + assertEquals("10 key R2 left", 3, params.mLeftKeys); + assertEquals("10 key R2 right", 2, params.mRightKeys); + assertEquals("10 key R2 [1]", 0, params.getColumnPos(0)); + assertEquals("10 key R2 [2]", 1, params.getColumnPos(1)); + assertEquals("10 key R2 [3]", -1, params.getColumnPos(2)); + assertEquals("10 key R2 [4]", -2, params.getColumnPos(3)); + assertEquals("10 key R2 [5]", -3, params.getColumnPos(4)); + assertEquals("10 key R2 [6]", 0, params.getColumnPos(5)); + assertEquals("10 key R2 [7]", 1, params.getColumnPos(6)); + assertEquals("10 key R2 [8]", -1, params.getColumnPos(7)); + assertEquals("10 key R2 [9]", -2, params.getColumnPos(8)); + assertEquals("10 key R2 [A]", -3, params.getColumnPos(9)); + assertEquals("10 key R2 adjust", 0, params.mTopRowAdjustment); + assertEquals("10 key R2 default", WIDTH * 3, params.getDefaultKeyCoordX()); + } + + // [B] [9] [A] + // [7] [5] [6] [8] + // [3] [1] [2] [4] + public void testLayout11KeyM0() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(11, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_M0, KEYBOARD_WIDTH); + assertEquals("11 key M0 columns", 4, params.mNumColumns); + assertEquals("11 key M0 rows", 3, params.mNumRows); + assertEquals("11 key M0 left", 1, params.mLeftKeys); + assertEquals("11 key M0 right", 3, params.mRightKeys); + assertEquals("11 key M0 [1]", 0, params.getColumnPos(0)); + assertEquals("11 key M0 [2]", 1, params.getColumnPos(1)); + assertEquals("11 key M0 [3]", -1, params.getColumnPos(2)); + assertEquals("11 key M0 [4]", 2, params.getColumnPos(3)); + assertEquals("11 key M0 [5]", 0, params.getColumnPos(4)); + assertEquals("11 key M0 [6]", 1, params.getColumnPos(5)); + assertEquals("11 key M0 [7]", -1, params.getColumnPos(6)); + assertEquals("11 key M0 [8]", 2, params.getColumnPos(7)); + assertEquals("11 key M0 [9]", 0, params.getColumnPos(8)); + assertEquals("11 key M0 [A]", 1, params.getColumnPos(9)); + assertEquals("11 key M0 [B]", -1, params.getColumnPos(10)); + assertEquals("11 key M0 adjust", 1, params.mTopRowAdjustment); + assertEquals("11 key M0 default", WIDTH * 1, params.getDefaultKeyCoordX()); + } + + // [B] [9] [A] [C] + // [7] [5] [6] [8] + // [3] [1] [2] [4] + public void testLayout12KeyM0() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(12, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_M0, KEYBOARD_WIDTH); + assertEquals("12 key M0 columns", 4, params.mNumColumns); + assertEquals("12 key M0 rows", 3, params.mNumRows); + assertEquals("12 key M0 left", 1, params.mLeftKeys); + assertEquals("12 key M0 right", 3, params.mRightKeys); + assertEquals("12 key M0 [1]", 0, params.getColumnPos(0)); + assertEquals("12 key M0 [2]", 1, params.getColumnPos(1)); + assertEquals("12 key M0 [3]", -1, params.getColumnPos(2)); + assertEquals("12 key M0 [4]", 2, params.getColumnPos(3)); + assertEquals("12 key M0 [5]", 0, params.getColumnPos(4)); + assertEquals("12 key M0 [6]", 1, params.getColumnPos(5)); + assertEquals("12 key M0 [7]", -1, params.getColumnPos(6)); + assertEquals("12 key M0 [8]", 2, params.getColumnPos(7)); + assertEquals("12 key M0 [9]", 0, params.getColumnPos(8)); + assertEquals("12 key M0 [A]", 1, params.getColumnPos(9)); + assertEquals("12 key M0 [B]", -1, params.getColumnPos(10)); + assertEquals("12 key M0 [C]", 2, params.getColumnPos(11)); + assertEquals("12 key M0 adjust", 0, params.mTopRowAdjustment); + assertEquals("12 key M0 default", WIDTH * 1, params.getDefaultKeyCoordX()); } - // Nine keys test. There is no key space for mini keyboard at right of the parent key. - // [9] [8] [7] [6] - // [5] [4] [3] [2] [1] - public void testLayout9KeyRight() { - MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams( - 9, MAX_COLUMNS, WIDTH, HEIGHT, - WIDTH * 9, WIDTH * 10); - assertEquals("9 key right columns", 5, params.mNumColumns); - assertEquals("9 key right rows", 2, params.mNumRows); - assertEquals("9 key right left", 4, params.mLeftKeys); - assertEquals("9 key right right", 1, params.mRightKeys); - assertEquals("9 key right [1]", 0, params.getColumnPos(0)); - assertEquals("9 key right [2]", -1, params.getColumnPos(1)); - assertEquals("9 key right [3]", -2, params.getColumnPos(2)); - assertEquals("9 key right [4]", -3, params.getColumnPos(3)); - assertEquals("9 key right [5]", -4, params.getColumnPos(4)); - assertEquals("9 key right [6]", 0, params.getColumnPos(5)); - assertEquals("9 key right [7]", -1, params.getColumnPos(6)); - assertEquals("9 key right [8]", -2, params.getColumnPos(7)); - assertEquals("9 key right [9]", -3, params.getColumnPos(8)); - assertEquals("9 key right centering", true, params.mTopRowNeedsCentering); - assertEquals("9 key right default", WIDTH * 4, params.getDefaultKeyCoordX()); - } - - // Nine keys test. There is only one key space for mini keyboard at right of the parent key. - // [9] [8] [6] [7] - // [5] [4] [3] [1] [2] - public void testLayout9KeyNearRight() { - MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams( - 9, MAX_COLUMNS, WIDTH, HEIGHT, - WIDTH * 8, WIDTH * 10); - assertEquals("9 key near right columns", 5, params.mNumColumns); - assertEquals("9 key near right rows", 2, params.mNumRows); - assertEquals("9 key near right left", 3, params.mLeftKeys); - assertEquals("9 key near right right", 2, params.mRightKeys); - assertEquals("9 key near right [1]", 0, params.getColumnPos(0)); - assertEquals("9 key near right [2]", 1, params.getColumnPos(1)); - assertEquals("9 key near right [3]", -1, params.getColumnPos(2)); - assertEquals("9 key near right [4]", -2, params.getColumnPos(3)); - assertEquals("9 key near right [5]", -3, params.getColumnPos(4)); - assertEquals("9 key near right [6]", 0, params.getColumnPos(5)); - assertEquals("9 key near right [7]", 1, params.getColumnPos(6)); - assertEquals("9 key near right [8]", -1, params.getColumnPos(7)); - assertEquals("9 key near right [9]", -2, params.getColumnPos(8)); - assertEquals("9 key near right centering", true, params.mTopRowNeedsCentering); - assertEquals("9 key near right default", WIDTH * 3, params.getDefaultKeyCoordX()); + // [D] [B] [C] + // [A] [8] [6] [7] [9] + // [5] [3] [1] [2] [4] + public void testLayout13KeyM0() { + MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams(13, MAX_COLUMNS, WIDTH, + HEIGHT, XPOS_M0, KEYBOARD_WIDTH); + assertEquals("13 key M0 columns", 5, params.mNumColumns); + assertEquals("13 key M0 rows", 3, params.mNumRows); + assertEquals("13 key M0 left", 2, params.mLeftKeys); + assertEquals("13 key M0 right", 3, params.mRightKeys); + assertEquals("13 key M0 [1]", 0, params.getColumnPos(0)); + assertEquals("13 key M0 [2]", 1, params.getColumnPos(1)); + assertEquals("13 key M0 [3]", -1, params.getColumnPos(2)); + assertEquals("13 key M0 [4]", 2, params.getColumnPos(3)); + assertEquals("13 key M0 [5]", -2, params.getColumnPos(4)); + assertEquals("13 key M0 [6]", 0, params.getColumnPos(5)); + assertEquals("13 key M0 [7]", 1, params.getColumnPos(6)); + assertEquals("13 key M0 [8]", -1, params.getColumnPos(7)); + assertEquals("13 key M0 [9]", 2, params.getColumnPos(8)); + assertEquals("13 key M0 [A]", -2, params.getColumnPos(9)); + assertEquals("13 key M0 [B]", 0, params.getColumnPos(10)); + assertEquals("13 key M0 [C]", 1, params.getColumnPos(11)); + assertEquals("13 key M0 [D]", -1, params.getColumnPos(12)); + assertEquals("13 key M0 adjust", 0, params.mTopRowAdjustment); + assertEquals("13 key M0 default", WIDTH * 2, params.getDefaultKeyCoordX()); } }