Reference
Keyboard shortcuts
The complete default shortcut reference. The primary modifier is Command on macOS and Ctrl on Windows and Linux, written here as Cmd/Ctrl. Almost every chord can be rebound, scoped to a surface, or edited by hand in a file.
Panels & tools
| New terminal | Cmd/CtrlShiftT |
| New browser | Cmd/CtrlShiftB |
| New editor | Cmd/CtrlAltE |
| Open the Panel Library | Cmd/CtrlShiftE |
| Close the focused panel | Cmd/CtrlW |
| Delete the focused panel (the selected files, in the File Explorer) | Cmd/CtrlBackspace |
Canvas & zoom
| Zoom in | Cmd/Ctrl= |
| Zoom out | Cmd/Ctrl- |
| Reset zoom to 100% | Cmd/CtrlShift0 |
| Zoom to fit all panels | Cmd/CtrlShift1 |
| Auto-layout the canvas | Cmd/CtrlShiftL |
| Maximize the focused panel to the whole window, or restore it | Cmd/CtrlShiftEnter |
| Toggle the minimap | Cmd/CtrlShiftM |
| Toggle the notebook | Cmd/CtrlJ |
You can also zoom by holding Cmd/Ctrl and scrolling, or with one hand by holding a mouse side button (Mouse 4 or Mouse 5) while you turn the wheel; see Mouse side buttons. Pan with a two-finger trackpad scroll or a right-click drag. Cmd/CtrlJ summons and folds the notebook on the right of the window; see Notes & the notebook.
Focus & selection
| Panel Switcher (jump between open panels) | CtrlSpace |
| Focus next panel | Ctrl` |
| Focus previous panel | CtrlShift` |
| Select all panels and regions (the files, in the File Explorer) | Cmd/CtrlA |
| Group selected panels into a region | Cmd/CtrlG |
| Dissolve selected regions | Cmd/CtrlShiftG |
Workspaces, worktrees & computers
| Next workspace | CtrlTab |
| Previous workspace | CtrlShiftTab |
| Jump to the 1st to 9th workspace (rail order) | Cmd/Ctrl1…9 |
| Jump to the 10th workspace | Cmd/Ctrl0 |
| Jump to the 1st to 9th computer | Cmd/CtrlAlt1…9 |
| Go back to the computer you were on before | Cmd/CtrlAlt← / → |
| Open the jump overlay (workspaces and worktrees) | Cmd/CtrlEnter |
| Switch Project (the workspace overview, one lane per workspace) | Cmd/CtrlShiftP |
| Open a folder | Cmd/CtrlO |
Inside the jump overlay, Tab cycles the workspace tabs, 1 to 9 jump straight to a worktree, and N cuts a new one. The overview behind Cmd/CtrlShiftP is a meta-canvas: one horizontal lane per workspace, one card per worktree. See Workspaces & the canvas and Computers.
Find & command
| Command Palette | Cmd/CtrlK |
| Quick open a file | Cmd/CtrlP |
| Search in project (the editor sidebar’s Search tab, seeded with your selection) | Cmd/CtrlShiftF |
| Find in the file (in an editor), in the rendered page (in a Markdown preview), in terminal scrollback (in a terminal) or on the page (in a browser panel) | Cmd/CtrlF |
| Go to a symbol in the file (in an editor) | Cmd/CtrlShiftO |
| Flip a Markdown file between its rendered page and its source (in a Markdown file) | Cmd/CtrlE |
| Match case, whole word, regular expression (in the search field) | Cmd/CtrlAltC / W / R |
| Next or previous project-search match (in an editor with a search open) | F4 / ShiftF4 |
Searching your project by content lives in the editor panel: the sidebar’s Search tab, or Cmd/CtrlShiftF from inside a file. The Command Palette also searches file names and contents alongside panels and terminals; what each source matches, and how the palette’s “ask the agent” mode works, is covered in Command Palette & search.
AI & voice
| Open Dex (toggle the chat bar) | Cmd/CtrlL |
| New Dex thread | Cmd/CtrlT |
| New agent task draft | Cmd/CtrlI |
| Start the task and open the next draft (in a New task draft) | Cmd/CtrlEnter |
| Jump to Next Thread Needing You | Cmd/CtrlShiftJ |
| Accept the terminal action-bar suggestion | AltEnter |
These follow the convention Cursor and VS Code use: Cmd/CtrlL opens the assistant, and Cmd/CtrlT starts a fresh thread the way a browser opens a new tab. If you have used Deska before, Cmd/CtrlT used to open Dex; any chord you rebound yourself survives the update untouched.
Cmd/CtrlShiftJ takes you to the next agent thread that wants something from you, an approval, an answer, a failure or an unseen result, wherever you happen to be working. See Agent threads.
Agent approval cards answer from the keyboard too: Cmd/CtrlEnter or Enter approves, S allows it for the rest of the session, D or Cmd/CtrlBackspace declines, and Esc cancels the turn. A request that looks destructive still asks for a mouse click to approve. On a question card, 1 to 9 pick an answer.
Inside a browser panel, Cmd/CtrlL focuses the address bar instead of opening Dex.
The talk key (push to talk)
Talking to Deska is one held key now, borrowed from the best dictation tools. Hold fn on macOS, speak, and release to send. On Windows the talk key is CtrlWin and on Linux it is CtrlSuper, the same chord held the same way, still in beta on both.
The same key does different things depending on where you press it:
| In a text field: dictate at the cursor. Anywhere else: talk to Dex | Hold |
| Start or stop a hands-free conversation with Dex | Double-tap |
| Cancel | Quick tap |
| Cancel a dictation in progress (nothing is sent) | Esc |
Some Macs have no Apple fn key, and third-party external keyboards never send it. For those, open Settings → Keybindings and, under Push to talk, set Talk key to Control + Option (hold). The same menu has Off, and Run setup beside it walks through the microphone and Accessibility permissions.
On Linux the listener needs an X11 or XWayland session. A native Wayland session does not let apps see global keys, so Deska reports the talk key unavailable there and Settings shows that message.
Editing & history
| Save the active file | Cmd/CtrlS |
| Undo | Cmd/CtrlZ |
| Redo | Cmd/CtrlShiftZ |
| Copy selected text | Cmd/CtrlC |
| Cut selected text | Cmd/CtrlX |
| Paste into the focused text field | Cmd/CtrlV |
While a text field or editor has focus, undo and redo apply to its text, including in a detached panel or dock window. When there is nothing left to undo in that field, the shortcut stays there. Click the canvas to use its history instead, such as bringing back a terminal removed from the canvas. On macOS, Command-Z inside a terminal keeps its canvas meaning. Ctrl shortcuts inside a terminal keep their shell meaning. Save applies to the active file.
Chords inside a surface
A few chords belong to one surface and fire only there. The app shows them next to the control they drive:
| Send, or queue it while a turn runs; while its mic listens, transcribe and send (thread composer) | Enter |
| Line break (thread composer) | ShiftEnter |
| Steer the running turn (thread composer) | Cmd/CtrlEnter |
| Toggle plan mode (thread composer) | ShiftTab |
| Hold to stop the running turn (thread) | Esc |
| Back and forward in a browser panel (macOS) | Cmd[ / Cmd] |
| Back and forward in a browser panel (Windows and Linux) | AltLeft / AltRight |
| Reload the page (browser panel) | Cmd/CtrlR |
| Zoom the page in, out or back to 100%, instead of the canvas (browser panel) | Cmd/Ctrl= / - / 0 |
| Quick-pick a row in popovers that show digit hints | Alt1…9 |
| Add the ringed card (Panel Library) | Enter |
| Add the ringed card and keep the Library open (Panel Library) | ShiftEnter |
| Open the ringed card’s own page (Panel Library) | Cmd/CtrlEnter |
| Jump to a section of the sidebar (Panel Library) | Alt1…9 |
| Clear the search, then close; on a panel’s page, go back (Panel Library) | Esc |
In the Panel Library, typing rings the best match and the arrow keys move the ring. On macOS, Alt is the Option key. See The Panel Library.
App & windows
| Open Settings | Cmd/Ctrl, |
| New window (Cmd+N works too on macOS) | Cmd/CtrlShiftN |
| Close window | Cmd/CtrlShiftW |
Customizing shortcuts
Open Settings → Keybindings to rebind any action: click its current chord, press the one you want, and it is saved right away; Esc cancels. Bare keys are accepted, so a single function key is a valid binding. The one exception is Start Voice Transcription, which Deska registers with the operating system and which therefore has to carry at least one modifier. If your new chord is already taken by an action that could fire at the same moment, the two actions swap bindings, so nothing is ever left unbound. Every row has its own reset, and Reset all at the bottom of the page restores every default at once.
A handful of chords are reserved and the recorder refuses them, because a hardcoded handler or a menu accelerator already owns the keystroke:
- Panel Library (Cmd/CtrlShiftE) and Open Folder (Cmd/CtrlO).
- New Window (Cmd/CtrlShiftN) and Close Window (Cmd/CtrlShiftW).
- Zoom In, including its hidden menu aliases on the
+key. - Delete Selection, which owns a bare Backspace or Delete, with or without Shift. The Cmd/Ctrl variants stay free and are where Delete Panel lives.
- Switch Workspace, the number keys Cmd/Ctrl1 through Cmd/Ctrl0.
Where a shortcut applies
Every rebindable action carries a context as well as a chord. The context decides which surface has to hold focus before the chord fires, and you pick it from the dropdown next to each row in Settings → Keybindings:
- Anywhere is the default for every shipped binding. It fires wherever you are in the app.
- Canvas, Terminal, Editor and Chat fire only while a panel of that kind has focus.
Because only one surface ever holds focus, the same chord bound in Terminal and in Editor is not a conflict, and Deska will not ask you to resolve it. You are warned only when two bindings share a chord and could be live at the same moment. That makes scoping a good way to reclaim a chord: bind it to one thing in a terminal and to something else in an editor.
On Windows and Linux, while a terminal has focus, Ctrl with a single letter (and CtrlBackspace) belongs to the shell, so CtrlW or CtrlK reach the program running there. Chords with Shift or Alt, and CtrlTab or Ctrl`, still reach Deska. macOS has no clash, because Deska uses Command.
The keybindings file
Settings writes your bindings to a plain JSON file that you are free to open and edit yourself. The Keybindings file row at the top of Settings → Keybindings shows its path, and its Open file button opens it, or you can go straight to it:
- macOS:
~/Library/Application Support/Deska/keybindings.json - Windows:
%APPDATA%\Deska\keybindings.json - Linux:
~/.config/Deska/keybindings.json
Each entry maps an action id to one binding. A binding is a key (a mouse side button is mouse4 or mouse5) plus the modifiers you want: command, shift, option and control, all defaulting to false, plus an optional when holding the context (global, canvas, terminal, editor or chat).
command is the platform-primary modifier: Command on macOS, Ctrl on Windows and Linux. control is the physical Ctrl key on macOS and folds onto that same Ctrl key elsewhere. Only the actions you actually changed need to appear in the file: anything absent keeps Deska’s default, which is why shipped defaults keep improving across updates for every action you never touched.