Loading res/values/strings.xml +4 −0 Original line number Diff line number Diff line Loading @@ -4311,6 +4311,10 @@ <string name="bounce_keys">Bounce keys</string> <!-- Summary text for the 'Bounce keys' preference sub-screen. [CHAR LIMIT=100] --> <string name="bounce_keys_summary">Enable Bounce keys for physical keyboard accessibility</string> <!-- Title for the 'Slow keys' preference switch. [CHAR LIMIT=35] --> <string name="slow_keys">Slow keys</string> <!-- Summary text for the 'Slow keys' preference sub-screen. [CHAR LIMIT=100] --> <string name="slow_keys_summary">Enable Slow keys for physical keyboard accessibility</string> <!-- Title for the 'Sticky keys' preference switch. [CHAR LIMIT=35] --> <string name="sticky_keys">Sticky keys</string> <!-- Summary text for the 'Sticky keys' preference sub-screen. [CHAR LIMIT=100] --> Loading res/xml/physical_keyboard_settings.xml +12 −6 Original line number Diff line number Diff line Loading @@ -43,17 +43,23 @@ android:key="keyboard_a11y_category" android:title="@string/keyboard_a11y_category"> <SwitchPreference android:key="accessibility_bounce_keys" android:title="@string/bounce_keys" android:summary="@string/bounce_keys_summary" android:defaultValue="false" /> <SwitchPreference android:key="accessibility_sticky_keys" android:title="@string/sticky_keys" android:summary="@string/sticky_keys_summary" android:defaultValue="false" /> <SwitchPreference android:key="accessibility_slow_keys" android:title="@string/slow_keys" android:summary="@string/slow_keys_summary" android:defaultValue="false" /> <SwitchPreference android:key="accessibility_bounce_keys" android:title="@string/bounce_keys" android:summary="@string/bounce_keys_summary" android:defaultValue="false" /> </PreferenceCategory> </PreferenceScreen> src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java +41 −1 Original line number Diff line number Diff line Loading @@ -70,6 +70,7 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment private static final String KEYBOARD_A11Y_CATEGORY = "keyboard_a11y_category"; private static final String SHOW_VIRTUAL_KEYBOARD_SWITCH = "show_virtual_keyboard_switch"; 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 KEYBOARD_SHORTCUTS_HELPER = "keyboard_shortcuts_helper"; private static final String MODIFIER_KEYS_SETTINGS = "modifier_keys_settings"; Loading @@ -78,6 +79,8 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment Secure.SHOW_IME_WITH_HARD_KEYBOARD); private static final Uri sAccessibilityBounceKeysUri = Secure.getUriFor( Secure.ACCESSIBILITY_BOUNCE_KEYS); private static final Uri sAccessibilitySlowKeysUri = Secure.getUriFor( Secure.ACCESSIBILITY_SLOW_KEYS); private static final Uri sAccessibilityStickyKeysUri = Secure.getUriFor( Secure.ACCESSIBILITY_STICKY_KEYS); Loading @@ -97,6 +100,8 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment @Nullable private TwoStatePreference mAccessibilityBounceKeys = null; @Nullable private TwoStatePreference mAccessibilitySlowKeys = null; @Nullable private TwoStatePreference mAccessibilityStickyKeys = null; Loading Loading @@ -127,6 +132,8 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment mKeyboardA11yCategory = Objects.requireNonNull(findPreference(KEYBOARD_A11Y_CATEGORY)); mAccessibilityBounceKeys = Objects.requireNonNull( mKeyboardA11yCategory.findPreference(ACCESSIBILITY_BOUNCE_KEYS)); mAccessibilitySlowKeys = Objects.requireNonNull( mKeyboardA11yCategory.findPreference(ACCESSIBILITY_SLOW_KEYS)); mAccessibilityStickyKeys = Objects.requireNonNull( mKeyboardA11yCategory.findPreference(ACCESSIBILITY_STICKY_KEYS)); Loading @@ -147,6 +154,9 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment if (!InputSettings.isAccessibilityBounceKeysFeatureEnabled()) { mKeyboardA11yCategory.removePreference(mAccessibilityBounceKeys); } if (!InputSettings.isAccessibilitySlowKeysFeatureFlagEnabled()) { mKeyboardA11yCategory.removePreference(mAccessibilitySlowKeys); } if (!InputSettings.isAccessibilityStickyKeysFeatureEnabled()) { mKeyboardA11yCategory.removePreference(mAccessibilityStickyKeys); } Loading Loading @@ -196,6 +206,8 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment mShowVirtualKeyboardSwitchPreferenceChangeListener); Objects.requireNonNull(mAccessibilityBounceKeys).setOnPreferenceChangeListener( mAccessibilityBounceKeysSwitchPreferenceChangeListener); Objects.requireNonNull(mAccessibilitySlowKeys).setOnPreferenceChangeListener( mAccessibilitySlowKeysSwitchPreferenceChangeListener); Objects.requireNonNull(mAccessibilityStickyKeys).setOnPreferenceChangeListener( mAccessibilityStickyKeysSwitchPreferenceChangeListener); registerSettingsObserver(); Loading @@ -208,6 +220,7 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment mIm.unregisterInputDeviceListener(this); Objects.requireNonNull(mShowVirtualKeyboardSwitch).setOnPreferenceChangeListener(null); Objects.requireNonNull(mAccessibilityBounceKeys).setOnPreferenceChangeListener(null); Objects.requireNonNull(mAccessibilitySlowKeys).setOnPreferenceChangeListener(null); Objects.requireNonNull(mAccessibilityStickyKeys).setOnPreferenceChangeListener(null); unregisterSettingsObserver(); } Loading Loading @@ -315,10 +328,12 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment updateShowVirtualKeyboardSwitch(); if (InputSettings.isAccessibilityBounceKeysFeatureEnabled() || InputSettings.isAccessibilityStickyKeysFeatureEnabled()) { || InputSettings.isAccessibilityStickyKeysFeatureEnabled() || InputSettings.isAccessibilitySlowKeysFeatureFlagEnabled()) { Objects.requireNonNull(mKeyboardA11yCategory).setOrder(2); preferenceScreen.addPreference(mKeyboardA11yCategory); updateAccessibilityBounceKeysSwitch(); updateAccessibilitySlowKeysSwitch(); updateAccessibilityStickyKeysSwitch(); } } Loading Loading @@ -356,6 +371,13 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment mContentObserver, UserHandle.myUserId()); } if (InputSettings.isAccessibilitySlowKeysFeatureFlagEnabled()) { contentResolver.registerContentObserver( sAccessibilitySlowKeysUri, false, mContentObserver, UserHandle.myUserId()); } if (InputSettings.isAccessibilityStickyKeysFeatureEnabled()) { contentResolver.registerContentObserver( sAccessibilityStickyKeysUri, Loading @@ -365,6 +387,7 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment } updateShowVirtualKeyboardSwitch(); updateAccessibilityBounceKeysSwitch(); updateAccessibilitySlowKeysSwitch(); updateAccessibilityStickyKeysSwitch(); } Loading @@ -385,6 +408,14 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment InputSettings.isAccessibilityBounceKeysEnabled(getContext())); } private void updateAccessibilitySlowKeysSwitch() { if (!InputSettings.isAccessibilitySlowKeysFeatureFlagEnabled()) { return; } Objects.requireNonNull(mAccessibilitySlowKeys).setChecked( InputSettings.isAccessibilitySlowKeysEnabled(getContext())); } private void updateAccessibilityStickyKeysSwitch() { if (!InputSettings.isAccessibilityStickyKeysFeatureEnabled()) { return; Loading Loading @@ -413,6 +444,13 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment return true; }; private final OnPreferenceChangeListener mAccessibilitySlowKeysSwitchPreferenceChangeListener = (preference, newValue) -> { InputSettings.setAccessibilitySlowKeysThreshold(getContext(), ((Boolean) newValue) ? 500 : 0); return true; }; private final OnPreferenceChangeListener mAccessibilityStickyKeysSwitchPreferenceChangeListener = (preference, newValue) -> { InputSettings.setAccessibilityStickyKeysEnabled(getContext(), (Boolean) newValue); Loading @@ -426,6 +464,8 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment updateShowVirtualKeyboardSwitch(); } else if (sAccessibilityBounceKeysUri.equals(uri)) { updateAccessibilityBounceKeysSwitch(); } else if (sAccessibilitySlowKeysUri.equals(uri)) { updateAccessibilitySlowKeysSwitch(); } else if (sAccessibilityStickyKeysUri.equals(uri)) { updateAccessibilityStickyKeysSwitch(); } Loading Loading
res/values/strings.xml +4 −0 Original line number Diff line number Diff line Loading @@ -4311,6 +4311,10 @@ <string name="bounce_keys">Bounce keys</string> <!-- Summary text for the 'Bounce keys' preference sub-screen. [CHAR LIMIT=100] --> <string name="bounce_keys_summary">Enable Bounce keys for physical keyboard accessibility</string> <!-- Title for the 'Slow keys' preference switch. [CHAR LIMIT=35] --> <string name="slow_keys">Slow keys</string> <!-- Summary text for the 'Slow keys' preference sub-screen. [CHAR LIMIT=100] --> <string name="slow_keys_summary">Enable Slow keys for physical keyboard accessibility</string> <!-- Title for the 'Sticky keys' preference switch. [CHAR LIMIT=35] --> <string name="sticky_keys">Sticky keys</string> <!-- Summary text for the 'Sticky keys' preference sub-screen. [CHAR LIMIT=100] --> Loading
res/xml/physical_keyboard_settings.xml +12 −6 Original line number Diff line number Diff line Loading @@ -43,17 +43,23 @@ android:key="keyboard_a11y_category" android:title="@string/keyboard_a11y_category"> <SwitchPreference android:key="accessibility_bounce_keys" android:title="@string/bounce_keys" android:summary="@string/bounce_keys_summary" android:defaultValue="false" /> <SwitchPreference android:key="accessibility_sticky_keys" android:title="@string/sticky_keys" android:summary="@string/sticky_keys_summary" android:defaultValue="false" /> <SwitchPreference android:key="accessibility_slow_keys" android:title="@string/slow_keys" android:summary="@string/slow_keys_summary" android:defaultValue="false" /> <SwitchPreference android:key="accessibility_bounce_keys" android:title="@string/bounce_keys" android:summary="@string/bounce_keys_summary" android:defaultValue="false" /> </PreferenceCategory> </PreferenceScreen>
src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java +41 −1 Original line number Diff line number Diff line Loading @@ -70,6 +70,7 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment private static final String KEYBOARD_A11Y_CATEGORY = "keyboard_a11y_category"; private static final String SHOW_VIRTUAL_KEYBOARD_SWITCH = "show_virtual_keyboard_switch"; 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 KEYBOARD_SHORTCUTS_HELPER = "keyboard_shortcuts_helper"; private static final String MODIFIER_KEYS_SETTINGS = "modifier_keys_settings"; Loading @@ -78,6 +79,8 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment Secure.SHOW_IME_WITH_HARD_KEYBOARD); private static final Uri sAccessibilityBounceKeysUri = Secure.getUriFor( Secure.ACCESSIBILITY_BOUNCE_KEYS); private static final Uri sAccessibilitySlowKeysUri = Secure.getUriFor( Secure.ACCESSIBILITY_SLOW_KEYS); private static final Uri sAccessibilityStickyKeysUri = Secure.getUriFor( Secure.ACCESSIBILITY_STICKY_KEYS); Loading @@ -97,6 +100,8 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment @Nullable private TwoStatePreference mAccessibilityBounceKeys = null; @Nullable private TwoStatePreference mAccessibilitySlowKeys = null; @Nullable private TwoStatePreference mAccessibilityStickyKeys = null; Loading Loading @@ -127,6 +132,8 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment mKeyboardA11yCategory = Objects.requireNonNull(findPreference(KEYBOARD_A11Y_CATEGORY)); mAccessibilityBounceKeys = Objects.requireNonNull( mKeyboardA11yCategory.findPreference(ACCESSIBILITY_BOUNCE_KEYS)); mAccessibilitySlowKeys = Objects.requireNonNull( mKeyboardA11yCategory.findPreference(ACCESSIBILITY_SLOW_KEYS)); mAccessibilityStickyKeys = Objects.requireNonNull( mKeyboardA11yCategory.findPreference(ACCESSIBILITY_STICKY_KEYS)); Loading @@ -147,6 +154,9 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment if (!InputSettings.isAccessibilityBounceKeysFeatureEnabled()) { mKeyboardA11yCategory.removePreference(mAccessibilityBounceKeys); } if (!InputSettings.isAccessibilitySlowKeysFeatureFlagEnabled()) { mKeyboardA11yCategory.removePreference(mAccessibilitySlowKeys); } if (!InputSettings.isAccessibilityStickyKeysFeatureEnabled()) { mKeyboardA11yCategory.removePreference(mAccessibilityStickyKeys); } Loading Loading @@ -196,6 +206,8 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment mShowVirtualKeyboardSwitchPreferenceChangeListener); Objects.requireNonNull(mAccessibilityBounceKeys).setOnPreferenceChangeListener( mAccessibilityBounceKeysSwitchPreferenceChangeListener); Objects.requireNonNull(mAccessibilitySlowKeys).setOnPreferenceChangeListener( mAccessibilitySlowKeysSwitchPreferenceChangeListener); Objects.requireNonNull(mAccessibilityStickyKeys).setOnPreferenceChangeListener( mAccessibilityStickyKeysSwitchPreferenceChangeListener); registerSettingsObserver(); Loading @@ -208,6 +220,7 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment mIm.unregisterInputDeviceListener(this); Objects.requireNonNull(mShowVirtualKeyboardSwitch).setOnPreferenceChangeListener(null); Objects.requireNonNull(mAccessibilityBounceKeys).setOnPreferenceChangeListener(null); Objects.requireNonNull(mAccessibilitySlowKeys).setOnPreferenceChangeListener(null); Objects.requireNonNull(mAccessibilityStickyKeys).setOnPreferenceChangeListener(null); unregisterSettingsObserver(); } Loading Loading @@ -315,10 +328,12 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment updateShowVirtualKeyboardSwitch(); if (InputSettings.isAccessibilityBounceKeysFeatureEnabled() || InputSettings.isAccessibilityStickyKeysFeatureEnabled()) { || InputSettings.isAccessibilityStickyKeysFeatureEnabled() || InputSettings.isAccessibilitySlowKeysFeatureFlagEnabled()) { Objects.requireNonNull(mKeyboardA11yCategory).setOrder(2); preferenceScreen.addPreference(mKeyboardA11yCategory); updateAccessibilityBounceKeysSwitch(); updateAccessibilitySlowKeysSwitch(); updateAccessibilityStickyKeysSwitch(); } } Loading Loading @@ -356,6 +371,13 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment mContentObserver, UserHandle.myUserId()); } if (InputSettings.isAccessibilitySlowKeysFeatureFlagEnabled()) { contentResolver.registerContentObserver( sAccessibilitySlowKeysUri, false, mContentObserver, UserHandle.myUserId()); } if (InputSettings.isAccessibilityStickyKeysFeatureEnabled()) { contentResolver.registerContentObserver( sAccessibilityStickyKeysUri, Loading @@ -365,6 +387,7 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment } updateShowVirtualKeyboardSwitch(); updateAccessibilityBounceKeysSwitch(); updateAccessibilitySlowKeysSwitch(); updateAccessibilityStickyKeysSwitch(); } Loading @@ -385,6 +408,14 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment InputSettings.isAccessibilityBounceKeysEnabled(getContext())); } private void updateAccessibilitySlowKeysSwitch() { if (!InputSettings.isAccessibilitySlowKeysFeatureFlagEnabled()) { return; } Objects.requireNonNull(mAccessibilitySlowKeys).setChecked( InputSettings.isAccessibilitySlowKeysEnabled(getContext())); } private void updateAccessibilityStickyKeysSwitch() { if (!InputSettings.isAccessibilityStickyKeysFeatureEnabled()) { return; Loading Loading @@ -413,6 +444,13 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment return true; }; private final OnPreferenceChangeListener mAccessibilitySlowKeysSwitchPreferenceChangeListener = (preference, newValue) -> { InputSettings.setAccessibilitySlowKeysThreshold(getContext(), ((Boolean) newValue) ? 500 : 0); return true; }; private final OnPreferenceChangeListener mAccessibilityStickyKeysSwitchPreferenceChangeListener = (preference, newValue) -> { InputSettings.setAccessibilityStickyKeysEnabled(getContext(), (Boolean) newValue); Loading @@ -426,6 +464,8 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment updateShowVirtualKeyboardSwitch(); } else if (sAccessibilityBounceKeysUri.equals(uri)) { updateAccessibilityBounceKeysSwitch(); } else if (sAccessibilitySlowKeysUri.equals(uri)) { updateAccessibilitySlowKeysSwitch(); } else if (sAccessibilityStickyKeysUri.equals(uri)) { updateAccessibilityStickyKeysSwitch(); } Loading