WCAG 2.1.4: Character Key Shortcuts
A shortcut that fires on a bare s or / is a trap for anyone who types by voice or struggles to hit keys precisely. This criterion asks that any single-character keyboard shortcut can be turned off, remapped to use a modifier key, or scoped so it only works when the relevant component has focus. Provide any one of those three, and the shortcut stops firing by accident.
The success criterion, in full
If a keyboard shortcut is implemented in content using only letter (including upper- and lower-case letters), punctuation, number, or symbol characters, then at least one of the following is true: Turn off: A mechanism is available to turn the keyboard shortcut off. Remap: A mechanism is available to remap the shortcut to use one or more non-printable keyboard keys (e.g., Ctrl, Alt). Active only on focus: The keyboard shortcut for a user interface component is only active when that component has focus.
The rule targets a narrow, high-risk pattern: shortcuts bound to a single printable character with no modifier. Any one of the three remedies is enough. Shortcuts that already require a modifier or non-printable key are outside the scope of this criterion and need no additional mechanism.
Who this helps
Single-key shortcuts are convenient for the people who know them and a minefield for the people who do not. Controlling them protects several groups at once:
Speech-input users
Voice-control users dictate continuously, emitting exactly the character strings a global single-key shortcut listens for. Without an off switch or focus-scoping, dictation can fire actions the user never intended.
People with tremor or limited dexterity
An unsteady hand brushes extra keys. When a stray keystroke doubles as an app-wide command, the result is deleted content, lost context, or unexpected navigation.
Keyboard-only users
People who navigate entirely by keyboard are the most likely to land on stray characters between fields, and to be surprised when one of them triggers a hidden global command.
Screen reader users
Screen readers reserve many single keys for their own quick-navigation commands. A page that also claims those keys creates conflicts that make both the reader and the page harder to operate.
Switch and alternative-input users
People using switch access or on-screen keyboards can emit characters in ways the designer never anticipated; predictable, controllable shortcuts keep those inputs from misfiring.
Everyone, occasionally
Anyone can rest a hand on the keyboard or paste text into the wrong place. A remap-to-modifier or focus-scoped design means an accidental keystroke stays harmless.
What the requirement covers
The trigger for this criterion is specific: a keyboard shortcut bound to a single printable character — a letter such as a or B, a number like 3, or punctuation and symbols like ? and / — with no modifier key held. When that pattern exists, you must provide at least one of these three mechanisms:
- Turn off. Give users a mechanism to disable character-key shortcuts entirely — a settings toggle, a preference, or a per-shortcut switch. Once off, no bare keystroke fires a command.
- Remap to a non-printable key. Let users reassign the shortcut to a combination that includes at least one non-printable key such as Ctrl or Alt. A modifier-based shortcut is effectively impossible to trigger by dictation or a stray keystroke.
- Active only on focus. Scope the shortcut so it fires only when its specific component has focus. A media player that responds to 'k' only while the player is focused cannot interfere with typing elsewhere on the page.
What is out of scope
Shortcuts that require a modifier or a non-printable key are inherently fine and need no extra mechanism: Ctrl+S, Alt+K, and function keys are all outside 2.1.4 because voice input and accidental presses will not reproduce them. This is the difference between 2.1.4 and 2.1.1 Keyboard: 2.1.1 is about making features operable by keyboard at all, while 2.1.4 is about preventing a shortcut from being triggered unintentionally.
Pass and fail examples
✓ Passes 2.1.4
- A mail app with single-key shortcuts plus a settings toggle to turn keyboard shortcuts off.
- A shortcut editor that lets users remap
stoCtrl+S. - A video player where
kpauses playback only while the player has focus. - An app whose only shortcuts already require modifiers (Ctrl, Alt) — the criterion does not even apply.
✗ Fails 2.1.4
- A global
j/knavigation that is always on with no way to disable it. - Pressing
/anywhere jumps to search, with no off switch, remap, or focus scope. - A single-letter “star” command that fires document-wide and cannot be turned off.
- Undocumented single-key shortcuts active everywhere, interfering with dictation into form fields.
Code examples
The failure: an always-on global shortcut
A bare key handler on document with no off switch, no remap, and no focus check is the classic 2.1.4 violation.
// ✗ Fires on every bare keystroke, everywhere, always
document.addEventListener('keydown', (e) => {
switch (e.key) {
case 's': starMessage(); break; // dictating "s" stars a message
case '/': focusSearch(); break; // typing "/" jumps to search
case 'c': composeNew(); break;
}
})Remedy 1 & 2: an off switch and a modifier requirement
Guard the handler with a user preference (turn off) and skip anything that carries a modifier so a remapped Ctrl+S can pass through untouched. Also ignore keystrokes aimed at text fields.
// ✓ Respects a "shortcuts off" preference and modifier remaps
let shortcutsEnabled = loadUserPref('charKeyShortcuts', true)
document.addEventListener('keydown', (e) => {
if (!shortcutsEnabled) return // (1) turn off
if (e.ctrlKey || e.altKey || e.metaKey) return // (2) modifier = out of scope
// Never hijack keys while the user is typing
const t = e.target
if (t.matches('input, textarea, [contenteditable]')) return
if (e.key === 's') { e.preventDefault(); starMessage() }
})Remedy 3: active only on focus
Bind the shortcut to the component itself rather than the document, so it can only fire while that component holds focus.
<!-- ✓ "k" toggles play only while the player is focused -->
<div class="video-player" tabindex="0">
<!-- controls … -->
</div>
<script>
const player = document.querySelector('.video-player')
// Listener is on the player, not on document
player.addEventListener('keydown', (e) => {
if (e.key === 'k') { e.preventDefault(); togglePlay() }
})
</script>Interactive demo
Press s to fire a “star” shortcut and watch the log. Then toggle the shortcut off, switch it to focus-only mode, and try typing in the text field to see how each remedy stops the shortcut from firing by accident.
Turn shortcut off
Remedy 1: disable the single-key shortcut entirely.
Shortcut is ON
Activation scope
Remedy 3: fire only when the panel below has focus.
Times the Star shortcut fired
⭐ 0
Focusable player panel
Click or Tab here to focus
Live event log
Press “s” anywhere to see what happens…
Common failures
- App-wide single-key shortcuts (Gmail-style j/k to move, s to star, c to compose) that are always active globally with no off switch.
- A single '/' or 'f' bound document-wide to focus search, firing while the user dictates or types outside a field.
- Single-letter commands with no remap option, so a user cannot move them to a modifier combination.
- Shortcuts that stay active while focus is in a text input, so dictation and typing trigger unintended actions.
- Undocumented hidden shortcuts users cannot discover, disable, or predict.
- Assuming an on-screen button alternative is enough — it does not remove the accidental-activation hazard the criterion targets.
- Treating documentation of the shortcuts as compliance; listing them does not turn them off, remap them, or scope them to focus.
How to test for 2.1.4
- 1
Enumerate every single-character shortcut
Review the interface and its documentation, then press single keys — letters, numbers, punctuation, symbols — with no modifier held, in different parts of the page. List every bare-character key that triggers an action.
- 2
Confirm one of the three remedies for each
For every shortcut you found, verify at least one is true: there is a mechanism to turn it off, a mechanism to remap it to a modifier combination, or it only fires while its component has focus. Any single one passes.
- 3
Check the modifier boundary
Shortcuts that already require Ctrl, Alt, Cmd, or a function key are out of scope. Confirm the in-scope set is only the bare single-character shortcuts, so you test the right things.
- 4
Run the speech-input scenario
Dictate a sentence into a text field (or type a long string). No global shortcut should fire from the characters. If it does, the shortcut is not focus-scoped or disabled and the page fails.
- 5
Exercise the off switch and remap UI
If the page relies on turn-off or remap, actually use those controls: disable shortcuts and confirm the bare keys go silent; remap one to a modifier and confirm the single key no longer triggers it.
- 6
Verify focus scoping is real
For focus-only shortcuts, move focus away from the component and confirm the key no longer does anything. A shortcut that still fires from elsewhere is effectively global.
For a structured audit, work through the full WCAG 2.2 checklist.
Related Success Criteria
All functionality is available from a keyboard interface.
Focus can be moved away from any component using standard keyboard methods.
All functionality is available from a keyboard interface without exception.
Users can turn off, adjust, or extend time limits.
Moving, blinking, or auto-updating content can be paused, stopped, or hidden.
Frequently asked questions
What does WCAG 2.1.4 Character Key Shortcuts require?
If your content implements a keyboard shortcut using only a single character — a letter (upper or lower case), a number, punctuation, or a symbol, with no modifier key — then at least one of three things must be true: there is a mechanism to turn the shortcut off; there is a mechanism to remap it to a combination that uses one or more non-printable keys such as Ctrl or Alt; or the shortcut is only active when the specific component it belongs to has focus. Meeting any one of the three satisfies the criterion. It is a Level A criterion added in WCAG 2.1.
Do shortcuts like Ctrl+S or Alt+K need to meet 2.1.4?
No. The criterion applies only to shortcuts triggered by a single printable character key on its own. As soon as a shortcut requires a modifier or non-printable key — Ctrl, Alt, Cmd, or a function key — it is out of scope, because speech input and accidental key presses are extremely unlikely to reproduce that combination. So Ctrl+S, Alt+Shift+K, and F6 are all inherently fine and do not need a turn-off, remap, or focus-scoping mechanism.
Why are single-character shortcuts a problem for speech-input users?
People who control their computer by voice are constantly emitting streams of character strings as they dictate. If a page listens for a bare 's' or '/' anywhere on the document, dictation can silently fire those shortcuts — starring a message, opening search, deleting content — with no way for the user to predict or prevent it. The same accidental activation hits people with tremors or limited dexterity who brush against keys. Turning the shortcut off, requiring a modifier, or scoping it to a focused widget all remove the hazard.
Is providing button alternatives enough to pass 2.1.4?
No. Offering an on-screen button that performs the same action is good practice, but it does not satisfy 2.1.4 on its own. The criterion is about preventing the single-key shortcut from firing unintentionally, so you must still supply one of the three specific remedies: an off switch, a remap to a modifier combination, or focus-scoping. Documentation and visible hints are helpful but also do not, by themselves, meet the requirement.
How is 2.1.4 different from 2.1.1 Keyboard?
2.1.1 Keyboard is about making functionality operable — everything you can do with a mouse must also be reachable and usable with a keyboard. 2.1.4 works in the opposite direction: it protects users from a keyboard shortcut firing when they did not intend it. A page can pass 2.1.1 (all features are keyboard-operable) and still fail 2.1.4 (a global single-key shortcut has no off switch and interferes with dictation). Think of 2.1.1 as 'can you operate it' and 2.1.4 as 'can you avoid triggering it by accident'.