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

Commit 052b162d authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka Committed by Android (Google) Code Review
Browse files

Merge "Add separate key hysteresis distance for sliding modifier input" into jb-mr1-dev

parents 792980d4 f731eb17
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -109,6 +109,8 @@
        <attr name="altCodeKeyWhileTypingFadeinAnimator" format="reference" />
        <attr name="altCodeKeyWhileTypingFadeinAnimator" format="reference" />
        <!-- Key detection hysteresis distance. -->
        <!-- Key detection hysteresis distance. -->
        <attr name="keyHysteresisDistance" format="dimension" />
        <attr name="keyHysteresisDistance" format="dimension" />
        <!-- Key detection hysteresis distance for shift/symbols sliding input. -->
        <attr name="keyHysteresisDistanceForSlidingModifier" format="dimension" />
        <!-- Touch noise threshold time in millisecond -->
        <!-- Touch noise threshold time in millisecond -->
        <attr name="touchNoiseThresholdTime" format="integer" />
        <attr name="touchNoiseThresholdTime" format="integer" />
        <!-- Touch noise threshold distance in millimeter -->
        <!-- Touch noise threshold distance in millimeter -->
+1 −0
Original line number Original line Diff line number Diff line
@@ -57,6 +57,7 @@
         Configuration for MainKeyboardView
         Configuration for MainKeyboardView
    -->
    -->
    <dimen name="config_key_hysteresis_distance">8.0dp</dimen>
    <dimen name="config_key_hysteresis_distance">8.0dp</dimen>
    <dimen name="config_key_hysteresis_distance_for_sliding_modifier">8.0dp</dimen>
    <integer name="config_touch_noise_threshold_time">40</integer>
    <integer name="config_touch_noise_threshold_time">40</integer>
    <dimen name="config_touch_noise_threshold_distance">12.6dp</dimen>
    <dimen name="config_touch_noise_threshold_distance">12.6dp</dimen>
    <bool name="config_sliding_key_input_enabled">true</bool>
    <bool name="config_sliding_key_input_enabled">true</bool>
+1 −0
Original line number Original line Diff line number Diff line
@@ -81,6 +81,7 @@
        <item name="gesturePreviewTrailEndWidth">@dimen/gesture_preview_trail_end_width</item>
        <item name="gesturePreviewTrailEndWidth">@dimen/gesture_preview_trail_end_width</item>
        <!-- Common attributes of MainKeyboardView -->
        <!-- Common attributes of MainKeyboardView -->
        <item name="keyHysteresisDistance">@dimen/config_key_hysteresis_distance</item>
        <item name="keyHysteresisDistance">@dimen/config_key_hysteresis_distance</item>
        <item name="keyHysteresisDistanceForSlidingModifier">@dimen/config_key_hysteresis_distance_for_sliding_modifier</item>
        <item name="touchNoiseThresholdTime">@integer/config_touch_noise_threshold_time</item>
        <item name="touchNoiseThresholdTime">@integer/config_touch_noise_threshold_time</item>
        <item name="touchNoiseThresholdDistance">@dimen/config_touch_noise_threshold_distance</item>
        <item name="touchNoiseThresholdDistance">@dimen/config_touch_noise_threshold_distance</item>
        <item name="slidingKeyInputEnable">@bool/config_sliding_key_input_enabled</item>
        <item name="slidingKeyInputEnable">@bool/config_sliding_key_input_enabled</item>
+19 −3
Original line number Original line Diff line number Diff line
@@ -21,6 +21,7 @@ import com.android.inputmethod.latin.Constants;


public class KeyDetector {
public class KeyDetector {
    private final int mKeyHysteresisDistanceSquared;
    private final int mKeyHysteresisDistanceSquared;
    private final int mKeyHysteresisDistanceForSlidingModifierSquared;


    private Keyboard mKeyboard;
    private Keyboard mKeyboard;
    private int mCorrectionX;
    private int mCorrectionX;
@@ -30,10 +31,24 @@ public class KeyDetector {
     * This class handles key detection.
     * This class handles key detection.
     *
     *
     * @param keyHysteresisDistance if the pointer movement distance is smaller than this, the
     * @param keyHysteresisDistance if the pointer movement distance is smaller than this, the
     * movement will not been handled as meaningful movement. The unit is pixel.
     * movement will not be handled as meaningful movement. The unit is pixel.
     */
     */
    public KeyDetector(float keyHysteresisDistance) {
    public KeyDetector(float keyHysteresisDistance) {
        this(keyHysteresisDistance, keyHysteresisDistance);
    }

    /**
     * This class handles key detection.
     *
     * @param keyHysteresisDistance if the pointer movement distance is smaller than this, the
     * movement will not be handled as meaningful movement. The unit is pixel.
     * @param keyHysteresisDistanceForSlidingModifier the same parameter for sliding input that
     * starts from a modifier key such as shift and symbols key.
     */
    public KeyDetector(float keyHysteresisDistance, float keyHysteresisDistanceForSlidingModifier) {
        mKeyHysteresisDistanceSquared = (int)(keyHysteresisDistance * keyHysteresisDistance);
        mKeyHysteresisDistanceSquared = (int)(keyHysteresisDistance * keyHysteresisDistance);
        mKeyHysteresisDistanceForSlidingModifierSquared = (int)(
                keyHysteresisDistanceForSlidingModifier * keyHysteresisDistanceForSlidingModifier);
    }
    }


    public void setKeyboard(Keyboard keyboard, float correctionX, float correctionY) {
    public void setKeyboard(Keyboard keyboard, float correctionX, float correctionY) {
@@ -45,8 +60,9 @@ public class KeyDetector {
        mKeyboard = keyboard;
        mKeyboard = keyboard;
    }
    }


    public int getKeyHysteresisDistanceSquared() {
    public int getKeyHysteresisDistanceSquared(boolean isSlidingFromModifier) {
        return mKeyHysteresisDistanceSquared;
        return isSlidingFromModifier
                ? mKeyHysteresisDistanceForSlidingModifierSquared : mKeyHysteresisDistanceSquared;
    }
    }


    public int getTouchX(int x) {
    public int getTouchX(int x) {
+4 −1
Original line number Original line Diff line number Diff line
@@ -389,7 +389,10 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack


        final float keyHysteresisDistance = a.getDimension(
        final float keyHysteresisDistance = a.getDimension(
                R.styleable.MainKeyboardView_keyHysteresisDistance, 0);
                R.styleable.MainKeyboardView_keyHysteresisDistance, 0);
        mKeyDetector = new KeyDetector(keyHysteresisDistance);
        final float keyHysteresisDistanceForSlidingModifier = a.getDimension(
                R.styleable.MainKeyboardView_keyHysteresisDistanceForSlidingModifier, 0);
        mKeyDetector = new KeyDetector(
                keyHysteresisDistance, keyHysteresisDistanceForSlidingModifier);
        mKeyTimerHandler = new KeyTimerHandler(this, a);
        mKeyTimerHandler = new KeyTimerHandler(this, a);
        mConfigShowMoreKeysKeyboardAtTouchedPoint = a.getBoolean(
        mConfigShowMoreKeysKeyboardAtTouchedPoint = a.getBoolean(
                R.styleable.MainKeyboardView_showMoreKeysKeyboardAtTouchedPoint, false);
                R.styleable.MainKeyboardView_showMoreKeysKeyboardAtTouchedPoint, false);
Loading