Keyboard Support
This document provides information about the requirements to make UIs compliant with the keyboard accessibility guidelines.
The first section of this documents contains a list of "definition of done" checklist items, which developers and designers can reference to make the UI compliant. The second section of this document explains these checklist items in detail.
Checklist
Use these "definition of done" checklists to make the UI compliant with the keyboard accessibility guidelines. Related checklist items are grouped together for easier understanding.
1. Tab Chain
The screen has a “tab chain” and the focus can be moved between elements on the page with keyboard controls.
Checklist |
---|
"Page contains “tab chains” and elements can be focused by keyboard controls” → |
“Elements in the “tab chain” are grouped and these groups can be navigated with keyboard controls” → |
“Tab chains are expanded with static content for extra accessibility” → |
"Focus can be moved inside to elements with embedded navigation options by using keyboard controls” → |
“Focus can be moved inside the elements of a container by using keyboard controls” → |
“Selection in lists and grids can be made using keyboard controls” → |
"Complex layouts can be navigated with tab and arrow keys” → |
"Complex components can be navigated by keyboard controls” → |
2. Item Actions
Elements can be interacted with using keyboard controls.
Checklist |
---|
“Elements with actions can be triggered by keyboard controls” → |
"Selection inside a grid-like interface is supported by keyboard controls” → |
“The selected value of list-based inputs can be changed without opening the list, with keyboard controls” → |
“Expandable-collapsible elements can be opened and closed with keyboard controls” → |
“Tooltips can be displayed or hidden with keyboard controls” → |
"Drill down details for an element can be accessed with keyboard controls” → |
“Contextual menus can be operated with keyboard controls” → |
“Deletable items can be deleted using keyboard controls” → |
"List of properties for objects can be edited with keyboard controls” → |
3. Text Editing
Elements with text editing can be used with keyboard controls
Checklist |
---|
"Text cursor can be moved with keyboard controls” → |
“Editable elements can be edited using only keyboard controls” → |
“Text editors in the UI support paragraph-navigation with keyboard controls” → |
"Text inputs that require specific case (uppercase, lowercase) are automatically formatted” → |
4. Navigation
Pages can be navigated with the keyboard
Checklist |
---|
“Multi-step interfaces can be navigated with keyboard controls” → |
“Dialogs can be cancelled or accepted by keyboard controls” → |
"Floating elements can be closed with Escape key” → |
“Pagination component can be interacted with using keyboard controls without moving the focus on it” → |
5. Scrolling and Zooming
Scrolling, panning, and zooming can be done with keyboard
Checklist |
---|
“The layout adapts to resizing and zooming.” → |
"Scrollable containers can be scrolled using keyboard controls” → |
"Pages and canvases can be zoomed using keyboard controls” → |
“Draggable canvases can be navigated with keyboard controls” → |
6. Special
Miscellaneous use-cases for keyboard controls
Checklist |
---|
“Media players support keyboard controls” → |
"Scrubbing interface can be accessed with keyboard controls" → |
Details
More detailed explanations of the checklist items.
“Selection in lists and grids can be made using keyboard controls”
Move the focus state of items in lists (e.g. select) and grids (e.g. calendar) with the arrow keys (up, down, left, right), and other navigation keys (home, end)
Key | Actions | |
---|---|---|
Left arrow |
Move focus backwards, to left | |
Right arrow |
Move focus backwards, to left | |
Up arrow |
Move focus backwards, upward | |
Down arrow |
Move focus backwards, downward | |
Home |
Move focus to first item | |
End |
Move focus to last item | |
Ctrl + Home |
Same as Home |
Advanced |
Ctrl + End |
Same as End |
Advanced |
Ctrl + Left arrow |
Move focus to previous group | Advanced |
Ctrl + Right arrow |
Move focus to next group | Advanced |
“Complex layouts can be navigated with tab and arrow keys”
Expands classic “tabbable” navigation scheme with arrow keys in certain use cases, e.g. in tile lists, action buttons in a table, cascading menus.
“Tab chains are expanded with static content for extra accessibility”
Making non-interactive items “tabbable” so they can be interacted with using the keyboard. This is good for screen-readers.
“Elements with actions can be triggered by keyboard controls”
Triggering the focused element’s function in the case of buttons, links, menus and menu items, etc.
Keys | Actions | |
---|---|---|
Spacebar or Enter |
Activate UI element | |
Hold Spacebar |
Recurring activation | |
Escape while Spacebar is pressed |
Cancel activation | |
Enter |
Activates the default button in a dialog |
Interacting with links:
Mouse | Keys | Actions |
---|---|---|
Left click | Enter |
Open link in same window |
Shift + left click |
Shift + Enter |
Open link in new window |
Ctrl + left click |
Ctrl + Enter |
Open link in new tab |
“Text cursor can be moved with keyboard controls”
Move the cursor in a text box with the Arrow
keys, Home
and End
keys, and Ctrl
+ Left arrow
and Ctrl
+ Right arrow
keystrokes (i.e. word step).
“Pagination component can be interacted with using keyboard controls without moving the focus on it”
Paginate without having to select the pagination controls, e.g. in datagrids.
Keys | Actions |
---|---|
Ctrl + PageUp |
Previous page |
Ctrl + PageDown |
Next page |
“Deletable items can be deleted using keyboard controls”
Use cases: Input fields (text input, number input, date input, etc.), Select, Multiselect
Keys | Actions |
---|---|
Delete or Numpad Delete |
Deletes selected items or character after the cursor |
Backspace |
Deletes selected items or character before the cursor |
“Drill down details for an element can be accessed with keyboard controls”
Access further options for a focused element, e.g. file lists.
Keys | Actions |
---|---|
Double click = F2 |
Activates UI element action, usually the same as hitting the Enter key |
Extra double click = F2 → F2 |
On editable cells the first keystroke invokes editing, the second starts underlying functions |
Enter |
start an underlying action / dialog, usually the same as double click, usually first menu item in context menu |
Alt + Enter |
open properties dialog, usually last menu item in context menu |
“Floating elements can be closed with Escape key”
Returns to a “safe state” by hitting the Escape
key, e.g. cancelling dialogs, closing popover lists and panels.
“Focus can be moved inside to elements with embedded navigation options, using keyboard controls”
Automatically switching the focus when the user navigates into a child element.
- Window / page: default focus location (if there’s any), or last focus location.
- Dialog: first interactive element, or the first defined autofocus element.
- Containers: first interactive element, or the first defined autofocus element.
- List-like elements: first item.
“Focus can be moved inside the elements of a container by using keyboard controls”
Automatically switching the focus to a child element when the user navigates into a container.
“Editable elements can be edited using only keyboard controls”
Users can apply changes to elements in focus.
Explicit manipulation: the user has to switch to “edit mode” by pressing F2 or Enter before they can edit the content of the element, e.g. datetime picker.
Implicit manipulation: the user can edit the content of the element in focus without switching to an “edit mode”, e.g. text input field.
Accept changes: F2
, Enter
, Tab
.
Revert changes: Escape
. Undo and redo should be implemented.
Keys | Actions |
---|---|
Enter |
End inplace editing, accept changes made. |
Tab |
End inplace editing, accept changes made. |
Delete |
Delete character after cursor. |
Backspace |
Delete character before cursor. |
Escape |
End inplace editing, revert changes. |
F2 |
Invoke inplace editing. |
Left arrow |
If the first character, end inplace editing, go to the previous element. |
Right arrow |
If at last character, end inplace editing, go to the next element. |
“The layout adapts to resizing and zooming.”
Create layouts which avoid unnecessary scrollbars and create controls that dynamically adapt to a given size by reordering and resizing.
Use cases: Zooming, Resizing, Toggle full screen, Close view, Moving elements
Controls:
- Click, drag, release (wait, attach)
- Horizontal scrollability controls: Alt+PageUp, Al+PageDown
Layout rules:
- Outer size of a component defines the inner size
- Controls adapt to the given size by using: Truncation, scrolling, panning and zooming
- Adapt a layout policy for resizing based on constraints or percentages, auto-resizing, min and max size variables, dynamic whitespaces
Rules for resizing:
- Provide affordance for resizable elements
- Avoid scrollbars wherever possible, especially horizontally.
- Retain focus when scrolling
- Support scrolling or an overflow mechanism for every control
- Every scrollable control provides scrollability by clicking in the background area
“Media players support keyboard controls”
Use shortcuts to control video and music playback.
Keys | Actions |
---|---|
Spacebar or P |
Play / pause |
+ |
Increase volume |
- |
Decrease volume |
Ctrl + Home |
Jump to beginning of playback |
Ctrl + End |
Jump to end of playback |
PageDown |
Next chapter |
PageUp |
Previous chapter |
Left arrow |
Previous frame |
Right arrow |
Next frame |
Alt + Enter or Ctrl + I |
Switch full screen |
M or Ctrl + M |
Mute / unmute |
R or Ctrl + R |
Cycle thru aspect ratio |
C or Ctrl + C |
Cycle thru clipping configurations |
Ctrl + , or Ctrl + P |
Open preferences for the media playback |
Ctrl + I |
Open properties for the media playback |
“Pages can be zoomed using keyboard controls”
Zoom the page using the keyboard. Zoom should follow the cursor when possible (e.g. in AC canvas).
Keys | Actions |
---|---|
Ctrl + Numpad Enter or Alt + Ctrl + 0 |
Default zoom level |
- , Ctrl + Numpad - , or Ctrl + - |
Zoom out one level |
+ , Ctrl + Numpad + , or Ctrl + + |
Zoom in one level |
Alt + Ctrl + [1-9] |
Zoom to specific level |
“Page contains “tab chains” and elements can be focused by keyboard controls”
Elements are “tabbable”, and a “tab chain” exists on the page. Generally, a “tab chain” should be structured the way we read: from left to right, then the next line.
“Tab chain” modes:
- Non-accessibility mode: does not contain inactive elements, static elements
- Accessibility mode: contains inactive elements, description of static elements, images (with alt text)
Tabbing in scrollable containers: Scrollable containers should be automatically scrolled so the elements in focus are visible to the user (i.e. in the viewport).
Keys | Actions | |
---|---|---|
Tab |
Move focus forward | |
Shift + Tab |
Move focus backward | |
Shift + Ctrl + B |
Move focus to the previous element, even if it’s only accessible in the accessibility mode tab chain | Advanced |
Shift + Ctrl + N |
Move focus to the next element, even if it’s only accessible in the accessibility mode tab chain | Advanced |
Right Alt + Tab |
Move focus to the next element, which is usually not in the tab chain | Advanced |
“Complex components can be navigated by keyboard controls”
Make complex components “tabbable”, e.g. calendars, toolbars.
Moving the focus in “composites” is usually directional, so a regular “tab chain” can be applicable within a component.
Controls:
- Move the focus by using
Tab
,Shift
+Tab
, andArrow keys
.
“Contextual menus can be operated with keyboard controls”
Menu with additional contextual functions for an item (where available). These menus are usually accessible by right clicking.
Keys | Actions | |
---|---|---|
ContextMenu key |
Open context menu of focused element | |
Shift + F10 |
Open context menu of focused element | |
Escape |
Close menu | |
Enter |
Open menu | |
Left arrow , Right arrow |
Open or close menu | |
Up arrow , Down arrow |
Move focus on elements | |
Enter |
Activate item in focus | |
Ctrl + ContextMenu key, Ctrl + Shift + F10 |
Open expanded context menu, showing additional functionality | Advanced |
Alt + ContextMenu , Alt + Shift + F10 |
Open alternate context menu (e.g. context menu of the environment) | Advanced |
[Any key] , Alt + [Any key] |
Quickly move focus to the matching item label, e.g. hit “P” to select item named “Properties” | Advanced |
“Dialogs can be cancelled or accepted by keyboard controls”
Closes dialog by either cancelling or accepting its contents.
Keys | Actions | |
---|---|---|
Enter |
Accept and close dialog | |
Escape |
Cancels and close dialog | |
Ctrl + W |
Cancels if content is unchanged, accept if content is changed. (This probably only works in standalone windows opened by JavaScript, as Ctrl + W is used by the web browser) | |
Alt + [Shortcut key] |
The button shortcut is visible to the user in the dialog (e.g. underline shortcut letter in the button label) | Advanced |
“Expandable elements can be opened and closed with keyboard controls”
Open and close expandable elements, e.g. accordions, tree view.
Keys | Actions | |
---|---|---|
Right arrow |
Expand element and move focus to first child element | |
+ or Numpad + |
Expand element. Doesn’t move focus | |
Left arrow |
Collapse element and move focus to the parent element | |
- or Numpad - |
Collapse element. Doesn’t move focus | |
Ctrl + Numpad + |
In table, expand element. Doesn’t move focus. | Advanced |
Ctrl + Numpad - |
In table, collapse element. Doesn’t move focus. | Advanced |
Ctrl + F11 |
Expand | Advanced |
Shift + Ctrl + F11 |
Collapse. | Advanced |
Numpad * |
Toggle expand / collapse all tree items beyond the currently focused item. | Advanced |
Ctrl + F12 |
Expand all tree items beyond the currently focused item. | Advanced |
Shift + Ctrl + F12 |
Collapse all tree items beyond the currently focused item. | Advanced |
“Selection inside a grid-like interface is supported by keyboard controls”
Select items in a grid, e.g. tables, block editors.
Keys | Actions | |
---|---|---|
Ctrl + Space or Alt + Ctrl + Space |
Select the complete column in which the focus is located | |
Shift + Space |
Select the complete row in which the focus is located. | |
Ctrl + mouse click |
Select range | Advanced |
Ctrl + A , or Shift + Ctrl + A |
Deselect all selected items. Toggle or explicit keystroke via Shift modifier key | Advanced |
Shift + Ctrl + A , or Ctrl + D |
Deselect all selected items | Advanced |
Left |
Remove the previously defined selection | Advanced |
Ctrl + Space |
Toggle selected row | Advanced |
Ctrl + A |
Select all items | Advanced |
Shift + Ctrl + Space , or Ctrl + A |
Select the whole grid content | Advanced |
Shift + Left |
Select a range of items | Advanced |
“Elements in the “tab chain” are grouped and these groups can be navigated with keyboard controls”
Make tabbable groups in the “tab chain”. Groups are collections of contextually similar elements, e.g. “sections” in a form.
Keys | Actions | |
---|---|---|
Ctrl + Tab, or F6 | Move focus to the next group. | |
Ctrl + Shift + Tab, or Shift + F6 | Move focus to the previous group. | |
Alt + Home | Move focus to first element in group. | Advanced |
Alt + End | Move focus to last element in group. | Advanced |
“Tooltips can be displayed or hidden with keyboard controls”
Tooltips can be displayed or hidden with keyboard controls.
Keys | Actions | |
---|---|---|
Shift + Ctrl + I |
Displays the tooltip for the element in focus. | Advanced |
Shift + Ctrl + I , or Escape |
Hides the tooltip for the element in focus. | Advanced |
“Text inputs that require specific case (uppercase, lowercase) are automatically formatted”
Text inputs help users by automatically formatting values in the right case (lowercase or uppercase) as the user types. E.g. serial number text input that requires value in all uppercase.
“Scrollable containers can be scrolled with keyboard control”
Keys | Actions |
---|---|
Arrow keys |
Scrolling in a specific direction |
Spacebar , Shift + Spacebar |
Scrolling up and down |
“Lists or groups of graphical elements can be selected or multi-selected and be simultaneously edited.”
Graphic elements can be navigated with keyboard controls, e.g. charts.
Keys | Actions |
---|---|
Shift + Tab |
Focus previous element |
Alt + Enter |
Display properties or view |
Arrow keys |
Move element(s) |
Ctrl + Arrow keys |
Move element(s) one pixel |
Tab |
Focus next element |
Shift + Left |
Reduces or enlarges width |
Shift + Ctrl + Left |
Reduces or enlarges width by one pixel |
Shift + Up |
Reduces or enlarges height |
Shift + Ctrl + Up |
Reduces or enlarges height by one pixel |
F2 |
Inline edit the element |
Ctrl + A |
Select all elements |
Escape |
Get out of inline editing |
“Draggable canvases can be navigated with keyboard controls”
Pannable canvases can be navigated with keyboard controls, e.g. AC / RTI canvas, Google Maps embed.
Keys | Actions | |
---|---|---|
Arrow keys |
fast directional scrolling | |
Alt + Enter , or Ctrl + Enter |
Scroll back to initial view | Advanced |
Alt + PageDown |
Scroll one page right | Advanced |
Alt + PageUp |
Scroll one page left | Advanced |
PageDown |
Scroll one page down | Advanced |
PageUp |
Scroll one page up | Advanced |
Ctrl + Down |
Scroll one step or px down | Advanced |
Ctrl + Up |
Scroll one step or px up | Advanced |
Ctrl + Right |
Scroll one step or px right | Advanced |
Ctrl + Left |
Scroll one step or px left | Advanced |
“Text editors in the UI support paragraph-navigation with keyboard controls”
Jump between paragraphs (, chapters, segments, or clusters). Applicable in text editors.
Keys | Actions | |
---|---|---|
Ctrl + Up Arrow |
Move cursor to previous paragraph. | |
Ctrl + Down Arrow |
Move cursor to next paragraph. | |
Ctrl + Left Arrow |
Jump to previous visual area. | Advanced |
Ctrl + Right Arrow |
Jump to next visual area. | Advanced |
“List of properties for objects can be edited with keyboard controls”
Edit an attribute in a list of properties for an object, e.g. chart.
Keys | Actions |
---|---|
Down Arrow |
Move focus below. |
Up Arrow |
Move focus above. |
Tab |
Move focus to next property element. |
Shift + Tab |
Move focus to previous property elements. |
“Scrubbing interface can be accessed with keyboard controls”
Show preview while pointing to a certain place or index element in a huge set of items e.g. thumbnail in galleries or time lines, preview of items in a long list. The selection can also be triggered with clicking or releasing.
“The selected value of list-based inputs can be changed without opening the list, with keyboard controls”
Sequence quick access enables users to manipulate the selected option in a list-type input (e.g. select) without opening the popover list.
Keys | Actions |
---|---|
Left Arrow |
select previous item |
Right Arrow |
select next item |
“Multi-step interfaces can be navigated with keyboard controls”
Wizards (multi-step dialogs and pages, e.g. tactics dialogs, VCE page) can be navigated with keyboard controls.
Page types:
- Mandatory pages: contain required field.
- Optional pages: only contain optional fields, these steps can be skipped.
Keys | Actions | |
---|---|---|
Enter |
Navigates to the next page (in a multi-step dialog or in a multi-step form). | |
Escape |
Cancels wizard and closes dialog. | |
Shift + Enter |
Navigates to the previous page. | Advanced |
Ctrl + Enter |
Finish, skipping optional pages. | Advanced |
Alt + Right Arrow |
Navigates to the next page. | Advanced |
Alt + Left Arrow |
Navigates to the previous page. | Advanced |