diff options
7 files changed, 24 insertions, 7 deletions
diff --git a/core/java/android/hardware/input/InputSettings.java b/core/java/android/hardware/input/InputSettings.java index 5a713cf28535..114459e5e819 100644 --- a/core/java/android/hardware/input/InputSettings.java +++ b/core/java/android/hardware/input/InputSettings.java @@ -522,8 +522,11 @@ public class InputSettings { * @hide */ public static boolean useTouchpadThreeFingerTapShortcut(@NonNull Context context) { - // TODO(b/365063048): determine whether to enable the shortcut based on the settings. - return isTouchpadThreeFingerTapShortcutFeatureFlagEnabled(); + int customizedShortcut = Settings.System.getIntForUser(context.getContentResolver(), + Settings.System.TOUCHPAD_THREE_FINGER_TAP_CUSTOMIZATION, + KeyGestureEvent.KEY_GESTURE_TYPE_UNSPECIFIED, UserHandle.USER_CURRENT); + return customizedShortcut != KeyGestureEvent.KEY_GESTURE_TYPE_UNSPECIFIED + && isTouchpadThreeFingerTapShortcutFeatureFlagEnabled(); } /** diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 19b0c6fcdd77..23f76299d8c4 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -6271,6 +6271,14 @@ public final class Settings { public static final String TOUCHPAD_TAP_DRAGGING = "touchpad_tap_dragging"; /** + * Whether to enable three finger tap customization on touchpads. + * + * @hide + */ + public static final String TOUCHPAD_THREE_FINGER_TAP_CUSTOMIZATION = + "touchpad_three_finger_tap_customization"; + + /** * Whether to enable a right-click zone on touchpads. * * When set to 1, pressing to click in a section on the right-hand side of the touchpad will diff --git a/core/proto/android/providers/settings/system.proto b/core/proto/android/providers/settings/system.proto index 9779dc0e00b8..16d25657f08e 100644 --- a/core/proto/android/providers/settings/system.proto +++ b/core/proto/android/providers/settings/system.proto @@ -217,6 +217,7 @@ message SystemSettingsProto { optional SettingProto right_click_zone = 3 [ (android.privacy).dest = DEST_AUTOMATIC ]; optional SettingProto tap_to_click = 4 [ (android.privacy).dest = DEST_AUTOMATIC ]; optional SettingProto tap_dragging = 5 [ (android.privacy).dest = DEST_AUTOMATIC ]; + optional SettingProto three_finger_tap_customization = 6 [ (android.privacy).dest = DEST_AUTOMATIC ]; } optional Touchpad touchpad = 36; diff --git a/packages/SettingsProvider/src/android/provider/settings/backup/SystemSettings.java b/packages/SettingsProvider/src/android/provider/settings/backup/SystemSettings.java index 3530e0f5f9de..8e7180c4dc8d 100644 --- a/packages/SettingsProvider/src/android/provider/settings/backup/SystemSettings.java +++ b/packages/SettingsProvider/src/android/provider/settings/backup/SystemSettings.java @@ -78,6 +78,7 @@ public class SystemSettings { Settings.System.SHOW_WEB_SUGGESTIONS, Settings.System.SIP_CALL_OPTIONS, Settings.System.SIP_RECEIVE_CALLS, + Settings.System.TOUCHPAD_THREE_FINGER_TAP_CUSTOMIZATION, Settings.System.POINTER_SPEED, Settings.System.POINTER_FILL_STYLE, Settings.System.POINTER_STROKE_STYLE, diff --git a/packages/SettingsProvider/src/android/provider/settings/validators/SystemSettingsValidators.java b/packages/SettingsProvider/src/android/provider/settings/validators/SystemSettingsValidators.java index 509b88b257fe..cfc7743f0a8d 100644 --- a/packages/SettingsProvider/src/android/provider/settings/validators/SystemSettingsValidators.java +++ b/packages/SettingsProvider/src/android/provider/settings/validators/SystemSettingsValidators.java @@ -213,6 +213,8 @@ public class SystemSettingsValidators { VALIDATORS.put(System.SIP_ADDRESS_ONLY, BOOLEAN_VALIDATOR); VALIDATORS.put(System.SIP_ASK_ME_EACH_TIME, BOOLEAN_VALIDATOR); VALIDATORS.put(System.POINTER_SPEED, new InclusiveFloatRangeValidator(-7, 7)); + VALIDATORS.put(System.TOUCHPAD_THREE_FINGER_TAP_CUSTOMIZATION, + NON_NEGATIVE_INTEGER_VALIDATOR); VALIDATORS.put(System.POINTER_FILL_STYLE, new InclusiveIntegerRangeValidator(POINTER_ICON_VECTOR_STYLE_FILL_BEGIN, POINTER_ICON_VECTOR_STYLE_FILL_END)); diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java index fb0aaf8e5ae1..600c36e5dfc9 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java @@ -3037,6 +3037,9 @@ class SettingsProtoDumpUtil { dumpSetting(s, p, Settings.System.TOUCHPAD_TAP_DRAGGING, SystemSettingsProto.Touchpad.TAP_DRAGGING); + dumpSetting(s, p, + Settings.System.TOUCHPAD_THREE_FINGER_TAP_CUSTOMIZATION, + SystemSettingsProto.Touchpad.THREE_FINGER_TAP_CUSTOMIZATION); p.end(touchpadToken); dumpSetting(s, p, diff --git a/services/core/java/com/android/server/input/InputSettingsObserver.java b/services/core/java/com/android/server/input/InputSettingsObserver.java index 420db9041dc2..3b2305cec9db 100644 --- a/services/core/java/com/android/server/input/InputSettingsObserver.java +++ b/services/core/java/com/android/server/input/InputSettingsObserver.java @@ -117,7 +117,10 @@ class InputSettingsObserver extends ContentObserver { Map.entry(Settings.System.getUriFor(Settings.System.POINTER_STROKE_STYLE), (reason) -> updatePointerStrokeStyleFromSettings()), Map.entry(Settings.System.getUriFor(Settings.System.POINTER_SCALE), - (reason) -> updatePointerScaleFromSettings())); + (reason) -> updatePointerScaleFromSettings()), + Map.entry(Settings.System.getUriFor( + Settings.System.TOUCHPAD_THREE_FINGER_TAP_CUSTOMIZATION), + (reason) -> updateTouchpadThreeFingerTapShortcutEnabled())); } /** @@ -143,10 +146,6 @@ class InputSettingsObserver extends ContentObserver { observer.accept("just booted"); } - // TODO(b/365063048): add an entry to mObservers that calls this instead, once we have a - // setting that can be observed. - updateTouchpadThreeFingerTapShortcutEnabled(); - configureUserActivityPokeInterval(); } |