i

The keyboard grammar

27 keys

Every key the Authoring Practices bind, and every pattern that binds it.

The finding. Arrow Down, Arrow Up and Enter are each bound by thirteen patterns; Home and End by eleven. Space and Enter do not activate the same things, which is where the confusion comes from — the specification itself is inconsistent.

What is being counted

The Authoring Practices describe thirty interaction patterns — combobox, menu, tabs, tree view — and each one has a Keyboard Interaction section listing the keys it binds and what each does. This collection reads all thirty of those sections and turns them inside out: instead of what keys does a combobox use, it answers what does this key mean, across the whole vocabulary.

So a bar reading 13/30 means: of the thirty patterns in the specification, thirteen of them bind this key to something. It is a measure of how load-bearing a key is — not how often people press it, and not whether pressing it is a good idea.

Why this is a grammar. Nobody designed it. Twenty-seven keys acquired meanings one pattern at a time, over twenty years, and the result behaves like a natural language: mostly consistent, learnable, and with irregularities that have to be memorised because there is no rule behind them. The most-bound keys are the grammar's function words — Arrow Down, Arrow Up, Enter carry meaning almost everywhere, which is exactly why breaking one is so expensive.

The irregular verb: Enter and Space

Both are described as “activate”. They are not the same key, and the specification does not make them the same key.

Both, 9 Accordion Pattern (Sections With Show/Hide Functionality) · Button · Disclosure (Show/Hide) · Menu Button · Menu and Menubar · Radio Group · Switch · Tree View · Treegrid
Enter only, 4 Combobox · Grid (Interactive Tabular Data and Layout Containers) · Link · Window Splitter
Space only, 2 Checkbox · Listbox

This is where “I pressed Enter and nothing happened” comes from. It is not a browser bug and it is not a user error — it is an inconsistency in the source document, reproduced faithfully by everyone implementing it.

Tab through it

Every key above is a key you press once focus is already somewhere. The Authoring Practices do not describe the key that put it there, because Tab belongs to the document, not to any pattern. This is that key, on a specimen modelled on a real registration form — and the two numbers under it are counted off the DOM, live, not typed in.

Click into the specimen, then press Tab.

Register with this GP surgery

I do not know my postcode

Preferred time

Cancel

focusable controls in it
tab stops it actually has
0you have reached

The two numbers differ because of one rule. Three radio buttons are one tab stop, not three: Tab moves between groups and the arrow keys move inside one. That is Arrow Down and Arrow Up in the table above, doing the job Tab is not doing — and it is why a radio group built out of buttons feels wrong to anyone who navigates by keyboard, even when every button works.

What the ring is, in the specification. 2.1.1 Keyboard A · 2.4.7 Focus Visible AA · 2.4.11 Focus Not Obscured (Minimum) AA · new in 2.2 · 2.4.13 Focus Appearance AAA · new in 2.2

Nobody designed the ring you just used. It is the browser's own, drawn by default on every focusable thing since focus existed, in the platform's own colour. That is the whole shape of this failure: the accessible behaviour is what you get for free, and losing it takes an instruction.

Removing the ring does not fail one of these. It fails the first as well: a control you cannot locate is a control you cannot operate, and 2.1.1 Keyboard is Level A. The commonest way this happens is not a decision — it is outline: none written once to tidy up a button, and inherited by everything.

Every key, and every pattern that binds it. Sorted by how widely bound. Open a row to see the patterns by name — 7 of the twenty-seven are bound by exactly one pattern, and those are the ones nobody can be expected to know.

How widely bound

Arrow Down 13/30
  • Combobox
  • Grid (Interactive Tabular Data and Layout Containers)
  • Listbox
  • Menu Button
  • Menu and Menubar
  • Radio Group
  • Slider
  • Spinbutton
  • Tabs
  • Toolbar
  • Tree View
  • Treegrid
  • Window Splitter
