diff options
| author | 2023-10-25 18:02:04 -0700 | |
|---|---|---|
| committer | 2023-11-08 07:41:27 +0000 | |
| commit | 2d1a1415493896f4ad8e51abdb7efe9019fe136f (patch) | |
| tree | ac15c2d1fb3f34b1c0ead5b43ddd69e0e1b1f032 | |
| parent | f4356a7a1a642a8cb4c30cc79e95ade9a0f2d96e (diff) | |
clobber wom: implement onKeyUp for StemPrimaryKeyRule
- Apply the callback for stem primary key. This is helpful for devices
that wish to trigger stem primary key press behavior without waiting
for the delay needed to check for consecutive presses.
- Added a new config, `config_shortPressEarlyOnStemPrimary` to guard
StemPrimary key's usage of this callback. If this config is enabled,
the single press behavior for stem primary key will run in response to
the first key up event, instead of using the `onPress` callback.
Test: atest WmTests:SingleKeyGestureTests
BUG: 297121934
Change-Id: I7ab3ebf2a79b74fb47fb74da80cb6e8d9c04dc87
| -rw-r--r-- | core/res/res/values/config.xml | 5 | ||||
| -rw-r--r-- | core/res/res/values/symbols.xml | 1 | ||||
| -rw-r--r-- | services/core/java/com/android/server/policy/PhoneWindowManager.java | 13 |
3 files changed, 19 insertions, 0 deletions
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index 862e537aa8c9..c632a2a41d46 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -1256,6 +1256,11 @@ --> <bool name="config_shortPressEarlyOnPower">false</bool> + <!-- Whether a single short press on STEM_PRIMARY should be launched without multi-press delay. + This works similarly as config_shortPressEarlyOnPower but for STEM_PRIMARY. + --> + <bool name="config_shortPressEarlyOnStemPrimary">false</bool> + <!-- Control the behavior of the search key. 0 - Launch default search activity 1 - Launch target activity defined by config_searchKeyTargetActivity diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 8748ca1f48a5..cd3844c25969 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -473,6 +473,7 @@ <java-symbol type="integer" name="config_doublePressOnStemPrimaryBehavior" /> <java-symbol type="integer" name="config_triplePressOnStemPrimaryBehavior" /> <java-symbol type="bool" name="config_shortPressEarlyOnPower" /> + <java-symbol type="bool" name="config_shortPressEarlyOnStemPrimary" /> <java-symbol type="string" name="config_doublePressOnPowerTargetActivity" /> <java-symbol type="integer" name="config_searchKeyBehavior" /> <java-symbol type="string" name="config_searchKeyTargetActivity" /> diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index 45ca690ba20f..cf1036c03c83 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -549,6 +549,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { int mLidNavigationAccessibility; int mShortPressOnPowerBehavior; private boolean mShouldEarlyShortPressOnPower; + private boolean mShouldEarlyShortPressOnStemPrimary; int mLongPressOnPowerBehavior; long mLongPressOnPowerAssistantTimeoutMs; int mVeryLongPressOnPowerBehavior; @@ -2748,6 +2749,9 @@ public class PhoneWindowManager implements WindowManagerPolicy { @Override void onPress(long downTime) { + if (mShouldEarlyShortPressOnStemPrimary) { + return; + } stemPrimaryPress(1 /*count*/); } @@ -2760,6 +2764,13 @@ public class PhoneWindowManager implements WindowManagerPolicy { void onMultiPress(long downTime, int count) { stemPrimaryPress(count); } + + @Override + void onKeyUp(long eventTime, int count) { + if (mShouldEarlyShortPressOnStemPrimary && count == 1) { + stemPrimaryPress(1 /*pressCount*/); + } + } } private void initSingleKeyGestureRules(Looper looper) { @@ -2929,6 +2940,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { mShouldEarlyShortPressOnPower = mContext.getResources() .getBoolean(com.android.internal.R.bool.config_shortPressEarlyOnPower); + mShouldEarlyShortPressOnStemPrimary = mContext.getResources().getBoolean( + com.android.internal.R.bool.config_shortPressEarlyOnStemPrimary); mStylusButtonsEnabled = Settings.Secure.getIntForUser(resolver, Secure.STYLUS_BUTTONS_ENABLED, 1, UserHandle.USER_CURRENT) == 1; |