Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6b38a5fd authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka
Browse files

Adaptive keyboard width/position parser (DO NOT MERGE)

This change introduces the following features to Keyboard XML format.

 * "keyXPos" can specify the key X coordinate directly.
 * "keyXPos" can be negative. The X coordinate will be calcluated from
    the right edge of the keyboard toward left.
 * "keyWidth" can be zero to be filled up to the right side.
 * "keyWidth can be negative. The key will be filled up to both sides.
 * Spacer's horizontalGap is renamed as keyWidth, and can be inherited
   from key-style.
 * Spacer can have keyXPos attribute.

Using these syntax, all keyboard layouts have been re-written.

Bug: 4442045
Change-Id: I314b2e8ca2aa145ff9506cbf927140a15685af42
parent ec8cb2eb
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -83,7 +83,12 @@
        <!-- Default width of a key, in pixels or percentage of display width. -->
        <attr name="keyWidth" format="dimension|fraction" />
        <!-- Default height of a row (key height + vertical gap), in pixels or percentage of
             keyboard height. -->
             keyboard height.
             If the value is zero, the actual key width will be determined to fill out the area up
             to the right edge of the keyboard.
             If the value is negative, the actual key width will be determined to fill out the
             area between the nearest key on the left hand side and the right edge of the keyboard.
             -->
        <attr name="rowHeight" format="dimension|fraction" />
        <!-- Default horizontal gap between keys. -->
        <attr name="horizontalGap" format="dimension|fraction" />
@@ -142,6 +147,9 @@
        <attr name="shiftedIcon" format="reference" />
        <!-- The key is enabled and responds on press. -->
        <attr name="enabled" format="boolean" />
        <!-- The X-coordinate of upper right corner of this key including horizontal gap.
             If the value is negative, the origin is the right edge of the keyboard. -->
        <attr name="keyXPos" format="dimension|fraction" />
    </declare-styleable>

    <declare-styleable name="Keyboard_Row">
+3 −3
Original line number Diff line number Diff line
@@ -35,7 +35,7 @@
        latin:rowEdgeFlags="top"
    >
        <Spacer
            latin:horizontalGap="5%p" />
            latin:keyWidth="5%p" />
        <Key
            latin:keyLabel="ק"
            latin:keyEdgeFlags="left" />
@@ -54,7 +54,7 @@
        <Key
            latin:keyLabel="פ" />
        <Spacer
            latin:horizontalGap="1.25%p" />
            latin:keyWidth="1.25%p" />
        <Key
            latin:keyStyle="deleteKeyStyle"
            latin:keyWidth="13.75%p"
@@ -86,7 +86,7 @@
    </Row>
    <Row>
        <Spacer
            latin:horizontalGap="5%p" />
            latin:keyWidth="5%p" />
        <Key
            latin:keyLabel="ז"
            latin:keyEdgeFlags="left" />
+41 −12
Original line number Diff line number Diff line
@@ -24,7 +24,7 @@
    <include
        latin:keyboardLayout="@xml/kbd_key_styles" />
    <Row
        latin:keyWidth="10%p"
        latin:keyWidth="9.0%p"
        latin:rowEdgeFlags="top"
    >
        <Key
@@ -67,11 +67,15 @@
        <Key
            latin:keyLabel="p"
            latin:keyHintIcon="@drawable/key_hint_num0_holo"
            latin:popupCharacters="@string/alternates_for_p"
            latin:popupCharacters="@string/alternates_for_p" />
        <Key
            latin:keyStyle="deleteKeyStyle"
            latin:keyXPos="-10.0%p"
            latin:keyWidth="-10.0%p"
            latin:keyEdgeFlags="right" />
    </Row>
    <Row
        latin:keyWidth="10%p"
        latin:keyWidth="9.0%p"
    >
        <Key
            latin:keyLabel="q"
