Add Mouse keys A11Y settings to PK settings page
Add the mouse keys toggle in the Settings under System > Keybord > Physical Keyboard > Mouse Keys. The toggle is shown when a physical keyboard is connected. DD: go/mouse-keys-android Bug: 341799888 Flag: com.android.hardware.input.keyboard_a11y_mouse_keys Test: manual Steps: 1. Connect a physical keyboard 2. Toggle the mouse keys setting to switch on the feature. 3. Mouse keys is enabled. 4. Switch off the mouse keys toggle under the setting. 5. Mouse keys is disabled. Change-Id: Ifda8c93fcc1f8b7c1fb2eccb7c91266360ff1fc8
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
Reference in New Issue
Block a user