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

Commit 327763e5 authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka
Browse files

Adaptive keyboard width/position parser

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.

Cherry-Pick: I314b2e8ca2aa145ff9506cbf927140a15685af42
Bug: 4442045
Change-Id: I048fe5eaef020d8472ab577e9d326042bae2f3fa
parent 88251a95
Loading
Loading
Loading
Loading
+13 −2
Original line number Diff line number Diff line
@@ -94,8 +94,16 @@
        <!-- Minimum keyboard height represented in pixels, percentage of display height if fraction
             is positive, or percentage of display width if fraction is negative. -->
        <attr name="minKeyboardHeight" format="dimension|fraction" />
        <!-- Default width of a key, in pixels or percentage of display width. -->
        <attr name="keyWidth" format="dimension|fraction" />
        <!-- Default width of a key, in pixels or percentage of display width.
             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="keyWidth" format="dimension|fraction|enum">
            <enum name="fillRight" value="0" />
            <enum name="fillBoth" value="-1" />
        </attr>
        <!-- Default height of a row (key height + vertical gap), in pixels or percentage of
             keyboard height. -->
        <attr name="rowHeight" format="dimension|fraction" />
@@ -161,6 +169,9 @@
        <!-- Visual insets -->
        <attr name="visualInsetsLeft" format="dimension|fraction" />
        <attr name="visualInsetsRight" format="dimension|fraction" />
        <!-- 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">
+15 −9
Original line number Diff line number Diff line
@@ -27,12 +27,12 @@
    <include
        latin:keyboardLayout="@xml/kbd_key_styles" />
    <Row
        latin:keyWidth="7.49%p"
        latin:keyWidth="7.579%p"
    >
        <Key
            latin:keyStyle="tabKeyStyle"
            latin:keyLabelOption="alignLeft"
            latin:keyWidth="7.949%p"
            latin:keyWidth="7.969%p"
            latin:keyEdgeFlags="left" />
        <Key
            latin:keyLabel="ض" />
@@ -61,16 +61,17 @@
            latin:popupCharacters="ج,چ" />
        <Key
            latin:keyStyle="deleteKeyStyle"
            latin:keyWidth="9.331%p"
            latin:keyXPos="-9.219%p"
            latin:keyWidth="fillBoth"
            latin:keyEdgeFlags="right" />
    </Row>
    <Row
        latin:keyWidth="7.49%p"
        latin:keyWidth="7.500%p"
    >
        <Key
            latin:keyStyle="toSymbolKeyStyle"
            latin:keyLabelOption="alignLeft"
            latin:keyWidth="7.949%p"
            latin:keyWidth="9.219%p"
            latin:keyEdgeFlags="left" />
        <Key
            latin:keyLabel="ش" />
@@ -100,15 +101,19 @@
            latin:keyLabel="ط" />
        <Key
            latin:keyStyle="returnKeyStyle"
            latin:keyWidth="8.593%p"
            latin:keyXPos="-15.704%p"
            latin:keyWidth="fillBoth"
            latin:keyEdgeFlags="right" />
    </Row>
    <Row
        latin:keyWidth="8.042%p"
        latin:keyWidth="7.500%p"
    >
        <Key
            latin:keyLabel="ئ"
            latin:keyStyle="shiftKeyStyle"
            latin:keyWidth="9.219%p"
            latin:keyEdgeFlags="left" />
        <Key
            latin:keyLabel="ئ" />
        <Key
            latin:keyLabel="ء" />
        <Key
@@ -132,7 +137,8 @@
            latin:keyLabel="د" />
        <Key
            latin:keyStyle="shiftKeyStyle"
            latin:keyWidth="11.736%p"
            latin:keyXPos="-13.750%p"
            latin:keyWidth="fillBoth"
            latin:keyEdgeFlags="right" />
    </Row>
    <include latin:keyboardLayout="@xml/kbd_qwerty_row4" />
+11 −8
Original line number Diff line number Diff line
@@ -24,12 +24,12 @@
    <include
        latin:keyboardLayout="@xml/kbd_key_styles" />
    <Row
        latin:keyWidth="8.272%p"
        latin:keyWidth="8.282%p"
    >
        <Key
            latin:keyStyle="tabKeyStyle"
            latin:keyLabelOption="alignLeft"
            latin:keyWidth="7.949%p"
            latin:keyWidth="7.969%p"
            latin:keyEdgeFlags="left" />
        <Key
            latin:keyLabel="a"
@@ -63,11 +63,12 @@
            latin:popupCharacters="@string/alternates_for_p" />
        <Key
            latin:keyStyle="deleteKeyStyle"
            latin:keyWidth="9.331%p"
            latin:keyXPos="-9.219%p"
            latin:keyWidth="fillBoth"
            latin:keyEdgeFlags="right" />
    </Row>
    <Row
        latin:keyWidth="8.157%p"
        latin:keyWidth="8.125%p"
    >
        <Key
            latin:keyStyle="toSymbolKeyStyle"
