Merge "Add Mouse keys A11Y settings to PK settings page" into main

This commit is contained in:
Asmita Poddar
2024-07-17 10:03:26 +00:00
committed by Android (Google) Code Review
3 changed files with 50 additions and 2 deletions

View File

@@ -4451,6 +4451,10 @@
<string name="sticky_keys">Sticky keys</string>
<!-- Summary text for the 'Sticky keys' preference sub-screen. [CHAR LIMIT=300] -->
<string name="sticky_keys_summary">Press one key at a time for shortcuts instead of holding keys down together</string>
<!-- Title for a toggle switch for 'mouse' keys, an accessibility setting that allows the mouse pointer to be controlled using certain keys on a physical keyboard if keyboard is connected. [CHAR LIMIT=35] -->
<string name="mouse_keys">Mouse keys</string>
<!-- Summary text for the accessibility setting 'Mouse keys' preference sub-screen. [CHAR LIMIT=100] -->
<string name="mouse_keys_summary">Use the physical keyboard to control the mouse.</string>
<!-- Title for the button to trigger the 'keyboard shortcuts helper' dialog. [CHAR LIMIT=35] -->
<string name="keyboard_shortcuts_helper">Keyboard shortcuts</string>
<!-- Summary text for the 'keyboard shortcuts helper' dialog. [CHAR LIMIT=100] -->

View File

@@ -53,5 +53,11 @@
android:title="@string/slow_keys"
android:defaultValue="false" />
<SwitchPreferenceCompat
android:key="accessibility_mouse_keys"
android:title="@string/mouse_keys"
android:summary="@string/mouse_keys_summary"
android:defaultValue="false" />
</PreferenceCategory>
</PreferenceScreen>

View File