@@ -99,15 +103,19 @@
            latin:keyLabel="l"
            latin:popupCharacters="@string/alternates_for_l" />
        <Key
            latin:keyLabel="m"
            latin:keyLabel="m" />
        <Key
            latin:keyStyle="returnKeyStyle"
            latin:keyXPos="-14.6%p"
            latin:keyWidth="-14.6%p"
            latin:keyEdgeFlags="right" />
    </Row>
    <Row
        latin:keyWidth="10%p"
        latin:keyWidth="8.9%p"
    >
        <Key
            latin:keyStyle="shiftKeyStyle"
            latin:keyWidth="15%p"
            latin:keyWidth="11.1%p"
            latin:keyEdgeFlags="left" />
        <Key
            latin:keyLabel="w"
@@ -116,7 +124,6 @@
            latin:keyLabel="x" />
        <Key
            latin:keyLabel="c"

            latin:popupCharacters="@string/alternates_for_c" />
        <Key
            latin:keyLabel="v"
@@ -128,10 +135,32 @@
            latin:popupCharacters="@string/alternates_for_n" />
        <Key
            latin:keyLabel="\'" />
        <switch>
            <case
                latin:mode="email"
            >
                <Key
            latin:keyStyle="deleteKeyStyle"
            latin:keyWidth="15%p"
            latin:keyEdgeFlags="right" />
                    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>
        <include
            latin:keyboardLayout="@xml/kbd_row3_right" />
   </Row>
    <include
        latin:keyboardLayout="@xml/kbd_qwerty_row4" />
+51 −57
Original line number Diff line number Diff line
@@ -37,38 +37,6 @@
                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" />
            <key-style
                latin:styleName="webTabKeyStyle"
                latin:code="@integer/key_tab"
                latin:keyIcon="@drawable/sym_keyboard_tab_holo"
                latin:iconPreview="@drawable/sym_keyboard_tab_holo"
                latin:keyHintIcon="@drawable/hint_popup_holo"
                latin:popupCharacters="\@drawable/sym_keyboard_settings|\@integer/key_settings"
                latin:parentStyle="functionalKeyStyle" />
          </case>
        <!-- latin:hasSettingsKey="false" -->
        <default>
            <key-style
                latin:styleName="settingsPopupStyle"
                latin:keyHintIcon="@drawable/hint_popup_holo"
                latin:popupCharacters="\@drawable/sym_keyboard_settings|\@integer/key_settings"
                latin:parentStyle="functionalKeyStyle" />
            <key-style
                latin:styleName="webTabKeyStyle"
                latin:code="@integer/key_tab"
                latin:keyIcon="@drawable/sym_keyboard_tab_holo"
                latin:iconPreview="@drawable/sym_keyboard_tab_holo"
                latin:parentStyle="functionalKeyStyle" />
        </default>
    </switch>
    <!-- Functional key styles -->
    <switch>
        <case
@@ -110,18 +78,28 @@
                latin:keyHintIcon="@drawable/hint_popup_holo"
                latin:popupCharacters="@string/alternates_for_smiley"
                latin:maxPopupKeyboardColumn="5" />
            <switch>
                <case
                    latin:voiceKeyEnabled="true"
                >
                    <key-style
                latin:styleName="settingsKeyStyle"
                        latin:styleName="micOrSettingsKeyStyle"
                        latin:code="@integer/key_voice"
                        latin:keyIcon="@drawable/sym_keyboard_voice_holo"
                        latin:iconPreview="@drawable/sym_keyboard_feedback_mic"
                        latin:keyHintIcon="@drawable/hint_popup_holo"
                        latin:popupCharacters="\@drawable/sym_keyboard_settings|\@integer/key_settings"
                        latin:parentStyle="functionalKeyStyle" />
                </case>
                <default>
                    <key-style
                        latin:styleName="micOrSettingsKeyStyle"
                        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="micKeyStyle"
                latin:code="@integer/key_voice"
                latin:keyIcon="@drawable/sym_keyboard_voice_holo"
                latin:iconPreview="@drawable/sym_keyboard_feedback_mic"
                latin:parentStyle="settingsPopupStyle" />
                </default>
            </switch>
        </case>
        <case
            latin:colorScheme="black"
