2.1.4 Character Key Shortcuts
If a keyboard shortcut is implemented using only letter, punctuation, number, or symbol characters, it can be turned off, remapped to include a modifier key, or is only active when the relevant component has focus.
Last reviewed: September 9, 2026
Understanding 2.1.4
Single-character shortcuts (like pressing 'g' to navigate, or '?' to open help) can be triggered accidentally by speech-input users dictating text, or by users with tremor or limited fine motor control who brush a key unintentionally. This criterion prevents such accidental activation by requiring that single-character shortcuts be removable, remappable with a modifier, or scoped to only fire when a specific component has focus.
How to Meet It
Code Examples
document.addEventListener('keydown', function(e) {
if (e.key === 'g') {
window.location.href = '/help'; // Fires anywhere on the page, even while dictating into a form field
}
});document.addEventListener('keydown', function(e) {
const active = document.activeElement;
const isTyping = active.tagName === 'INPUT' || active.tagName === 'TEXTAREA' || active.isContentEditable;
if (e.key === 'g' && !isTyping && shortcutsEnabled) {
window.location.href = '/help'; // Only fires outside text fields, and only if the user hasn't disabled shortcuts
}
});Frequently Asked Questions
Do shortcuts that require Ctrl or Alt need to meet this criterion too?
No. 2.1.4 only applies to shortcuts triggered by a single printable character pressed alone. Shortcuts that always require a modifier key like Ctrl, Alt, or Cmd fall outside this criterion because accidental activation through typing or dictation is far less likely.
Does 'turning off' the shortcut have to be per-shortcut, or can it be global?
WCAG doesn't mandate the granularity. A single global setting that disables all single-character shortcuts satisfies the criterion, though offering per-shortcut remapping is generally a better user experience.
Related Success Criteria
Quick Facts
- Criterion2.1.4
- LevelA
- IntroducedWCAG 2.1
Automate Compliance
AccessiSight automatically scans and identifies 2.1.4 issues in your codebase.
Try Scanner Free