Keyboard Shortcuts
Summary
All keyboard shortcuts in the 2Wee client. The client is keyboard-only — there is no mouse support.
Choosing your keys
Every action has a primary key and zero or more alternates. They do exactly the same thing. Pick whichever feels natural — some users prefer function keys, others prefer Ctrl combinations.
For example, to open a lookup on a field, any of these work:
| Key | Style |
|---|---|
Ctrl+Enter | Primary |
Shift+Enter | Alternate |
F6 | Alternate (function key) |
Ctrl+O | Alternate |
The documentation uses primary keys when referring to shortcuts. The full list of alternates is in the tables below.
Ctrl vs Cmd
The client treats Ctrl and Cmd (Super) as identical modifiers. Cmd+S and Ctrl+S both save. However, the terminal emulator may intercept certain Cmd combinations before they reach 2Wee. If a Cmd shortcut does not work, use the Ctrl variant.
Command shortcuts
| Action | Primary Key | Alternate(s) | Context |
|---|---|---|---|
| Quit | Q | List, Card, Menu | |
| Save | Ctrl+S | Card, Grid | |
| Refresh | Ctrl+R | All screens | |
| Close / Back | Esc | All screens | |
| New record | Ctrl+N | F3, Ctrl+I | List, Card |
| Delete record | Ctrl+D | F4 | Card |
| Open record | Enter | List | |
| Toggle edit mode | F2 | Card, Grid | |
| Copy field value | Ctrl+C | Card | |
| Open lines grid | Ctrl+L | Alt+L, Ctrl+Shift+L | Card (HeaderLines) |
| Action picker | Ctrl+A | F8 | All screens |
| Key debug overlay | F9 | All screens | |
| Theme picker | F12 | All screens | |
| Copy screen JSON | Ctrl+Shift+J | All screens | |
| Copy screen URL | Ctrl+Shift+U | All screens |
Context-dependent shortcuts
These actions share key bindings. The client resolves the action based on the focused field type.
| Action | Primary Key | Alternate(s) | When |
|---|---|---|---|
| Lookup | Ctrl+Enter | Shift+Enter, F6, Ctrl+O | Editable field with lookup |
| Drill-down | Ctrl+Enter | Shift+Enter, F6, Ctrl+O | Non-editable field with lookup |
| Open | Ctrl+Enter | Shift+Enter, F6, Ctrl+O | Email, Phone, URL field |
| Option cycle | Space | Option field | |
| Option select | Ctrl+Enter | Shift+Enter, F6, F2 | Option field |
| Insert row | Ctrl+N | F3, Ctrl+I | Grid overlay, Grid |
| Delete row | Ctrl+D | F4 | Grid overlay, Grid |
How context resolution works
The same key can trigger different actions depending on what is focused:
- On an editable field with a lookup:
Ctrl+Enteropens the lookup list - On a non-editable field with lookup:
Ctrl+Enterdrills down to the related data - On an Email, Phone, or URL field:
Ctrl+Enteropens the value in the system app (browser, dialer, email client) - On an Option field:
Ctrl+Enteropens the option selection modal - In the grid overlay:
Ctrl+Ninserts a row (on a card, it creates a new record)
Select mode (field navigation)
| Key | Action |
|---|---|
Up / Shift+Tab | Previous field |
Down / Tab | Next field |
Left / Right | Move to adjacent column |
Home | First field |
End | Last field |
Enter | Next quick_entry field; falls back to next editable field if none ahead |
F2 | Cycle: Select All → Cursor End → Cursor Start |
| Printable char | Clear field, enter edit mode, insert char |
Edit mode (text editing)
Navigation
| Key | Action |
|---|---|
Left | Cursor left 1 char |
Right | Cursor right 1 char |
Home | Cursor to start |
End | Cursor to end |
Ctrl+Left / Alt+Left | Word left |
Ctrl+Right / Alt+Right | Word right |
Alt+B | Word left (Emacs) |
Alt+F | Word right (Emacs) |
Selection
| Key | Action |
|---|---|
Shift+Left | Extend selection 1 char left |
Shift+Right | Extend selection 1 char right |
Shift+Home | Select to start |
Shift+End | Select to end |
Shift+Ctrl+Left | Extend selection word left |
Shift+Ctrl+Right | Extend selection word right |
Ctrl+A | Select all (in edit mode only — opens Action Picker in navigation mode; use F8 to avoid ambiguity) |
Deletion
| Key | Action |
|---|---|
Backspace | Delete selection, or char before cursor |
Delete | Delete selection, or char at cursor |
Alt+Backspace / Ctrl+Backspace | Delete selection, or word backward |
Mode transitions
| Key | Action |
|---|---|
Esc | Revert changes, back to select mode |
Enter | Confirm edit, advance to next quick_entry field |
F2 | Cycle: Select All → Cursor End → Cursor Start (continues editing) |
Tab | Confirm edit, move to next field (visits all fields) |
Shift+Tab | Confirm edit, move to previous field |
TextArea fields
TextArea is edited in the same mode but Enter and Ctrl+Enter behave differently:
| Key | Action |
|---|---|
Enter | Confirm edit, advance to next quick_entry field |
Ctrl+Enter | Insert a newline at the cursor |
F2 | Cycle: Cursor End → Cursor Start (no Select All) |
Enter and Tab both confirm the edit, but differ in navigation: Enter follows the fast data entry path (skips fields with quick_entry: false). Tab visits every field. In select mode, Enter also navigates without entering edit mode. The server controls which fields Enter skips via the quick_entry property. This applies to both card fields and grid columns.
List screen
| Key | Action |
|---|---|
Up / Down | Move between rows |
Enter | Open selected record |
Home / End | First / last row |
PageUp / PageDown | Scroll page |
| Printable char | Type-to-search (filters as you type) |
Backspace | Remove last search character |
Lines overlay (HeaderLines)
| Key | Select mode | Edit mode |
|---|---|---|
| Arrow keys | Move between cells | Move cursor in cell |
Enter | Confirm + advance to next quick_entry column | Confirm + advance to next quick_entry column |
F2 | Enter edit mode | Cycle: Select All → Cursor End → Cursor Start |
Tab | Next cell (wraps) | Confirm + next cell |
Esc | Close overlay | Revert edit |
| Any char | Start typing (replaces) | Insert at cursor |
Home / End | First / last column | — |
PageUp / PageDown | Scroll page | — |
Open the grid with Ctrl+L. Close with Esc.
Menu
| Key | Action |
|---|---|
Left / Right | Switch tabs |
Up / Down | Move between items |
Enter | Open selected item |
Esc | Back / quit |
Boolean field
| Key | Action |
|---|---|
Space | Toggle between true and false |
Enter | Advance to next quick_entry field |
Option field
| Key | Action |
|---|---|
Space | Cycle to next option |
Backspace / Delete | Reset to first option |
Ctrl+Enter | Open option list modal |
Option modal
| Key | Action |
|---|---|
Up / Down | Previous / next option |
Enter | Confirm selection |
Esc | Cancel |
Hint bar
Each screen shows relevant shortcuts in the bottom bar:
| Screen | Actions shown |
|---|---|
| Menu | Escape |
| List | New, View, Escape |
| List (searching) | Same, but Escape label shows "Clear" |
| Card | New, Delete, Save, Escape |
| Grid | Save, Insert, Delete, Escape |
When the screen has server-defined actions, Ctrl+A Actions is added to the hint bar.
Context-sensitive hints appear on the left side based on the focused field type (Lookup, Drill-down, Option).
Developer tools
These shortcuts are intended for developers and integrators — not end users. They are useful when diagnosing what the server is sending.
| Shortcut | Action |
|---|---|
Ctrl+Shift+J | Copy the current screen's JSON to clipboard |
Ctrl+Shift+U | Copy the current screen's URL to clipboard |
Both shortcuts work on all screens. A confirmation appears briefly in the status bar after copying. Paste the result into a text editor or JSON formatter to inspect it.
Ctrl+Shift+J copies the full ScreenContract as pretty-printed JSON — exactly what the server sent. This is the fastest way to answer "what is the server actually sending?" when something looks wrong.