Keyboard shortcuts use standard key combinations
Why it matters
Custom keyboard shortcuts that use single-character keys (letters, numbers, punctuation) without a modifier conflict with screen reader commands — screen readers intercept single-key presses as navigation commands. WCAG 2.2 SC 2.1.4 (Character Key Shortcuts) requires that single-character shortcuts can be turned off, remapped, or are only active when the relevant component has focus. Section 508 2018 Refresh 407.7 covers key repeat and shortcut behavior. The concrete failure: an application that binds 'S' to search while a screen reader user is navigating will trigger the search instead of reading the next element. Undocumented shortcuts compound the problem — users cannot discover or avoid them. Browser shortcut conflicts (Ctrl+L for address bar, Ctrl+T for new tab) can trap or disorient all keyboard users.
Severity rationale
High because single-key shortcuts that conflict with screen reader commands actively disrupt assistive technology navigation without any fallback.
Remediation
Require at least one modifier key (Shift, Ctrl, Alt, or Meta) for any shortcut that is active across the whole application. Single-key shortcuts scoped to a specific focused component (like Arrow keys within a menu) are acceptable.
// Bad: Single-character global shortcut
document.addEventListener('keydown', (e) => {
if (e.key === 's') openSearch(); // Conflicts with screen readers
});
// Good: Modifier-key shortcut
document.addEventListener('keydown', (e) => {
if (e.ctrlKey && e.shiftKey && e.key === 'K') {
e.preventDefault();
openSearch();
}
});
// Always document shortcuts in an accessible location
const SHORTCUTS = [
{ keys: 'Ctrl+Shift+K', action: 'Open search' },
{ keys: 'Ctrl+Shift+/', action: 'Open keyboard shortcuts' },
];
// In a help dialog
<table aria-label="Keyboard shortcuts">
<thead><tr><th scope="col">Keys</th><th scope="col">Action</th></tr></thead>
<tbody>
{SHORTCUTS.map(s => (
<tr key={s.keys}>
<td><kbd>{s.keys}</kbd></td>
<td>{s.action}</td>
</tr>
))}
</tbody>
</table>
Avoid Ctrl+L (address bar), Ctrl+T (new tab), Ctrl+W (close tab), Ctrl+R (reload), and F1–F12 shortcuts that browsers reserve.
DetectionPro
The detection method for this pattern is part of AuditBuffet Pro.
The full method (what to look for, pass and fail conditions, and how results get reported) ships inside the Accessibility Basics Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
External references
- wcag:2.2 · 2.1.4 — Character Key Shortcuts
- section-508:2018-refresh · 407.7 — Tickets, Passes, and Credentials
Taxons
History
- 2026-04-18·v1.0.0·Initial import from accessibility-basics·automated