@@ -73,6 +73,7 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment
private static final String ACCESSIBILITY_BOUNCE_KEYS = "accessibility_bounce_keys";
private static final String ACCESSIBILITY_SLOW_KEYS = "accessibility_slow_keys";
private static final String ACCESSIBILITY_STICKY_KEYS = "accessibility_sticky_keys";
private static final String ACCESSIBILITY_MOUSE_KEYS = "accessibility_mouse_keys";
private static final String KEYBOARD_SHORTCUTS_HELPER = "keyboard_shortcuts_helper";
private static final String MODIFIER_KEYS_SETTINGS = "modifier_keys_settings";
private static final String EXTRA_AUTO_SELECTION = "auto_selection";
@@ -84,6 +85,8 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment
Secure.ACCESSIBILITY_SLOW_KEYS);
private static final Uri sAccessibilityStickyKeysUri = Secure.getUriFor(
Secure.ACCESSIBILITY_STICKY_KEYS);
private static final Uri sAccessibilityMouseKeysUri = Secure.getUriFor(
Secure.ACCESSIBILITY_MOUSE_KEYS_ENABLED);
public static final int BOUNCE_KEYS_THRESHOLD = 500;
public static final int SLOW_KEYS_THRESHOLD = 500;
@@ -104,7 +107,8 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment
private TwoStatePreference mAccessibilitySlowKeys = null;
@Nullable
private TwoStatePreference mAccessibilityStickyKeys = null;
@Nullable
private TwoStatePreference mAccessibilityMouseKeys = null;
private Intent mIntentWaitingForResult;
private boolean mSupportsFirmwareUpdate;
@@ -138,6 +142,8 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment
getContext().getString(R.string.slow_keys_summary, SLOW_KEYS_THRESHOLD));
mAccessibilityStickyKeys = Objects.requireNonNull(
mKeyboardA11yCategory.findPreference(ACCESSIBILITY_STICKY_KEYS));
mAccessibilityMouseKeys = Objects.requireNonNull(
mKeyboardA11yCategory.findPreference(ACCESSIBILITY_MOUSE_KEYS));
FeatureFactory featureFactory = FeatureFactory.getFeatureFactory();
mMetricsFeatureProvider = featureFactory.getMetricsFeatureProvider();
@@ -160,6 +166,9 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment
if (!InputSettings.isAccessibilityStickyKeysFeatureEnabled()) {
mKeyboardA11yCategory.removePreference(mAccessibilityStickyKeys);
}
if (!InputSettings.isAccessibilityMouseKeysFeatureFlagEnabled()) {
mKeyboardA11yCategory.removePreference(mAccessibilityMouseKeys);
}
InputDeviceIdentifier inputDeviceIdentifier = activity.getIntent().getParcelableExtra(
KeyboardLayoutPickerFragment.EXTRA_INPUT_DEVICE_IDENTIFIER,
InputDeviceIdentifier.class);
@@ -208,6 +217,8 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment
mAccessibilitySlowKeysSwitchPreferenceChangeListener);
Objects.requireNonNull(mAccessibilityStickyKeys).setOnPreferenceChangeListener(
mAccessibilityStickyKeysSwitchPreferenceChangeListener);
Objects.requireNonNull(mAccessibilityMouseKeys).setOnPreferenceChangeListener(
mAccessibilityMouseKeysSwitchPreferenceChangeListener);
registerSettingsObserver();
}
@@ -219,6 +230,7 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment
Objects.requireNonNull(mAccessibilityBounceKeys).setOnPreferenceChangeListener(null);
Objects.requireNonNull(mAccessibilitySlowKeys).setOnPreferenceChangeListener(null);
Objects.requireNonNull(mAccessibilityStickyKeys).setOnPreferenceChangeListener(null);
Objects.requireNonNull(mAccessibilityMouseKeys).setOnPreferenceChangeListener(null);
unregisterSettingsObserver();
}
@@ -309,12 +321,14 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment
if (InputSettings.isAccessibilityBounceKeysFeatureEnabled()
|| InputSettings.isAccessibilityStickyKeysFeatureEnabled()
|| InputSettings.isAccessibilitySlowKeysFeatureFlagEnabled()) {
|| InputSettings.isAccessibilitySlowKeysFeatureFlagEnabled()
|| InputSettings.isAccessibilityMouseKeysFeatureFlagEnabled()) {
Objects.requireNonNull(mKeyboardA11yCategory).setOrder(2);
preferenceScreen.addPreference(mKeyboardA11yCategory);
updateAccessibilityBounceKeysSwitch();
updateAccessibilitySlowKeysSwitch();
updateAccessibilityStickyKeysSwitch();
updateAccessibilityMouseKeysSwitch();
}
}
@@ -365,9 +379,17 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment
mContentObserver,
UserHandle.myUserId());
}
if (InputSettings.isAccessibilityMouseKeysFeatureFlagEnabled()) {
contentResolver.registerContentObserver(
sAccessibilityMouseKeysUri,
false,
mContentObserver,
UserHandle.myUserId());
}
updateAccessibilityBounceKeysSwitch();
updateAccessibilitySlowKeysSwitch();
updateAccessibilityStickyKeysSwitch();
updateAccessibilityMouseKeysSwitch();
}
private void unregisterSettingsObserver() {
@@ -398,6 +420,14 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment
InputSettings.isAccessibilityStickyKeysEnabled(getContext()));
}
private void updateAccessibilityMouseKeysSwitch() {
if (!InputSettings.isAccessibilityMouseKeysFeatureFlagEnabled()) {
return;
}
Objects.requireNonNull(mAccessibilityMouseKeys).setChecked(
InputSettings.isAccessibilityMouseKeysEnabled(getContext()));
}
private void toggleKeyboardShortcutsMenu() {
getActivity().requestShowKeyboardShortcuts();
}
@@ -422,6 +452,12 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment
return true;
};
private final OnPreferenceChangeListener
mAccessibilityMouseKeysSwitchPreferenceChangeListener = (preference, newValue) -> {
InputSettings.setAccessibilityMouseKeysEnabled(getContext(), (Boolean) newValue);
return true;
};
private final ContentObserver mContentObserver = new ContentObserver(new Handler(true)) {
@Override
public void onChange(boolean selfChange, Uri uri) {
@@ -431,6 +467,8 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment
updateAccessibilitySlowKeysSwitch();
} else if (sAccessibilityStickyKeysUri.equals(uri)) {
updateAccessibilityStickyKeysSwitch();
} else if (sAccessibilityMouseKeysUri.equals(uri)) {
updateAccessibilityMouseKeysSwitch();
}
}
};