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

Commit 7bc61ca1 authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka
Browse files

Fix double tap shift key to turn off capslock mode

Bug: 5873562
Change-Id: If1f5ae1684905c1418ae43e55df38509444d29e2
parent d3f1caec
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -225,12 +225,13 @@ public class KeyboardSwitcher implements KeyboardState.SwitchActions,
            keyboard.setAutomaticTemporaryUpperCase();
        } else {
            final boolean shifted = (shiftMode == MANUAL_SHIFT);
            // TODO: Remove duplicated logic in KeyboardState#setShifted
            // On non-distinct multi touch panel device, we should also turn off the shift locked
            // state when shift key is pressed to go to normal mode.
            // On the other hand, on distinct multi touch panel device, turning off the shift
            // locked state with shift key pressing is handled by onReleaseShift().
            if (!hasDistinctMultitouch() && !shifted && mState.isShiftLocked()) {
                keyboard.setShiftLocked(false);
                setShiftLocked(false);
            }
            keyboard.setShifted(shifted);
        }
+10 −2
Original line number Diff line number Diff line
@@ -166,21 +166,29 @@ public class KeyboardState {
        if (DEBUG_STATE) {
            Log.d(TAG, "setShifted: shiftMode=" + shiftModeToString(shiftMode));
        }
        // TODO: Remove this hack in conjunction with duplicated logic below.
        boolean needsToTurnOffShiftLockedLater = false;
        if (shiftMode == SwitchActions.AUTOMATIC_SHIFT) {
            mKeyboardShiftState.setAutomaticTemporaryUpperCase();
        } else {
            // TODO: Duplicated logic in KeyboardSwitcher#setShifted()
            // TODO: Remove duplicated logic in KeyboardSwitcher#setShifted()
            final boolean shifted = (shiftMode == SwitchActions.MANUAL_SHIFT);
            // On non-distinct multi touch panel device, we should also turn off the shift locked
            // state when shift key is pressed to go to normal mode.
            // On the other hand, on distinct multi touch panel device, turning off the shift
            // locked state with shift key pressing is handled by onReleaseShift().
            if (!mHasDistinctMultitouch && !shifted && mKeyboardShiftState.isShiftLocked()) {
                mKeyboardShiftState.setShiftLocked(false);
                // Setting shift lock state should be delayed after
                // mSwitchActions.setShifted(shiftMode) is called, because in that call the state
                // is referenced.
                needsToTurnOffShiftLockedLater = true;
            }
            mKeyboardShiftState.setShifted(shifted);
        }
        mSwitchActions.setShifted(shiftMode);
        if (needsToTurnOffShiftLockedLater) {
            mKeyboardShiftState.setShiftLocked(false);
        }
    }

    private void setShiftLocked(boolean shiftLocked) {