Arrow Up 13/30
  • Combobox
  • Grid (Interactive Tabular Data and Layout Containers)
  • Listbox
  • Menu Button
  • Menu and Menubar
  • Radio Group
  • Slider
  • Spinbutton
  • Tabs
  • Toolbar
  • Tree View
  • Treegrid
  • Window Splitter
Enter 13/30
  • Accordion Pattern (Sections With Show/Hide Functionality)
  • Button
  • Combobox
  • Disclosure (Show/Hide)
  • Grid (Interactive Tabular Data and Layout Containers)
  • Link
  • Menu Button
  • Menu and Menubar
  • Radio Group
  • Switch
  • Tree View
  • Treegrid
  • Window Splitter
Shift 12/30
  • Accordion Pattern (Sections With Show/Hide Functionality)
  • Carousel (Slide Show or Image Rotator)
  • Dialog (Modal)
  • Grid (Interactive Tabular Data and Layout Containers)
  • Link
  • Listbox
  • Menu and Menubar
  • Radio Group
  • Tabs
  • Toolbar
  • Tree View
  • Treegrid
Arrow Left 11/30
  • Combobox
  • Grid (Interactive Tabular Data and Layout Containers)
  • Listbox
  • Menu and Menubar
  • Radio Group
  • Slider
  • Tabs
  • Toolbar
  • Tree View
  • Treegrid
  • Window Splitter
Arrow Right 11/30
  • Combobox
  • Grid (Interactive Tabular Data and Layout Containers)
  • Listbox
  • Menu and Menubar
  • Radio Group
  • Slider
  • Tabs
  • Toolbar
  • Tree View
  • Treegrid
  • Window Splitter
End 11/30
  • Combobox
  • Feed
  • Listbox
  • Menu and Menubar
  • Slider
  • Spinbutton
  • Tabs
  • Toolbar
  • Tree View
  • Treegrid
  • Window Splitter
Home 11/30
  • Combobox
  • Feed
  • Listbox
  • Menu and Menubar
  • Slider
  • Spinbutton
  • Tabs
  • Toolbar
  • Tree View
  • Treegrid
  • Window Splitter
Space 11/30
  • Accordion Pattern (Sections With Show/Hide Functionality)
  • Button
  • Checkbox
  • Disclosure (Show/Hide)
  • Listbox
  • Menu Button
  • Menu and Menubar
  • Radio Group
  • Switch
  • Tree View
  • Treegrid
Tab 11/30
  • Accordion Pattern (Sections With Show/Hide Functionality)
  • Carousel (Slide Show or Image Rotator)
  • Combobox
  • Dialog (Modal)
  • Feed
  • Grid (Interactive Tabular Data and Layout Containers)
  • Menu and Menubar
  • Radio Group
  • Tabs
  • Toolbar
  • Treegrid
Control 5/30
  • Combobox
  • Feed
  • Listbox
  • Tree View
  • Treegrid
Escape 5/30
  • Combobox
  • Dialog (Modal)
  • Grid (Interactive Tabular Data and Layout Containers)
  • Menu and Menubar
  • Tooltip
Page Down 5/30
  • Combobox
  • Feed
  • Slider
  • Spinbutton
  • Treegrid
Page Up 5/30
  • Combobox
  • Feed
  • Slider
  • Spinbutton
  • Treegrid
A 3/30
  • Listbox
  • Tree View
  • Treegrid
Alt 3/30
  • Button
  • Combobox
  • Feed
F10 3/30
  • Link
  • Menu and Menubar
  • Tabs
Delete 2/30
  • Combobox
  • Tabs
Left arrow 2/30
  • Combobox
  • Tree View
Right arrow 2/30
  • Combobox
  • Tree View
* 1/30
  • Tree View
Backspace 1/30
  • Combobox
F2 1/30
  • Grid (Interactive Tabular Data and Layout Containers)
F6 1/30
  • Window Splitter
U 1/30
  • Button
alt 1/30
  • Menu and Menubar
control 1/30
  • Treegrid

Source. ARIA Authoring Practices, keyboard interaction sections · W3C Document Licence · retrieved 2026-07-31. This collection is derived.

The documents. APG keyboard interaction