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

Unverified Commit 1f53d073 authored by LuK1337's avatar LuK1337 Committed by Michael Bestas
Browse files

PhoneWindowManager: Add support for back key long press customization

Change-Id: I28762c88d4777f8dbc8f213a2522875c3428fdab
parent 176787ee
Loading
Loading
Loading
Loading
+24 −12
Original line number Original line Diff line number Diff line
@@ -556,6 +556,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
    boolean mPendingCapsLockToggle;
    boolean mPendingCapsLockToggle;


    // Tracks user-customisable behavior for certain key events
    // Tracks user-customisable behavior for certain key events
    private Action mBackLongPressAction;
    private Action mHomeLongPressAction;
    private Action mHomeLongPressAction;
    private Action mHomeDoubleTapAction;
    private Action mHomeDoubleTapAction;
    private Action mMenuPressAction;
    private Action mMenuPressAction;
@@ -827,6 +828,9 @@ public class PhoneWindowManager implements WindowManagerPolicy {
            resolver.registerContentObserver(LineageSettings.System.getUriFor(
            resolver.registerContentObserver(LineageSettings.System.getUriFor(
                    LineageSettings.System.TORCH_LONG_PRESS_POWER_TIMEOUT), false, this,
                    LineageSettings.System.TORCH_LONG_PRESS_POWER_TIMEOUT), false, this,
                    UserHandle.USER_ALL);
                    UserHandle.USER_ALL);
            resolver.registerContentObserver(LineageSettings.System.getUriFor(
                    LineageSettings.System.KEY_BACK_LONG_PRESS_ACTION), false, this,
                    UserHandle.USER_ALL);
           resolver.registerContentObserver(LineageSettings.System.getUriFor(
           resolver.registerContentObserver(LineageSettings.System.getUriFor(
                    LineageSettings.System.KEY_HOME_LONG_PRESS_ACTION), false, this,
                    LineageSettings.System.KEY_HOME_LONG_PRESS_ACTION), false, this,
                    UserHandle.USER_ALL);
                    UserHandle.USER_ALL);
@@ -1300,13 +1304,14 @@ public class PhoneWindowManager implements WindowManagerPolicy {
    private void backLongPress() {
    private void backLongPress() {
        mBackKeyHandled = true;
        mBackKeyHandled = true;


        switch (mLongPressOnBackBehavior) {
        long now = SystemClock.uptimeMillis();
            case LONG_PRESS_BACK_NOTHING:
        KeyEvent event = new KeyEvent(now, now, KeyEvent.ACTION_DOWN,
                break;
                KEYCODE_BACK, 0, 0, KeyCharacterMap.VIRTUAL_KEYBOARD, 0,
            case LONG_PRESS_BACK_GO_TO_VOICE_ASSIST:
                KeyEvent.FLAG_FROM_SYSTEM, InputDevice.SOURCE_KEYBOARD);
                launchVoiceAssist(false /* allowDuringSetup */);

                break;
        performHapticFeedback(HapticFeedbackConstants.LONG_PRESS, false,
        }
                "Back - Long Press");
        performKeyAction(mBackLongPressAction, event);
    }
    }


    private void accessibilityShortcutActivated() {
    private void accessibilityShortcutActivated() {
@@ -1374,7 +1379,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
    }
    }


    private boolean hasLongPressOnBackBehavior() {
    private boolean hasLongPressOnBackBehavior() {
        return mLongPressOnBackBehavior != LONG_PRESS_BACK_NOTHING;
        return mBackLongPressAction != Action.NOTHING;
    }
    }


    private void interceptScreenshotChord() {
    private void interceptScreenshotChord() {
@@ -2315,11 +2320,8 @@ public class PhoneWindowManager implements WindowManagerPolicy {
            powerKeyGestures |= KEY_LONGPRESS;
            powerKeyGestures |= KEY_LONGPRESS;
        }
        }
        mSingleKeyGestureDetector.addRule(new PowerKeyRule(powerKeyGestures));
        mSingleKeyGestureDetector.addRule(new PowerKeyRule(powerKeyGestures));

        if (hasLongPressOnBackBehavior()) {
        mSingleKeyGestureDetector.addRule(new BackKeyRule(KEY_LONGPRESS));
        mSingleKeyGestureDetector.addRule(new BackKeyRule(KEY_LONGPRESS));
    }
    }
    }


    private void updateKeyAssignments() {
    private void updateKeyAssignments() {
        int activeHardwareKeys = mDeviceHardwareKeys;
        int activeHardwareKeys = mDeviceHardwareKeys;
@@ -2349,6 +2351,16 @@ public class PhoneWindowManager implements WindowManagerPolicy {


        mEdgeLongSwipeAction = Action.NOTHING;
        mEdgeLongSwipeAction = Action.NOTHING;


        mBackLongPressAction = Action.fromIntSafe(res.getInteger(
                org.lineageos.platform.internal.R.integer.config_longPressOnBackBehavior));
        if (mBackLongPressAction.ordinal() > Action.SLEEP.ordinal()) {
            mBackLongPressAction = Action.NOTHING;
        }

        mBackLongPressAction = Action.fromSettings(resolver,
                LineageSettings.System.KEY_BACK_LONG_PRESS_ACTION,
                mBackLongPressAction);

        mHomeLongPressAction = Action.fromIntSafe(res.getInteger(
        mHomeLongPressAction = Action.fromIntSafe(res.getInteger(
                org.lineageos.platform.internal.R.integer.config_longPressOnHomeBehavior));
                org.lineageos.platform.internal.R.integer.config_longPressOnHomeBehavior));
        if (mHomeLongPressAction.ordinal() > Action.SLEEP.ordinal()) {
        if (mHomeLongPressAction.ordinal() > Action.SLEEP.ordinal()) {