@@ -162,20 +140,36 @@
                latin:keyHintIcon="@drawable/hint_popup_holo"
                latin:popupCharacters="@string/alternates_for_smiley"
                latin:maxPopupKeyboardColumn="5" />
            <switch>
                <case
                    latin:voiceKeyEnabled="true"
                >
                    <key-style
                        latin:styleName="micOrSettingsKeyStyle"
                        latin:code="@integer/key_voice"
                        latin:keyIcon="@drawable/sym_bkeyboard_mic"
                        latin:iconPreview="@drawable/sym_keyboard_feedback_mic"
                        latin:keyHintIcon="@drawable/hint_popup_holo"
                        latin:popupCharacters="\@drawable/sym_keyboard_settings|\@integer/key_settings"
                        latin:parentStyle="functionalKeyStyle" />
                </case>
                <default>
                    <key-style
                latin:styleName="settingsKeyStyle"
                        latin:styleName="micOrSettingsKeyStyle"
                        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="micKeyStyle"
                latin:code="@integer/key_voice"
                latin:keyIcon="@drawable/sym_bkeyboard_mic"
                latin:iconPreview="@drawable/sym_keyboard_feedback_mic"
                latin:parentStyle="settingsPopupStyle" />
                </default>
            </switch>
        </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"
+46 −62
Original line number Diff line number Diff line
@@ -23,7 +23,7 @@
    latin:keyboardHeight="@dimen/keyboardHeight"
    latin:maxKeyboardHeight="50%p"
    latin:rowHeight="25%p"
    latin:keyWidth="13.7%p"
    latin:keyWidth="12.7%p"
    latin:horizontalGap="@dimen/key_horizontal_gap"
    latin:verticalGap="@dimen/key_bottom_gap"
    latin:popupKeyboardTemplate="@xml/kbd_popup_template"
@@ -39,71 +39,68 @@
        >
            <!-- This row is intentionally not marked as a top row -->
            <Row>
                <Spacer
                    latin:horizontalGap="29.5%p" />
                <Key
                    latin:keyStyle="num1KeyStyle" />
                    latin:keyStyle="num1KeyStyle"
                    latin:keyXPos="29.5%p" />
                <Key
                    latin:keyStyle="num2KeyStyle" />
                <Key
                    latin:keyStyle="num3KeyStyle" />
                <Spacer
                    latin:horizontalGap="20.3%p" />
                <Key
                    latin:keyStyle="deleteKeyStyle"
                    latin:keyWidth="9.2%p"
                    latin:keyXPos="-10.0%p"
                    latin:keyWidth="0%p"
                    latin:keyEdgeFlags="right" />
            </Row>
            <Row>
                <Spacer
                    latin:horizontalGap="29.5%p" />
                <Key
                    latin:keyStyle="num4KeyStyle" />
                    latin:keyStyle="num4KeyStyle"
                    latin:keyXPos="29.5%p" />
                <Key
                    latin:keyStyle="num5KeyStyle" />
                <Key
                    latin:keyStyle="num6KeyStyle" />
                <Spacer
                    latin:horizontalGap="14.8%p" />
                <Key
                    latin:keyStyle="returnKeyStyle"
                    latin:keyWidth="14.6%p"
                    latin:keyXPos="-14.6%p"
                    latin:keyWidth="0%p"
                    latin:keyEdgeFlags="right" />
            </Row>
            <Row>
                <Spacer
                    latin:horizontalGap="29.5%p" />
                <Key
                    latin:keyStyle="num7KeyStyle" />
                    latin:keyStyle="num7KeyStyle"
                    latin:keyXPos="29.5%p" />
                <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>
                <Key
                    latin:keyStyle="tabKeyStyle"
                    latin:keyWidth="10.0%p"
                    latin:keyEdgeFlags="left" />
                <Spacer
                    latin:horizontalGap="43.2%p" />
                    latin:keyXPos="29.5%p" />
                <Key
                    latin:keyStyle="num0KeyStyle" />
                <Spacer
                    latin:horizontalGap="30.2%p" />
                <include
                    latin:keyboardLayout="@xml/kbd_settings" />
                <Spacer />
                <Key
                    latin:keyStyle="micOrSettingsKeyStyle"
                    latin:keyXPos="-10.0%p"
                    latin:keyWidth="0.0%p"
                    latin:keyEdgeFlags="right" />
            </Row>
        </case>
        <!-- latin:passwordInput="false" -->
        <default>
            <!-- This row is intentionally not marked as a top row -->
            <Row>
                <Spacer
                    latin:horizontalGap="10.0%p" />
                <Key
                    latin:code="45"
                    latin:keyLabel="-"
                    latin:keyXPos="14.5%p"
                    latin:keyWidth="9.1%p" />
                <Key
                    latin:code="43"
