Loading core/java/android/hardware/input/InputSettings.java +10 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import static com.android.hardware.input.Flags.touchpadTapDragging; import static com.android.hardware.input.Flags.touchpadThreeFingerTapShortcut; import static com.android.hardware.input.Flags.touchpadVisualizer; import static com.android.hardware.input.Flags.useKeyGestureEventHandler; import static com.android.hardware.input.Flags.useKeyGestureEventHandlerMultiPressGestures; import static com.android.input.flags.Flags.FLAG_KEYBOARD_REPEAT_KEYS; import static com.android.input.flags.Flags.enableInputFilterRustImpl; import static com.android.input.flags.Flags.keyboardRepeatKeys; Loading Loading @@ -1147,4 +1148,13 @@ public class InputSettings { public static boolean isCustomizableInputGesturesFeatureFlagEnabled() { return enableCustomizableInputGestures() && useKeyGestureEventHandler(); } /** * Whether multi-key gestures are supported using {@code KeyGestureEventHandler} * * @hide */ public static boolean doesKeyGestureEventHandlerSupportMultiKeyGestures() { return useKeyGestureEventHandler() && useKeyGestureEventHandlerMultiPressGestures(); } } services/core/java/com/android/server/input/KeyGestureController.java +14 −13 Original line number Diff line number Diff line Loading @@ -21,8 +21,6 @@ import static android.content.pm.PackageManager.FEATURE_WATCH; import static android.view.WindowManagerPolicyConstants.FLAG_INTERACTIVE; import static com.android.hardware.input.Flags.enableNew25q2Keycodes; import static com.android.hardware.input.Flags.useKeyGestureEventHandler; import static com.android.hardware.input.Flags.useKeyGestureEventHandlerMultiPressGestures; import android.annotation.BinderThread; import android.annotation.MainThread; Loading Loading @@ -51,7 +49,6 @@ import android.os.Message; import android.os.Process; import android.os.RemoteException; import android.os.SystemClock; import android.os.SystemProperties; import android.os.UserHandle; import android.provider.Settings; import android.util.IndentingPrintWriter; Loading Loading @@ -215,7 +212,7 @@ final class KeyGestureController { } private void initKeyCombinationRules() { if (!useKeyGestureEventHandler() || !useKeyGestureEventHandlerMultiPressGestures()) { if (!InputSettings.doesKeyGestureEventHandlerSupportMultiKeyGestures()) { return; } // TODO(b/358569822): Handle Power, Back key properly since key combination gesture is Loading Loading @@ -441,7 +438,8 @@ final class KeyGestureController { public boolean interceptKeyBeforeQueueing(KeyEvent event, int policyFlags) { final boolean interactive = (policyFlags & FLAG_INTERACTIVE) != 0; if ((event.getFlags() & KeyEvent.FLAG_FALLBACK) == 0) { if (InputSettings.doesKeyGestureEventHandlerSupportMultiKeyGestures() && (event.getFlags() & KeyEvent.FLAG_FALLBACK) == 0) { return mKeyCombinationManager.interceptKey(event, interactive); } return false; Loading @@ -457,17 +455,20 @@ final class KeyGestureController { final long keyConsumed = -1; final long keyNotConsumed = 0; if (InputSettings.doesKeyGestureEventHandlerSupportMultiKeyGestures()) { if (mKeyCombinationManager.isKeyConsumed(event)) { return keyConsumed; } if ((flags & KeyEvent.FLAG_FALLBACK) == 0) { final long now = SystemClock.uptimeMillis(); final long interceptTimeout = mKeyCombinationManager.getKeyInterceptTimeout(keyCode); final long interceptTimeout = mKeyCombinationManager.getKeyInterceptTimeout( keyCode); if (now < interceptTimeout) { return interceptTimeout - now; } } } Set<Integer> consumedKeys = mConsumedKeysForDevice.get(deviceId); if (consumedKeys == null) { Loading services/core/java/com/android/server/policy/PhoneWindowManager.java +4 −4 Original line number Diff line number Diff line Loading @@ -88,7 +88,6 @@ import static com.android.hardware.input.Flags.enableTalkbackAndMagnifierKeyGest import static com.android.hardware.input.Flags.keyboardA11yShortcutControl; import static com.android.hardware.input.Flags.modifierShortcutDump; import static com.android.hardware.input.Flags.useKeyGestureEventHandler; import static com.android.hardware.input.Flags.useKeyGestureEventHandlerMultiPressGestures; import static com.android.server.flags.Flags.modifierShortcutManagerMultiuser; import static com.android.server.flags.Flags.newBugreportKeyboardShortcut; import static com.android.internal.config.sysui.SystemUiDeviceConfigFlags.SCREENSHOT_KEYCHORD_DELAY; Loading Loading @@ -2496,7 +2495,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { private void initKeyCombinationRules() { mKeyCombinationManager = new KeyCombinationManager(mHandler); if (useKeyGestureEventHandler() && useKeyGestureEventHandlerMultiPressGestures()) { if (InputSettings.doesKeyGestureEventHandlerSupportMultiKeyGestures()) { return; } final boolean screenshotChordEnabled = mContext.getResources().getBoolean( Loading Loading @@ -3442,7 +3441,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { + keyguardOn() + " canceled=" + event.isCanceled()); } if (!useKeyGestureEventHandler()) { if (!InputSettings.doesKeyGestureEventHandlerSupportMultiKeyGestures()) { if (mKeyCombinationManager.isKeyConsumed(event)) { return keyConsumed; } Loading Loading @@ -5720,7 +5719,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { } private void handleKeyGesture(KeyEvent event, boolean interactive, boolean defaultDisplayOn) { if (mKeyCombinationManager.interceptKey(event, interactive)) { if (!InputSettings.doesKeyGestureEventHandlerSupportMultiKeyGestures() && mKeyCombinationManager.interceptKey(event, interactive)) { // handled by combo keys manager. mSingleKeyGestureDetector.reset(); return; Loading Loading
core/java/android/hardware/input/InputSettings.java +10 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import static com.android.hardware.input.Flags.touchpadTapDragging; import static com.android.hardware.input.Flags.touchpadThreeFingerTapShortcut; import static com.android.hardware.input.Flags.touchpadVisualizer; import static com.android.hardware.input.Flags.useKeyGestureEventHandler; import static com.android.hardware.input.Flags.useKeyGestureEventHandlerMultiPressGestures; import static com.android.input.flags.Flags.FLAG_KEYBOARD_REPEAT_KEYS; import static com.android.input.flags.Flags.enableInputFilterRustImpl; import static com.android.input.flags.Flags.keyboardRepeatKeys; Loading Loading @@ -1147,4 +1148,13 @@ public class InputSettings { public static boolean isCustomizableInputGesturesFeatureFlagEnabled() { return enableCustomizableInputGestures() && useKeyGestureEventHandler(); } /** * Whether multi-key gestures are supported using {@code KeyGestureEventHandler} * * @hide */ public static boolean doesKeyGestureEventHandlerSupportMultiKeyGestures() { return useKeyGestureEventHandler() && useKeyGestureEventHandlerMultiPressGestures(); } }
services/core/java/com/android/server/input/KeyGestureController.java +14 −13 Original line number Diff line number Diff line Loading @@ -21,8 +21,6 @@ import static android.content.pm.PackageManager.FEATURE_WATCH; import static android.view.WindowManagerPolicyConstants.FLAG_INTERACTIVE; import static com.android.hardware.input.Flags.enableNew25q2Keycodes; import static com.android.hardware.input.Flags.useKeyGestureEventHandler; import static com.android.hardware.input.Flags.useKeyGestureEventHandlerMultiPressGestures; import android.annotation.BinderThread; import android.annotation.MainThread; Loading Loading @@ -51,7 +49,6 @@ import android.os.Message; import android.os.Process; import android.os.RemoteException; import android.os.SystemClock; import android.os.SystemProperties; import android.os.UserHandle; import android.provider.Settings; import android.util.IndentingPrintWriter; Loading Loading @@ -215,7 +212,7 @@ final class KeyGestureController { } private void initKeyCombinationRules() { if (!useKeyGestureEventHandler() || !useKeyGestureEventHandlerMultiPressGestures()) { if (!InputSettings.doesKeyGestureEventHandlerSupportMultiKeyGestures()) { return; } // TODO(b/358569822): Handle Power, Back key properly since key combination gesture is Loading Loading @@ -441,7 +438,8 @@ final class KeyGestureController { public boolean interceptKeyBeforeQueueing(KeyEvent event, int policyFlags) { final boolean interactive = (policyFlags & FLAG_INTERACTIVE) != 0; if ((event.getFlags() & KeyEvent.FLAG_FALLBACK) == 0) { if (InputSettings.doesKeyGestureEventHandlerSupportMultiKeyGestures() && (event.getFlags() & KeyEvent.FLAG_FALLBACK) == 0) { return mKeyCombinationManager.interceptKey(event, interactive); } return false; Loading @@ -457,17 +455,20 @@ final class KeyGestureController { final long keyConsumed = -1; final long keyNotConsumed = 0; if (InputSettings.doesKeyGestureEventHandlerSupportMultiKeyGestures()) { if (mKeyCombinationManager.isKeyConsumed(event)) { return keyConsumed; } if ((flags & KeyEvent.FLAG_FALLBACK) == 0) { final long now = SystemClock.uptimeMillis(); final long interceptTimeout = mKeyCombinationManager.getKeyInterceptTimeout(keyCode); final long interceptTimeout = mKeyCombinationManager.getKeyInterceptTimeout( keyCode); if (now < interceptTimeout) { return interceptTimeout - now; } } } Set<Integer> consumedKeys = mConsumedKeysForDevice.get(deviceId); if (consumedKeys == null) { Loading
services/core/java/com/android/server/policy/PhoneWindowManager.java +4 −4 Original line number Diff line number Diff line Loading @@ -88,7 +88,6 @@ import static com.android.hardware.input.Flags.enableTalkbackAndMagnifierKeyGest import static com.android.hardware.input.Flags.keyboardA11yShortcutControl; import static com.android.hardware.input.Flags.modifierShortcutDump; import static com.android.hardware.input.Flags.useKeyGestureEventHandler; import static com.android.hardware.input.Flags.useKeyGestureEventHandlerMultiPressGestures; import static com.android.server.flags.Flags.modifierShortcutManagerMultiuser; import static com.android.server.flags.Flags.newBugreportKeyboardShortcut; import static com.android.internal.config.sysui.SystemUiDeviceConfigFlags.SCREENSHOT_KEYCHORD_DELAY; Loading Loading @@ -2496,7 +2495,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { private void initKeyCombinationRules() { mKeyCombinationManager = new KeyCombinationManager(mHandler); if (useKeyGestureEventHandler() && useKeyGestureEventHandlerMultiPressGestures()) { if (InputSettings.doesKeyGestureEventHandlerSupportMultiKeyGestures()) { return; } final boolean screenshotChordEnabled = mContext.getResources().getBoolean( Loading Loading @@ -3442,7 +3441,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { + keyguardOn() + " canceled=" + event.isCanceled()); } if (!useKeyGestureEventHandler()) { if (!InputSettings.doesKeyGestureEventHandlerSupportMultiKeyGestures()) { if (mKeyCombinationManager.isKeyConsumed(event)) { return keyConsumed; } Loading Loading @@ -5720,7 +5719,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { } private void handleKeyGesture(KeyEvent event, boolean interactive, boolean defaultDisplayOn) { if (mKeyCombinationManager.interceptKey(event, interactive)) { if (!InputSettings.doesKeyGestureEventHandlerSupportMultiKeyGestures() && mKeyCombinationManager.interceptKey(event, interactive)) { // handled by combo keys manager. mSingleKeyGestureDetector.reset(); return; Loading