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

Commit 70f6a6a1 authored by Liana Kazanova (xWF)'s avatar Liana Kazanova (xWF) Committed by Android (Google) Code Review
Browse files

Merge changes from topic "revert-33464207-support_gemini_power_key_animation-OWWMRETITV" into main

* changes:
  Revert "Refactor Single key detector to provide start, complete ..."
  Revert "Allow PWM to pass key gesture event to KeyGestureController"
  Revert "Pass Long press assistant start, complete, cancel events"
parents 4ecc9607 98c7ca2f
Loading
Loading
Loading
Loading
+3 −26
Original line number Diff line number Diff line
@@ -132,8 +132,7 @@ public final class KeyGestureEvent {
    public static final int KEY_GESTURE_TYPE_SWITCH_TO_PREVIOUS_DESK = 77;
    public static final int KEY_GESTURE_TYPE_SWITCH_TO_NEXT_DESK = 78;

    public static final int FLAG_CANCELLED = 1 << 0;
    public static final int FLAG_LONG_PRESS = 1 << 1;
    public static final int FLAG_CANCELLED = 1;

    // NOTE: Valid KeyGestureEvent streams:
    //       - GESTURE_START -> GESTURE_CANCEL
@@ -405,10 +404,6 @@ public final class KeyGestureEvent {
        return (mKeyGestureEvent.flags & FLAG_CANCELLED) != 0;
    }

    public boolean isLongPress() {
        return (mKeyGestureEvent.flags & FLAG_LONG_PRESS) != 0;
    }

    public int getLogEvent() {
        if (getKeyGestureType() == KEY_GESTURE_TYPE_LAUNCH_APPLICATION) {
            return getLogEventFromLaunchAppData(getAppLaunchData());
@@ -437,9 +432,9 @@ public final class KeyGestureEvent {
                + "keycodes = " + java.util.Arrays.toString(mKeyGestureEvent.keycodes) + ", "
                + "modifierState = " + mKeyGestureEvent.modifierState + ", "
                + "keyGestureType = " + keyGestureTypeToString(mKeyGestureEvent.gestureType) + ", "
                + "action = " + actionToString(mKeyGestureEvent.action) + ", "
                + "action = " + mKeyGestureEvent.action + ", "
                + "displayId = " + mKeyGestureEvent.displayId + ", "
                + "flags = " + flagsToString(mKeyGestureEvent.flags) + ", "
                + "flags = " + mKeyGestureEvent.flags + ", "
                + "appLaunchData = " + getAppLaunchData()
                + " }";
    }
@@ -824,22 +819,4 @@ public final class KeyGestureEvent {
                return Integer.toHexString(value);
        }
    }

    private static String actionToString(int action) {
        return action == ACTION_GESTURE_START ? "START" : "COMPLETE";
    }

    private static String flagsToString(int flags) {
        StringBuilder res = new StringBuilder();
        if ((flags & FLAG_CANCELLED) != 0) {
            res.append("CANCELLED");
        }
        if ((flags & FLAG_LONG_PRESS) != 0) {
            if (!res.isEmpty()) {
                res.append(" | ");
            }
            res.append("LONG_PRESS");
        }
        return res.toString();
    }
}
+6 −2
Original line number Diff line number Diff line
@@ -265,10 +265,14 @@ public abstract class InputManagerInternal {
     * NOTE: This is a temporary API added to assist in a long-term refactor, and is not meant for
     * general use by system services.
     *
     * @param event the gesture event that needs to be handled.
     * @param deviceId the device ID of the keyboard using which the event was completed
     * @param keycodes the keys pressed for the event
     * @param modifierState the modifier state
     * @param event the gesture event that was completed
     *
     */
    public abstract void handleKeyGestureInKeyGestureController(@NonNull KeyGestureEvent event);
    public abstract void handleKeyGestureInKeyGestureController(int deviceId, int[] keycodes,
            int modifierState, @KeyGestureEvent.KeyGestureType int event);

    /**
     * Sets the magnification scale factor for pointer icons.
+3 −6
Original line number Diff line number Diff line
@@ -54,7 +54,6 @@ import android.hardware.display.DisplayManagerInternal;
import android.hardware.display.DisplayTopologyGraph;
import android.hardware.display.DisplayViewport;
import android.hardware.input.AidlInputGestureData;
import android.hardware.input.AppLaunchData;
import android.hardware.input.HostUsiVersion;
import android.hardware.input.IInputDeviceBatteryListener;
import android.hardware.input.IInputDeviceBatteryState;
@@ -3811,11 +3810,9 @@ public class InputManagerService extends IInputManager.Stub
        }

        @Override
        public void handleKeyGestureInKeyGestureController(@NonNull KeyGestureEvent event) {
            mKeyGestureController.handleKeyGesture(event.getDeviceId(), event.getKeycodes(),
                    event.getModifierState(), event.getKeyGestureType(), event.getAction(),
                    event.getDisplayId(), /* focusedToken = */null, event.getFlags(),
                    event.getAppLaunchData());
        public void handleKeyGestureInKeyGestureController(int deviceId, int[] keycodes,
                int modifierState, @KeyGestureEvent.KeyGestureType int gestureType) {
            mKeyGestureController.handleKeyGesture(deviceId, keycodes, modifierState, gestureType);
        }

        @Override
+18 −11
Original line number Diff line number Diff line
@@ -957,6 +957,7 @@ final class KeyGestureController {
                DEFAULT_DISPLAY, /* focusedToken = */null, /* flags = */0, appLaunchData);
    }

    @VisibleForTesting
    void handleKeyGesture(int deviceId, int[] keycodes, int modifierState,
            @KeyGestureEvent.KeyGestureType int gestureType, int action, int displayId,
            @Nullable IBinder focusedToken, int flags, @Nullable AppLaunchData appLaunchData) {
@@ -1012,6 +1013,14 @@ final class KeyGestureController {
        mHandler.obtainMessage(MSG_NOTIFY_KEY_GESTURE_EVENT, event).sendToTarget();
    }

    public void handleKeyGesture(int deviceId, int[] keycodes, int modifierState,
            @KeyGestureEvent.KeyGestureType int gestureType) {
        AidlKeyGestureEvent event = createKeyGestureEvent(deviceId, keycodes, modifierState,
                gestureType, KeyGestureEvent.ACTION_GESTURE_COMPLETE, DEFAULT_DISPLAY,
                /* flags = */0, /* appLaunchData = */null);
        handleKeyGesture(event, null /*focusedToken*/);
    }

    public void handleTouchpadGesture(int touchpadGestureType) {
        // Handle custom shortcuts
        InputGestureData customGesture;
@@ -1051,22 +1060,20 @@ final class KeyGestureController {

    @MainThread
    private void notifyKeyGestureEvent(AidlKeyGestureEvent event) {
        notifyAllListeners(event);
        KeyGestureEvent keyGestureEvent = new KeyGestureEvent(event);
        while (mLastHandledEvents.size() >= MAX_TRACKED_EVENTS) {
            mLastHandledEvents.removeFirst();
        }
        mLastHandledEvents.addLast(keyGestureEvent);
        boolean complete = keyGestureEvent.getAction() == KeyGestureEvent.ACTION_GESTURE_COMPLETE
                && !keyGestureEvent.isCancelled();
        if (complete) {
        InputDevice device = getInputDevice(event.deviceId);
        if (device == null) {
            return;
        }
        KeyGestureEvent keyGestureEvent = new KeyGestureEvent(event);
        if (event.action == KeyGestureEvent.ACTION_GESTURE_COMPLETE) {
            KeyboardMetricsCollector.logKeyboardSystemsEventReportedAtom(device, event.keycodes,
                    event.modifierState, keyGestureEvent.getLogEvent());
        }
        notifyAllListeners(event);
        while (mLastHandledEvents.size() >= MAX_TRACKED_EVENTS) {
            mLastHandledEvents.removeFirst();
        }
        mLastHandledEvents.addLast(keyGestureEvent);
    }

    @MainThread
+75 −165
Original line number Diff line number Diff line
@@ -82,12 +82,6 @@ import static android.view.contentprotection.flags.Flags.createAccessibilityOver

import static com.android.hardware.input.Flags.enableNew25q2Keycodes;
import static com.android.hardware.input.Flags.hidBluetoothWakeup;
import static com.android.server.policy.SingleKeyGestureEvent.ACTION_CANCEL;
import static com.android.server.policy.SingleKeyGestureEvent.ACTION_COMPLETE;
import static com.android.server.policy.SingleKeyGestureEvent.ACTION_START;
import static com.android.server.policy.SingleKeyGestureEvent.SINGLE_KEY_GESTURE_TYPE_LONG_PRESS;
import static com.android.server.policy.SingleKeyGestureEvent.SINGLE_KEY_GESTURE_TYPE_PRESS;
import static com.android.server.policy.SingleKeyGestureEvent.SINGLE_KEY_GESTURE_TYPE_VERY_LONG_PRESS;
import static com.android.server.policy.WindowManagerPolicy.WindowManagerFuncs.CAMERA_LENS_COVERED;
import static com.android.server.policy.WindowManagerPolicy.WindowManagerFuncs.CAMERA_LENS_COVER_ABSENT;
import static com.android.server.policy.WindowManagerPolicy.WindowManagerFuncs.CAMERA_LENS_UNCOVERED;
@@ -111,7 +105,6 @@ import static com.android.systemui.shared.Flags.enableLppAssistInvocationHapticE
import static com.android.window.flags.Flags.delegateBackGestureToShell;

import android.accessibilityservice.AccessibilityService;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SuppressLint;
import android.app.ActivityManager;
@@ -1445,6 +1438,21 @@ public class PhoneWindowManager implements WindowManagerPolicy {
        final int behavior = getResolvedLongPressOnPowerBehavior();
        Slog.d(TAG, "powerLongPress: eventTime=" + eventTime
                + " mLongPressOnPowerBehavior=" + mLongPressOnPowerBehavior);

        // Sending a synthetic KeyEvent to StatusBar service with flag FLAG_LONG_PRESS set, when
        // power button is long pressed
        if (enableLppAssistInvocationEffect()) {
            // Long press is detected in a callback, so there's no explicit hardware KeyEvent
            // available here. Instead, we create a synthetic power key event that has properties
            // similar to the original one.
            final KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN, KEYCODE_POWER);
            event.setFlags(KeyEvent.FLAG_LONG_PRESS);
            // setting both downTime and eventTime as same as downTime is sent as eventTime for long
            // press event in SingleKeyGestureDetector's handler
            event.setTime(eventTime, eventTime);
            sendSystemKeyToStatusBarAsync(event);
        }

        switch (behavior) {
            case LONG_PRESS_POWER_NOTHING:
                break;
@@ -1635,14 +1643,10 @@ public class PhoneWindowManager implements WindowManagerPolicy {
                }
                break;
            case DOUBLE_PRESS_PRIMARY_LAUNCH_DEFAULT_FITNESS_APP:
                mInputManagerInternal.handleKeyGestureInKeyGestureController(
                        new KeyGestureEvent.Builder()
                                .setKeyGestureType(
                                        KeyGestureEvent.KEY_GESTURE_TYPE_LAUNCH_DEFAULT_FITNESS)
                                .setDeviceId(INVALID_INPUT_DEVICE_ID)
                                .setKeycodes(new int[]{KEYCODE_STEM_PRIMARY})
                                .setModifierState(/* metaState= */0)
                                .build());
                final int stemPrimaryKeyDeviceId = INVALID_INPUT_DEVICE_ID;
                handleKeyGestureInKeyGestureController(
                        KeyGestureEvent.KEY_GESTURE_TYPE_LAUNCH_DEFAULT_FITNESS,
                        stemPrimaryKeyDeviceId, KEYCODE_STEM_PRIMARY, /* metaState= */ 0);
                break;
        }
    }
@@ -2492,35 +2496,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
        }

        @Override
        void onKeyGesture(@NonNull SingleKeyGestureEvent event) {
            final long startTime = event.getStartTime();
            final int displayId = event.getDisplayId();
            final int pressCount = event.getPressCount();
            final int action = event.getAction();
            switch (event.getType()) {
                case SINGLE_KEY_GESTURE_TYPE_PRESS:
                    if (action != ACTION_COMPLETE) {
                        return;
                    }
                    if (event.getPressCount() > 1) {
                        onMultiPress(startTime, pressCount, displayId);
                    } else {
                        onPress(startTime, displayId);
                    }
                    break;
                case SINGLE_KEY_GESTURE_TYPE_LONG_PRESS:
                    onLongPress(event);
                    break;
                case SINGLE_KEY_GESTURE_TYPE_VERY_LONG_PRESS:
                    if (action != ACTION_COMPLETE) {
                        return;
                    }
                    onVeryLongPress();
                    break;
            }
        }

        private void onPress(long downTime, int displayId) {
        void onPress(long downTime, int displayId) {
            if (mShouldEarlyShortPressOnPower) {
                return;
            }
@@ -2536,54 +2512,32 @@ public class PhoneWindowManager implements WindowManagerPolicy {
            }
        }

        private void onLongPress(@NonNull SingleKeyGestureEvent event) {
        @Override
        void onLongPress(long eventTime) {
            if (mSingleKeyGestureDetector.beganFromNonInteractive()
                    && !mSupportLongPressPowerWhenNonInteractive) {
                Slog.v(TAG, "Not support long press power when device is not interactive.");
                return;
            }
            // If Assistant mapped to long press, we send start, complete and cancel gesture
            // This is done to allow Assistant launch animation in SysUI. Will extend
            // this to all single key gestures after moving Single key gestures to
            // KeyGestureController.
            if (enableLppAssistInvocationEffect()) {
                // TODO(b/358569822): Remove this synthetic key event and directly listen to key
                //  gesture event in SysUI
                if (event.getAction() == ACTION_COMPLETE) {
                    // Long press is detected in a callback, so there's no explicit hardware
                    // KeyEvent available here. Instead, we create a synthetic power key event that
                    // has properties similar to the original one.
                    final KeyEvent keyEvent = new KeyEvent(KeyEvent.ACTION_DOWN, KEYCODE_POWER);
                    keyEvent.setFlags(KeyEvent.FLAG_LONG_PRESS);
                    // setting both downTime and eventTime as same as downTime is sent as eventTime
                    // for long press event in SingleKeyGestureDetector's handler
                    keyEvent.setTime(event.getStartTime(), event.getEventTime());
                    sendSystemKeyToStatusBarAsync(keyEvent);
                }
                if (getResolvedLongPressOnPowerBehavior() == LONG_PRESS_POWER_ASSISTANT) {
                    handleSingleKeyGestureInKeyGestureController(
                            KeyGestureEvent.KEY_GESTURE_TYPE_LAUNCH_ASSISTANT, event);
                    return;
                }
            }
            if (event.getAction() == ACTION_COMPLETE) {
                powerLongPress(event.getStartTime());
            }

            powerLongPress(eventTime);
        }

        private void onVeryLongPress() {
        @Override
        void onVeryLongPress(long eventTime) {
            mActivityManagerInternal.prepareForPossibleShutdown();
            powerVeryLongPress();
        }

        private void onMultiPress(long downTime, int count, int displayId) {
        @Override
        void onMultiPress(long downTime, int count, int displayId) {
            powerPress(downTime, count, displayId);
        }

        @Override
        void onKeyUp(int count, KeyEvent event) {
        void onKeyUp(long eventTime, int count, int displayId, int deviceId, int metaState) {
            if (mShouldEarlyShortPressOnPower && count == 1) {
                powerPress(event.getDownTime(), 1 /*pressCount*/, event.getDisplayId());
                powerPress(eventTime, 1 /*pressCount*/, displayId);
            }
        }
    }
@@ -2602,20 +2556,18 @@ public class PhoneWindowManager implements WindowManagerPolicy {
        }

        @Override
        void onKeyGesture(@NonNull SingleKeyGestureEvent event) {
            if (event.getAction() != ACTION_COMPLETE) {
                return;
        int getMaxMultiPressCount() {
            return 1;
        }
            switch (event.getType()) {
                case SINGLE_KEY_GESTURE_TYPE_PRESS:
                    if (event.getPressCount() == 1) {

        @Override
        void onPress(long downTime, int unusedDisplayId) {
            mBackKeyHandled |= backKeyPress();
        }
                    break;
                case SINGLE_KEY_GESTURE_TYPE_LONG_PRESS:

        @Override
        void onLongPress(long downTime) {
            backLongPress();
                    break;
            }
        }
    }

@@ -2638,27 +2590,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
        }

        @Override
        void onKeyGesture(@NonNull SingleKeyGestureEvent event) {
            final long startTime = event.getStartTime();
            final int pressCount = event.getPressCount();
            if (event.getAction() != ACTION_COMPLETE) {
                return;
            }
            switch (event.getType()) {
                case SINGLE_KEY_GESTURE_TYPE_PRESS:
                    if (event.getPressCount() > 1) {
                        onMultiPress(startTime, pressCount);
                    } else {
                        onPress(startTime);
                    }
                    break;
                case SINGLE_KEY_GESTURE_TYPE_LONG_PRESS:
                    onLongPress(startTime);
                    break;
            }
        }

        private void onPress(long downTime) {
        void onPress(long downTime, int unusedDisplayId) {
            if (shouldHandleStemPrimaryEarlyShortPress()) {
                return;
            }
@@ -2667,20 +2599,22 @@ public class PhoneWindowManager implements WindowManagerPolicy {
                    KeyEvent.KEYCODE_STEM_PRIMARY, downTime, () -> stemPrimaryPress(1 /*count*/));
        }

        private void onLongPress(long downTime) {
        @Override
        void onLongPress(long eventTime) {
            if (mLongPressOnStemPrimaryBehavior == LONG_PRESS_PRIMARY_LAUNCH_VOICE_ASSISTANT) {
                // Long-press to assistant gesture is not overridable by apps.
                stemPrimaryLongPress(downTime);
                stemPrimaryLongPress(eventTime);
            } else {
                // Other long-press actions should be triggered only if app doesn't handle it.
                mDeferredKeyActionExecutor.queueKeyAction(
                        KeyEvent.KEYCODE_STEM_PRIMARY,
                        downTime,
                        () -> stemPrimaryLongPress(downTime));
                        eventTime,
                        () -> stemPrimaryLongPress(eventTime));
            }
        }

        private void onMultiPress(long downTime, int count) {
        @Override
        void onMultiPress(long downTime, int count, int unusedDisplayId) {
            // Triple-press stem to toggle accessibility gesture should always be triggered
            // regardless of if app handles it.
            if (count == 3
@@ -2721,7 +2655,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
        }

        @Override
        void onKeyUp(int count, KeyEvent event) {
        void onKeyUp(long eventTime, int count, int displayId, int deviceId, int metaState) {
            if (count == 1) {
                // Save info about the most recent task on the first press of the stem key. This
                // may be used later to switch to the most recent app using double press gesture.
@@ -2738,7 +2672,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
                    // Key-up gesture should be triggered only if app doesn't handle it.
                    mDeferredKeyActionExecutor.queueKeyAction(
                            KeyEvent.KEYCODE_STEM_PRIMARY,
                            event.getDownTime(),
                            eventTime,
                            () -> {
                                Slog.d(TAG, "StemPrimaryKeyRule: executing deferred onKeyUp");
                                // Save the info of the focused task on screen. This may be used
@@ -2786,47 +2720,19 @@ public class PhoneWindowManager implements WindowManagerPolicy {
        }

        @Override
        void onKeyUp(int pressCount, KeyEvent event) {
        void onPress(long downTime, int displayId) {

        }

        @Override
        void onKeyUp(long eventTime, int pressCount, int displayId, int deviceId, int metaState) {
            if (pressCount != 1) {
                return;
            }
            // Single press on tail button triggers the open notes gesture.
            mInputManagerInternal.handleKeyGestureInKeyGestureController(
                    new KeyGestureEvent.Builder()
                            .setKeyGestureType(KeyGestureEvent.KEY_GESTURE_TYPE_OPEN_NOTES)
                            .setDeviceId(event.getDeviceId())
                            .setKeycodes(new int[]{KEYCODE_STYLUS_BUTTON_TAIL})
                            .setModifierState(event.getMetaState())
                            .build());
        }
    }

    // TODO(b/358569822): This is temporarily added to allow single key gestures to be processed
    //  through key gesture infra but keep the detection logic in PWM.
    private void handleSingleKeyGestureInKeyGestureController(
            @KeyGestureEvent.KeyGestureType int keyGestureType,
            @NonNull SingleKeyGestureEvent event) {
        int flags = 0;
        if (event.getType() == SINGLE_KEY_GESTURE_TYPE_LONG_PRESS) {
            flags |= KeyGestureEvent.FLAG_LONG_PRESS;
        } else {
            // Currently not supporting non-long press gestures
            return;
        }
        if (event.getAction() == ACTION_CANCEL) {
            flags |= KeyGestureEvent.FLAG_CANCELLED;
            handleKeyGestureInKeyGestureController(KeyGestureEvent.KEY_GESTURE_TYPE_OPEN_NOTES,
                    deviceId, KEYCODE_STYLUS_BUTTON_TAIL, metaState);
        }
        mInputManagerInternal.handleKeyGestureInKeyGestureController(
                new KeyGestureEvent.Builder()
                        .setKeycodes(new int[]{event.getKeyCode()})
                        .setDeviceId(event.getDeviceId())
                        .setKeyGestureType(keyGestureType)
                        .setFlags(flags)
                        .setAction(event.getAction() == ACTION_START
                                ? KeyGestureEvent.ACTION_GESTURE_START
                                : KeyGestureEvent.ACTION_GESTURE_COMPLETE)
                        .setDisplayId(event.getDisplayId())
                        .build());
    }

    private void initSingleKeyGestureRules(Looper looper) {
@@ -3317,6 +3223,16 @@ public class PhoneWindowManager implements WindowManagerPolicy {
                new int[]{event.getKeyCode()}, event.getMetaState(), gestureType);
    }

    private void handleKeyGestureInKeyGestureController(
            @KeyGestureEvent.KeyGestureType int gestureType, int deviceId, int keyCode,
            int metaState) {
        if (gestureType == KeyGestureEvent.KEY_GESTURE_TYPE_UNSPECIFIED) {
            return;
        }
        mInputManagerInternal.handleKeyGestureInKeyGestureController(deviceId, new int[]{keyCode},
                metaState, gestureType);
    }

    @Override
    public KeyboardShortcutGroup getApplicationLaunchKeyboardShortcuts(int deviceId) {
        return mModifierShortcutManager.getApplicationLaunchKeyboardShortcuts(deviceId,
@@ -3477,9 +3393,8 @@ public class PhoneWindowManager implements WindowManagerPolicy {
        int modifierState = event.getModifierState();
        boolean keyguardOn = keyguardOn();
        boolean canLaunchApp = isUserSetupComplete() && !keyguardOn;
        boolean isPowerKeyPressed = Arrays.stream(event.getKeycodes()).anyMatch(
                (keycode) -> keycode == KeyEvent.KEYCODE_POWER);
        if (complete && isPowerKeyPressed) {
        if (!event.isCancelled() && Arrays.stream(event.getKeycodes()).anyMatch(
                (keycode) -> keycode == KeyEvent.KEYCODE_POWER)) {
            mPowerKeyHandled = true;
        }
        switch (gestureType) {
@@ -3499,15 +3414,10 @@ public class PhoneWindowManager implements WindowManagerPolicy {
                break;
            case KeyGestureEvent.KEY_GESTURE_TYPE_LAUNCH_ASSISTANT:
            case KeyGestureEvent.KEY_GESTURE_TYPE_LAUNCH_VOICE_ASSISTANT:
                boolean isPowerLongPress = event.isLongPress() && isPowerKeyPressed;
                boolean shouldLaunchAssist = complete && (canLaunchApp || isPowerLongPress);
                if (shouldLaunchAssist) {
                    launchAssistAction(
                            isPowerLongPress ? null : Intent.EXTRA_ASSIST_INPUT_HINT_KEYBOARD,
                if (complete && canLaunchApp) {
                    launchAssistAction(Intent.EXTRA_ASSIST_INPUT_HINT_KEYBOARD,
                            deviceId, SystemClock.uptimeMillis(),
                            isPowerLongPress
                                    ? AssistUtils.INVOCATION_TYPE_POWER_BUTTON_LONG_PRESS
                                    : AssistUtils.INVOCATION_TYPE_UNKNOWN);
                            AssistUtils.INVOCATION_TYPE_UNKNOWN);
                }
                break;
            case KeyGestureEvent.KEY_GESTURE_TYPE_HOME:
Loading