@@ -103,15 +104,16 @@
            latin:keyEdgeFlags="right" />
        <Key
            latin:keyStyle="returnKeyStyle"
            latin:keyWidth="8.593%p"
            latin:keyXPos="-15.704%p"
            latin:keyWidth="fillBoth"
            latin:keyEdgeFlags="right" />
    </Row>
    <Row
        latin:keyWidth="8.042%p"
        latin:keyWidth="8.047%p"
    >
        <Key
            latin:keyStyle="shiftKeyStyle"
            latin:keyWidth="15.192%p"
            latin:keyWidth="13.829%p"
            latin:keyEdgeFlags="left" />
        <Key
            latin:keyLabel="w"
@@ -161,7 +163,8 @@
        </switch>
        <Key
            latin:keyStyle="shiftKeyStyle"
            latin:keyWidth="12.530%p"
            latin:keyXPos="-13.750%p"
            latin:keyWidth="fillBoth"
            latin:keyEdgeFlags="right" />
    </Row>
    <include
+11 −8
Original line number Diff line number Diff line
@@ -24,12 +24,12 @@
    <include
        latin:keyboardLayout="@xml/kbd_key_styles" />
    <Row
        latin:keyWidth="8.272%p"
        latin:keyWidth="8.282%p"
    >
        <Key
            latin:keyStyle="tabKeyStyle"
            latin:keyLabelOption="alignLeft"
            latin:keyWidth="7.949%p"
            latin:keyWidth="7.969%p"
            latin:keyEdgeFlags="left" />
        <Key
            latin:keyLabel="," />
@@ -53,11 +53,12 @@
            latin:keyLabel="פ" />
        <Key
            latin:keyStyle="deleteKeyStyle"
            latin:keyWidth="9.331%p"
            latin:keyXPos="-9.219%p"
            latin:keyWidth="fillBoth"
            latin:keyEdgeFlags="right" />
    </Row>
    <Row
        latin:keyWidth="8.157%p"
        latin:keyWidth="8.125%p"
    >
        <Key
            latin:keyStyle="toSymbolKeyStyle"
@@ -89,15 +90,16 @@
            latin:keyLabel="ף" />
        <Key
            latin:keyStyle="returnKeyStyle"
            latin:keyWidth="8.593%p"
            latin:keyXPos="-15.704%p"
            latin:keyWidth="fillBoth"
            latin:keyEdgeFlags="right" />
    </Row>
    <Row
        latin:keyWidth="8.042%p"
        latin:keyWidth="8.047%p"
    >
        <Key
            latin:keyStyle="shiftKeyStyle"
            latin:keyWidth="15.192%p"
            latin:keyWidth="13.829%p"
            latin:keyEdgeFlags="left" />
        <Key
            latin:keyLabel="ז"
@@ -123,7 +125,8 @@
            latin:popupCharacters="ץ,ץ׳" />
        <Key
            latin:keyStyle="shiftKeyStyle"
            latin:keyWidth="12.530%p"
            latin:keyXPos="-13.750%p"
            latin:keyWidth="fillBoth"
            latin:keyEdgeFlags="right" />
    </Row>
    <include latin:keyboardLayout="@xml/kbd_qwerty_row4" />
+47 −65
Original line number Diff line number Diff line
@@ -24,7 +24,7 @@
    latin:maxKeyboardHeight="@fraction/maxKeyboardHeight"
    latin:minKeyboardHeight="@fraction/minKeyboardHeight"
    latin:rowHeight="25%p"
    latin:keyWidth="11.949%p"
    latin:keyWidth="11.954%p"
    latin:horizontalGap="@dimen/key_horizontal_gap"
    latin:verticalGap="@dimen/key_bottom_gap"
    latin:popupKeyboardTemplate="@xml/kbd_popup_template"
@@ -40,42 +40,42 @@
        >
            <!-- This row is intentionally not marked as a top row -->
            <Row>
                <Spacer
                    latin:horizontalGap="32.076%p" />
                <Key
                    latin:keyStyle="num1KeyStyle" />
                    latin:keyStyle="tabKeyStyle"
                    latin:keyLabelOption="alignLeft"
                    latin:keyWidth="7.969%p"
                    latin:keyEdgeFlags="left" />
                <Key
                    latin:keyStyle="num1KeyStyle"
                    latin:keyXPos="32.076%p" />
                <Key
                    latin:keyStyle="num2KeyStyle" />
                <Key
                    latin:keyStyle="num3KeyStyle" />
                <Spacer
                    latin:horizontalGap="22.272%p" />
                <Key
                    latin:keyStyle="deleteKeyStyle"
                    latin:keyWidth="9.804%p"
                    latin:keyXPos="-9.219%p"
                    latin:keyWidth="fillRight"
                    latin:keyEdgeFlags="right" />
            </Row>
            <Row>
                <Spacer
                    latin:horizontalGap="32.076%p" />
                <Key
                    latin:keyStyle="num4KeyStyle" />
                    latin:keyStyle="num4KeyStyle"
                    latin:keyXPos="32.076%p" />
                <Key
                    latin:keyStyle="num5KeyStyle" />
                <Key
                    latin:keyStyle="num6KeyStyle" />
                <Spacer
                    latin:horizontalGap="17.371%p" />
                <Key
                    latin:keyStyle="returnKeyStyle"
                    latin:keyWidth="14.706%p"
                    latin:keyXPos="-15.704%p"
                    latin:keyWidth="fillRight"
                    latin:keyEdgeFlags="right" />
            </Row>
            <Row>
                <Spacer
                    latin:horizontalGap="32.076%p" />
                <Key
                    latin:keyStyle="num7KeyStyle" />
                    latin:keyStyle="num7KeyStyle"
                    latin:keyXPos="32.076%p" />
                <Key
                    latin:keyStyle="num8KeyStyle" />
                <Key
