Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 541038eb authored by Asmita Poddar's avatar Asmita Poddar Committed by Android (Google) Code Review
Browse files

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

parents 9f5e4101 78b485a3
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -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] -->
+6 −0
Original line number Diff line number Diff line
@@ -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>
+40 −2
Original line number Diff line number Diff line
@@ -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();
            }
        }
    };