Most interactive widgets on this site can be operated entirely from the keyboard. This page lists every custom keyboard shortcut. Standard browser shortcuts (Tab to move focus, Enter to activate buttons and links, Space to toggle controls, etc.) are not repeated here.
On macOS, use Cmd wherever you see Ctrl. Both modifiers work everywhere.
Tutorials & SEBook
Shortcuts for tutorial pages and SEBook navigation.
Keys
Action
Ctrl+P
Open the print-friendly view of the current tutorial.
Ctrl+M
In the code editor, toggle whether Tab inserts a tab character or moves keyboard focus to the next control.
Shift+Tab
Move focus out of an embedded terminal and back to the previous page control.
←/→
In the SEBook language toggle, move between languages.
Home/End
In the SEBook language toggle, jump to the first or last language.
Enter/Space
On the SEBook sidebar toggle button, open or close the sidebar.
Esc
Close an open SEBook sidebar section.
Step-through debugger
Used in Python, Node, and Java tutorials. The debugger panel must be focused for these to take effect.
Step controls in the inline debugger.
Keys
Action
F5
Continue execution to the next breakpoint or until the program ends.
Shift+F5
Stop the debugger.
Alt+Shift+F5
Run backwards to the previous breakpoint.
F10
Step over the next line.
Shift+F10
Step backwards over the previous line.
Alt+Shift+F10
Step backwards out of the current function.
F11
Step into the next function call.
Shift+F11
Step out of the current function (or step backwards on return).
Enter
Confirm a value entered in a watch or breakpoint input field.
Esc
Cancel and close the active input field without saving.
Command labs (filesystem, git)
Shortcuts for the filesystem and git command labs.
Keys
Action
Esc
Close the lab modal and return to the tutorial.
Embedded tutorial terminal
The Python tutorials embed a small in-browser terminal under the editor for git, filesystem, and python commands. The terminal must be focused for these to take effect. macOS users can use Option wherever you see Alt. Ctrl+W and Ctrl+T are claimed by the browser on Linux and Windows (close tab / new tab) — use the Alt alternatives there.
Line editing and history shortcuts in the embedded terminal.
Keys
Action
←/→
Move the cursor one character left or right.
↑/↓
Step backwards or forwards through the command history.
Home/End
Jump the cursor to the start or end of the line.
Tab
Complete the current command, git subcommand, or path. Press twice to list every candidate.
Backspace/Delete
Delete one character before or after the cursor.
Alt+←/→
Jump the cursor one word left or right. Ctrl+←/→ behaves the same.
Alt+Backspace
Delete the word before the cursor. Ctrl+W does the same.
Alt+Delete
Delete the word after the cursor. Alt+D does the same.
Cmd+←/→
macOS only. Jump the cursor to the start or end of the line.
Cmd+Backspace
macOS only. Delete from the cursor back to the start of the line.
Cmd+Delete
macOS only. Delete from the cursor forward to the end of the line.
Ctrl+A/E
Jump the cursor to the start (A) or end (E) of the line.
Ctrl+B/F
Move the cursor one character backwards or forwards.
Ctrl+P/N
Step backwards (P) or forwards (N) through the command history.
Ctrl+U
Delete the entire line.
Ctrl+K
Delete from the cursor to the end of the line.
Ctrl+Y
Paste back the most recently killed text (from Ctrl+U, K, W, Alt+Backspace, or Alt+Delete).
Ctrl+T
Swap the two characters around the cursor (transpose).
Alt+.
Insert the last argument of the previous command. Press repeatedly to cycle further back through history. Alt+_ does the same.
Alt+U/L/C
Convert the word at the cursor to UPPERCASE, lowercase, or Capitalised form.
!!
Type at the prompt. Expands to the previous command before running. Use sudo !!-style retries.
!$
Type at the prompt. Expands to the last argument of the previous command. !^ uses the first argument; !* uses all arguments.
Ctrl+L
Clear the screen and redraw the prompt with the current line.
Ctrl+C
Discard the line being typed and start a fresh prompt.
Ctrl+V
Paste from the system clipboard. macOS users can use Cmd+V. Granting clipboard read permission may be required the first time.
Move focus through the palette buttons, hitboxes (movable elements), and edit handles.
Enter or Space
Activate the focused tool button, select the focused element, or, with a relation tool armed, mark the focused element as source / target.
↑↓←→
Nudge the focused element by 10 px (or 1 px with Shift).
Delete or Backspace
Delete the focused / selected element or relation (and remove all references to it from the source).
F2
Focus the “Identifier” field in the Properties side-panel for the selected element.
Esc
Cancel the active tool, close the relation chooser popup, exit fullscreen mode, or deselect the current element.
F
Toggle the playground’s full-screen mode.
?
Show or hide the “Quick tips” banner at the top of the editor (the one that explains the palette, hover-to-connect, and double-click-to-rename interactions).
Cmd/Ctrl+Z
Undo the last visual mutation (place, connect, rename, drag, group ops, props edits, deletes). Continuous bursts (a held arrow nudge, one drag) collapse into a single undo step.
Cmd/Ctrl+Shift+Z or Cmd/Ctrl+Y
Redo the last undone mutation.
Cmd/Ctrl+ click
Toggle the clicked element / relation in the multi-selection. Shift+click also adds.
Cmd/Ctrl+A
Select every element and relation in the current diagram.
double-click
Inline-edit the focused element label, relation label, or sequence-fragment condition without opening the Properties side-panel. Enter commits, Esc cancels.
drag empty canvas
Pan the diagram canvas. The pan offset is reset on the next page load.
Cmd/Ctrl+ scroll-wheel
Zoom the canvas in / out anchored on the cursor. Works with two-finger pinch on trackpads.
Cmd/Ctrl++ / Cmd/Ctrl+−
Zoom in / zoom out (also via the toolbar group).
Cmd/Ctrl+0
Reset zoom and pan to 100% / origin (also via clicking the zoom percentage).
right-click
Open the contextual menu for the element / relation / canvas (rename, duplicate, delete, new element here, select all, reset zoom).
Quizzes, flashcards & Parsons problems
Shortcuts for quizzes, SE Gym flashcards, and code-arrangement (Parsons) problems.
Keys
Action
A/B/C... or 1/2/3...
In a SE Gym workout quiz or tutorial quiz, select the matching visible answer option while the quiz has focus.
Enter/Return
In a multiple-answer SE Gym workout quiz or tutorial quiz, submit the selected answers once the Submit Answer button is enabled; after feedback, move to the next question.
←/Z
In a SE Gym flashcard after revealing the answer, mark the card as "I got it right".
→/X
In a SE Gym flashcard after revealing the answer, mark the card as "I got it wrong".
1/2/3...
In a SE Gym workout Parsons problem or tutorial Parsons problem, move the matching numbered line between the bank and the solution.
Enter/Return
In a SE Gym workout Parsons problem or tutorial Parsons problem, check the order; after feedback, move to the next question.
Space
In a SE Gym workout Parsons problem or tutorial Parsons problem, move the focused line between the bank and the solution.
Space/Enter/Return
In a SEBook page Parsons problem, move the focused line between the bank and the solution.
↑/↓
In a SEBook page Parsons problem, reorder the focused line within the solution area.
Popout windows & modals
Shortcuts that work inside any popout, modal, or overlay.
Keys
Action
Esc
Close the popout, modal, or overlay and return focus to the trigger element.
Cmd/Ctrl+Z
In the SE Gym hero customizer, undo the last avatar edit while the modal is open.
Cmd/Ctrl+Y
In the SE Gym hero customizer, redo the last undone avatar edit while the modal is open.
Tooltips
Global tooltip controls.
Keys
Action
Esc
Hide all visible tooltips.
Conflicts with browser and operating system shortcuts
The shortcuts above are scoped to specific widgets — they only fire while the widget is focused. None of them override browser-wide shortcuts (such as Ctrl+T for a new tab or Ctrl+W for closing a tab) or operating system shortcuts. The debugger keys (F5, F10, F11) shadow the browser’s reload and devtools shortcuts; this only happens while the debugger panel has focus, so click outside the debugger if you need the browser’s default behaviour.
Reporting accessibility issues
If a shortcut on this page does not work, or if you encounter an interactive widget that cannot be operated by keyboard, please open an issue on GitHub.