@@ -87,7 +87,7 @@
            <!-- This row is intentionally not marked as a bottom row -->
            <Row>
                <Spacer
                    latin:horizontalGap="44.026%p" />
                    latin:keyXPos="32.076%p" />
                <Key
                    latin:keyStyle="num0KeyStyle" />
                <!-- There is an empty area below the "Enter" key and right of the "#" key. To
@@ -102,79 +102,72 @@
                <Key
                    latin:keyStyle="tabKeyStyle"
                    latin:keyLabelOption="alignLeft"
                    latin:keyWidth="7.969%p"
                    latin:keyEdgeFlags="left" />
                <Spacer
                    latin:horizontalGap="4.458%p" />
                <Key
                    latin:keyLabel="-"
                    latin:keyWidth="8.042%p" />
                    latin:keyXPos="13.829%p"
                    latin:keyWidth="8.047%p" />
                <Key
                    latin:keyLabel="+"
                    latin:keyWidth="8.042%p" />
                    latin:keyWidth="8.047%p" />
                <Key
                    latin:keyLabel="."
                    latin:keyWidth="8.042%p" />
                <Spacer
                    latin:horizontalGap="4.458%p" />
                    latin:keyWidth="8.047%p" />
                <Key
                    latin:keyLabel="1" />
                    latin:keyLabel="1"
                    latin:keyXPos="45.000%p" />
                <Key
                    latin:keyLabel="2" />
                <Key
                    latin:keyLabel="3" />
                <Spacer
                    latin:horizontalGap="9.360%p" />
                <Key
                    latin:keyStyle="deleteKeyStyle"
                    latin:keyWidth="9.804%p"
                    latin:keyXPos="-9.219%p"
                    latin:keyWidth="fillRight"
                    latin:keyEdgeFlags="right" />
            </Row>
            <Row>
                <Spacer
                    latin:horizontalGap="16.406%p" />
                <Key
                    latin:keyLabel="*"
                    latin:keyWidth="8.042%p" />
                    latin:keyXPos="13.829%p"
                    latin:keyWidth="8.047%p" />
                <Key
                    latin:keyLabel="/"
                    latin:keyWidth="8.042%p" />
                    latin:keyWidth="8.047%p" />
                <Key
                    latin:keyLabel=","
                    latin:keyWidth="8.042%p" />
                <Spacer
                    latin:horizontalGap="4.458%p" />
                    latin:keyWidth="8.047%p" />
                <Key
                    latin:keyLabel="4" />
                    latin:keyLabel="4"
                    latin:keyXPos="45.000%p" />
                <Key
                    latin:keyLabel="5" />
                <Key
                    latin:keyLabel="6" />
                <Spacer
                    latin:horizontalGap="4.458%p" />
                <Key
                    latin:keyStyle="returnKeyStyle"
                    latin:keyWidth="14.706%p"
                    latin:keyXPos="-15.704%p"
                    latin:keyWidth="fillRight"
                    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" />
                    latin:keyXPos="13.829%p"
                    latin:keyWidth="8.047%p" />
                <Key
                    latin:keyLabel=")"
                    latin:keyWidth="8.042%p" />
                    latin:keyWidth="8.047%p" />
                <Key
                    latin:keyLabel="="
                    latin:keyWidth="8.042%p" />
                <Spacer
                    latin:horizontalGap="4.458%p" />
                    latin:keyWidth="8.047%p" />
                <Key
                    latin:keyLabel="7" />
                    latin:keyLabel="7"
                    latin:keyXPos="45.000%p" />
                <Key
                    latin:keyLabel="8" />
                <Key
@@ -185,29 +178,20 @@
            </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" />
                            latin:keyWidth="8.047%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" />
                    latin:keyXPos="13.829%p"
                    latin:keyWidth="24.140%p" />
                <Key
                    latin:keyLabel="*" />
                    latin:keyLabel="*"
                    latin:keyXPos="45.000%p" />
                <Key
                    latin:keyLabel="0" />
                <Key
@@ -218,12 +202,10 @@
                    >
                        <Key
                            latin:keyStyle="micKeyStyle"
                            latin:keyWidth="8.042%p" />
                            latin:keyXPos="-8.047%p"
                            latin:keyWidth="fillRight" />
                    </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>
Loading