@@ -113,27 +110,24 @@
                    latin:code="44"
                    latin:keyLabel="."
                    latin:keyWidth="9.1%p" />
                <Spacer
                    latin:horizontalGap="4.5%p" />
                <Key
                    latin:keyLabel="1" />
                    latin:keyLabel="1"
                    latin:keyXPos="43.3%p" />
                <Key
                    latin:keyLabel="2" />
                <Key
                    latin:keyLabel="3" />
                <Spacer
                    latin:horizontalGap="8.1%p" />
                <Key
                    latin:keyStyle="deleteKeyStyle"
                    latin:keyWidth="9.2%p"
                    latin:keyXPos="-10.0%p"
                    latin:keyWidth="0%p"
                    latin:keyEdgeFlags="right" />
            </Row>
            <Row>
                <Spacer
                    latin:horizontalGap="10.0%p" />
                <Key
                    latin:code="44"
                    latin:keyLabel="*"
                    latin:keyXPos="14.5%p"
                    latin:keyWidth="9.1%p" />
                <Key
                    latin:code="46"
@@ -143,33 +137,27 @@
                    latin:code="59"
                    latin:keyLabel=","
                    latin:keyWidth="9.1%p" />
                <Spacer
                    latin:horizontalGap="4.5%p" />
                <Key
                    latin:keyLabel="4"
                    latin:keyWidth="13.7%p" />
                    latin:keyXPos="43.3%p" />
                <Key
                    latin:keyLabel="5" />
                <Key
                    latin:keyLabel="6" />
                <Spacer
                    latin:horizontalGap="2.6%p" />
                <Key
                    latin:keyStyle="returnKeyStyle"
                    latin:keyWidth="14.6%p"
                    latin:keyXPos="-14.6%p"
                    latin:keyWidth="0%p"
                    latin:keyEdgeFlags="right" />
            </Row>
            <Row>
                <Key
                    latin:keyStyle="moreKeyStyle"
                    latin:keyWidth="10.0%p"
                    latin:keyEdgeFlags="left" />
                <!-- 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. -->
                <Key
                    latin:code="40"
                    latin:keyLabel="("
                    latin:keyXPos="14.5%p"
                    latin:keyWidth="9.1%p" />
                <Key
                    latin:code="41"
@@ -179,40 +167,36 @@
                    latin:code="78"
                    latin:keyLabel="="
                    latin:keyWidth="9.1%p" />
                <Spacer
                    latin:horizontalGap="4.5%p" />
                <Key
                    latin:keyLabel="7" />
                    latin:keyLabel="7"
                    latin:keyXPos="43.3%p" />
                <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>
                <Spacer
                    latin:horizontalGap="10.0%p" />
                <!-- 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. -->
                <Key
                    latin:keyStyle="tabKeyStyle"
                    latin:keyWidth="10.0%p"
                    latin:keyEdgeFlags="left" />
                <Key
                    latin:keyStyle="nonSpecialBackgroundSpaceKeyStyle"
                    latin:keyXPos="14.5%p"
                    latin:keyWidth="27.2%p" />
                <Spacer
                    latin:horizontalGap="4.5%p" />
                <Key
                    latin:keyLabel="*" />
                    latin:keyLabel="*"
                    latin:keyXPos="43.3%p" />
                <Key
                    latin:keyLabel="0" />
                <Key
                    latin:keyLabel="#" />
                <Spacer
                    latin:horizontalGap="4.3%p" />
                <include
                    latin:keyboardLayout="@xml/kbd_settings" />
                <Key
                    latin:keyStyle="micOrSettingsKeyStyle"
                    latin:keyXPos="-10.0%p"
                    latin:keyWidth="0.0%p"
                    latin:keyEdgeFlags="right" />
            </Row>
        </default>
    </switch>
Loading