Standards · WCAG 2.2

SC 2.1.4 Level A WCAG 2.1

Character Key Shortcuts

Single-character keyboard shortcuts (a single letter, number, or symbol) must be turnable off, remappable, or active only when the relevant component has focus. Protects voice-control and dictation users from accidental triggers.

What it asks

If the page implements a keyboard shortcut using only letter, number, punctuation, or symbol keys — without a modifier like Ctrl, Alt, or Shift — then at least one of the following must be true:

  • The shortcut can be turned off in a settings menu.
  • The shortcut can be remapped to use one or more non-printing keys (Ctrl, Alt, Shift, function keys).
  • The shortcut is only active when the relevant component has focus.

The criterion exists primarily to protect speech-input users. Dragon NaturallySpeaking and Voice Control both transcribe spoken words into character keystrokes — and a stray “k” mid-sentence can trigger a destructive shortcut on Gmail, Slack, or any app that uses single-letter accelerators.

How to meet it

  • Audit every single-key handler in the codebase: keydown / keypress listeners that check event.key against a printable character without also checking modifier keys.
  • Add a “Keyboard shortcuts” settings panel where users can disable them entirely. Gmail and Slack both do this well.
  • Or: scope shortcuts so they only fire when focus is inside the relevant region (e.g. j/k to navigate emails only when focus is in the message list, not when the user is typing in a reply).
  • Prefer modifier-based shortcuts (Ctrl+/, Alt+N) as the default; reserve single-key shortcuts for opt-in power-user mode.

Common failures

  • Gmail-style j / k / r / a shortcuts that fire from anywhere in the document, including inside textareas with the right framework setup.
  • Custom data grids where Delete deletes a row without confirmation — fine for keyboard, deadly for voice users who say “delete that comma.”
  • Video players where Space toggles play/pause globally rather than only when the player has focus.
  • Documentation sites with / to focus search that fire even when focus is in a code-editor embed.

axe-core does not detect this — it requires source-code review or specific automated rules from Deque’s broader testing suite. Most production failures are caught only when a voice-control user files a complaint.

Why it matters

This SC was added in WCAG 2.1 specifically because voice-input adoption grew rapidly after 2017. A site that fails 2.1.4 can be functionally unusable for someone dictating: every paragraph triggers a different action. Even keyboard users with motor impairments who occasionally hit the wrong key benefit from being able to disable single-character shortcuts.