Skip to content

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 terminalCmd/CtrlShiftT
New browserCmd/CtrlShiftB
New editorCmd/CtrlAltE
Open the Panel LibraryCmd/CtrlShiftE
Close the focused panelCmd/CtrlW
Delete the focused panel (the selected files, in the File Explorer)Cmd/CtrlBackspace

Canvas & zoom

Zoom inCmd/Ctrl=
Zoom outCmd/Ctrl-
Reset zoom to 100%Cmd/CtrlShift0
Zoom to fit all panelsCmd/CtrlShift1
Auto-layout the canvasCmd/CtrlShiftL
Maximize the focused panel to the whole window, or restore itCmd/CtrlShiftEnter
Toggle the minimapCmd/CtrlShiftM
Toggle the notebookCmd/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 panelCtrl`
Focus previous panelCtrlShift`
Select all panels and regions (the files, in the File Explorer)Cmd/CtrlA
Group selected panels into a regionCmd/CtrlG
Dissolve selected regionsCmd/CtrlShiftG

Workspaces, worktrees & computers

Next workspaceCtrlTab
Previous workspaceCtrlShiftTab
Jump to the 1st to 9th workspace (rail order)Cmd/Ctrl1…9
Jump to the 10th workspaceCmd/Ctrl0
Jump to the 1st to 9th computerCmd/CtrlAlt1…9
Go back to the computer you were on beforeCmd/CtrlAlt← / →
Open the jump overlay (workspaces and worktrees)Cmd/CtrlEnter
Switch Project (the workspace overview, one lane per workspace)Cmd/CtrlShiftP
Open a folderCmd/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 PaletteCmd/CtrlK
Quick open a fileCmd/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 threadCmd/CtrlT
New agent task draftCmd/CtrlI
Start the task and open the next draft (in a New task draft)Cmd/CtrlEnter
Jump to Next Thread Needing YouCmd/CtrlShiftJ
Accept the terminal action-bar suggestionAltEnter

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.

NoteVoice transcription uses CmdShiftV on macOS and CtrlAltV on Windows and Linux (the Windows/Linux default avoids a clash with the terminal paste chord). It is registered globally, so it works even when Deska is in the background.

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 DexHold
Start or stop a hands-free conversation with DexDouble-tap
CancelQuick 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.

NoteOn macOS the talk key needs the Accessibility permission to be heard while other apps have focus; Settings shows a Grant access button until it is given. And if tapping fn opens the emoji picker, tell macOS to let it go: System Settings → Keyboard → set “Press globe key to” to Do Nothing (the globe is printed on the fn key).
TipThe old voice chords AltSpace (hold to talk) and ShiftOptionSpace (conversation toggle) are retired; the talk key replaces both. CmdShiftV (macOS) and CtrlAltV (Windows and Linux) remain the system-wide dictation toggle that works even when Deska is unfocused.

Editing & history

Save the active fileCmd/CtrlS
UndoCmd/CtrlZ
RedoCmd/CtrlShiftZ
Copy selected textCmd/CtrlC
Cut selected textCmd/CtrlX
Paste into the focused text fieldCmd/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.

NoteCmd/CtrlEnter depends on where you are: app-wide it opens the jump overlay (workspaces and worktrees), in the commit box it commits, in a thread composer it steers the running turn with what you typed, on an approval card it approves, and in the Panel Library it opens the ringed card’s own page.

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 hintsAlt1…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 SettingsCmd/Ctrl,
New window (Cmd+N works too on macOS)Cmd/CtrlShiftN
Close windowCmd/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.

Mouse side buttons

The two side buttons of a mouse, Mouse 4 (usually back) and Mouse 5 (usually forward), work like keys. Click a shortcut in Settings → Keybindings and press a side button, alone or with modifiers such as Cmd/CtrlMouse 4. The binding fires when you let the button go, follows the same contexts as a key, and swaps with another action that already uses it. No action uses a side button until you give it one.

Holding either side button while you turn the wheel zooms the canvas around the pointer, the way Cmd/Ctrl and the wheel do, over the canvas and over any panel, including a focused terminal or editor. A press that zoomed does not also run the button’s binding when you let go. Turn this off with Zoom with a mouse side button in Settings → Canvas and panels → Navigation.

Over a web page in a focused browser panel, a side button you bound runs its action, and one you did not bind goes back or forward in that page. The wheel there scrolls the page even with a side button held. Side buttons need no permission on any system: Deska reads them only while its own window is under the pointer.

NoteTwo actions take only keyboard keys: Start Voice Transcription, which Deska registers with the operating system, and Start Task and Open Another, which the New task box reads itself. Inside a community panel, and in a window you detached, side buttons do nothing yet. If your mouse software turns a side button into a key combination, Deska sees that combination instead, and you can bind it like any other.

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.

NoteStart Voice Transcription and Push to talk are always Anywhere and show no scope picker. The first is registered with the operating system, and the talk key is watched by its own listener outside the app window, so there is no focused panel to test a context against.

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.

Heads upSave the file and Deska picks the change up immediately, because it watches it. If the JSON cannot be parsed, Deska keeps the bindings it already has and shows a warning in Settings rather than overwriting your file, so fixing the syntax and saving again is enough.