How to Enable Sticky Keys and Slow Keys on Fedora

Enable Sticky Keys and Slow Keys on Fedora through the Accessibility settings or by using specific keyboard shortcuts.

When the keyboard fights back

You are typing a command quickly. You hit Shift to capitalize a letter, then hit it again by mistake. Suddenly, a sound plays and a dialog box appears: "Sticky Keys is on." You did not want that. You just wanted to type. Or you are setting up a workstation for a colleague who has a tremor, and they need Slow Keys to prevent accidental double-presses. You need to configure these features precisely. You need to know how to enable them, how to tune the sensitivity, and how to disable the annoying shortcuts that trigger them during normal work.

This article covers Sticky Keys and Slow Keys on Fedora. It explains the GNOME accessibility architecture, shows you how to control the features via the terminal, and helps you avoid the common pitfalls that turn helpful tools into distractions.

How GNOME intercepts your keys

GNOME Shell monitors keyboard events at the input level. It runs a state machine that counts rapid key presses and measures hold duration. When the state machine detects a pattern, it triggers an accessibility event.

Sticky Keys activates when you press the Shift key five times in rapid succession. Slow Keys activates when you hold the Shift key down for eight seconds. These triggers are hardcoded into the GNOME accessibility subsystem. You cannot change the trigger pattern itself. You can only enable or disable the triggers, and you can enable or disable the features independently.

Once triggered, the system flips a boolean switch in the configuration database. The switch tells the input stack to intercept key events. Sticky Keys turns a modifier press into a state flag. You press Shift once, and the system remembers that Shift is active until you press a non-modifier key. Slow Keys adds a timer to every key press. The system waits for the key to be held for a specific duration before registering the press.

The configuration lives in two schemas. The org.gnome.desktop.a11y.keyboard schema handles the input method. It controls the delays, the triggers, and the behavior of the keys. The org.gnome.desktop.a11y.applications schema handles application-level awareness. It tells applications that accessibility features are active so they can adjust their behavior. Most users only need to touch the keyboard schema. The applications schema usually mirrors the state automatically.

Configure the features via the terminal

The Settings application provides toggles for Sticky Keys and Slow Keys. The terminal gives you granular control. You can enable the features, adjust the timing, and disable the shortcuts without disabling the features. This is the standard workflow for sysadmins who want accessibility without the accidental triggers.

Here is how to enable Sticky Keys and verify the state.

# Enable Sticky Keys via the keyboard schema
gsettings set org.gnome.desktop.a11y.keyboard sticky-keys-enabled true

# Verify the setting took effect
gsettings get org.gnome.desktop.a11y.keyboard sticky-keys-enabled

Here is how to enable Slow Keys and set a custom delay. The delay is measured in milliseconds. The default is usually 300 milliseconds. You can increase this if the user needs more time to hold the key, or decrease it for faster input.

# Enable Slow Keys
gsettings set org.gnome.desktop.a11y.keyboard slow-keys-enabled true

# Set the delay to 500 milliseconds. Adjust this value based on user feedback.
gsettings set org.gnome.desktop.a11y.keyboard slow-keys-delay 500

# Verify the delay setting
gsettings get org.gnome.desktop.a11y.keyboard slow-keys-delay

The most common complaint about these features is the shortcut. Pressing Shift five times is easy to do by accident during fast typing. You can disable the shortcut while keeping the feature enabled. This allows you to toggle the feature manually via the Settings app or the command line, without the system hijacking your keyboard.

# Disable the Shift-5 shortcut. The feature stays enabled, but the shortcut won't trigger it.
gsettings set org.gnome.desktop.a11y.keyboard sticky-keys-disable true

# Disable the Shift-8 shortcut. Same logic applies.
gsettings set org.gnome.desktop.a11y.keyboard slow-keys-disable true

You can also configure "Bounce Keys." Bounce Keys ignores rapid repeated presses of the same key. It is often confused with Sticky Keys. Sticky Keys handles modifiers. Bounce Keys handles all keys. If you need to prevent double-presses on letters, use Bounce Keys.

# Enable Bounce Keys to filter rapid repeats
gsettings set org.gnome.desktop.a11y.keyboard bounce-keys-enabled true

# Set the ignore interval to 200 milliseconds. Presses faster than this are ignored.
gsettings set org.gnome.desktop.a11y.keyboard bounce-keys-delay 200

Convention aside: gsettings is the frontend to the dconf database. The schema files define the valid keys and types. You should always use gsettings to modify these values. Editing dconf directly with dconf write bypasses schema validation and can corrupt the configuration if you use the wrong type. Stick to gsettings for accessibility settings.

Verify the configuration

Run the get commands to confirm the values. The output should match what you set. If you see false when you expected true, the command failed or another process overwrote the value. GNOME Shell can sometimes reset accessibility settings if it detects a conflict.

# Check all accessibility keyboard settings at once
gsettings list-recursively org.gnome.desktop.a11y.keyboard

Test the behavior immediately. Press Shift five times. If the shortcut is disabled, nothing should happen. If the feature is enabled, you should see the Sticky Keys icon in the top bar or the accessibility menu. Press a modifier key, then a letter. The letter should be capitalized without holding the modifier.

Test Slow Keys by holding a key. If the delay is set to 500 milliseconds, the key should not register until you hold it for half a second. If it registers instantly, Slow Keys is not active or the delay is too low.

Reboot before you debug. Half the time the symptom is gone after a restart because GNOME Shell caches the input state.

Common pitfalls and error patterns

The gsettings command will refuse to proceed if you mistype the schema or key name. You will see an error like error: invalid key "sticky-keys-enable". Note the missing "d" in "enabled". The schema requires the exact key name. Check the spelling.

If you see No such schema "org.gnome.desktop.a11y.keyboard", your GNOME installation is broken or you are running a minimal environment without the accessibility schemas. Install the gnome-settings-daemon package. It provides the schema files.

# Install the settings daemon if schemas are missing
sudo dnf install gnome-settings-daemon

Another common issue is the interaction between Sticky Keys and terminal emulators. Some terminal emulators handle modifier keys internally. Sticky Keys might not work as expected inside a terminal window. This is a limitation of the terminal, not Fedora. Test the feature in a graphical application first. If it works there but not in the terminal, the terminal is intercepting the keys.

Bounce Keys can make typing feel sluggish if the delay is too high. Start with the default value. Increase the delay only if the user reports missed keys. Decrease the delay if the user reports that valid rapid presses are being ignored.

Reset the configuration if things get messy. The reset-recursively command restores all keys in the schema to their defaults. This is safer than deleting the dconf database manually.

# Reset all keyboard accessibility settings to defaults
gsettings reset-recursively org.gnome.desktop.a11y.keyboard

Check the schema name. A typo in the dot-notation path breaks the command silently or throws a schema error.

Choose the right tool for the job

Use Sticky Keys when you need to press modifier keys without holding them down. Use Slow Keys when you need to prevent accidental key presses by requiring a hold duration. Use Bounce Keys when you need to filter rapid repeated presses of any key. Use the Settings application when you want a quick visual toggle and do not need to tune the delays. Use the terminal when you need to disable the shortcuts while keeping the features enabled. Use gsettings reset-recursively when the configuration is broken and you need a clean slate.

Where to go next