Skip to content

Latest commit

 

History

History
101 lines (71 loc) · 2.84 KB

File metadata and controls

101 lines (71 loc) · 2.84 KB

Keybindings

T3 Code reads keybindings from:

  • ~/.t3/keybindings.json

The file must be a JSON array of rules:

[
  { "key": "mod+g", "command": "terminal.toggle" },
  { "key": "mod+shift+g", "command": "terminal.new", "when": "terminalFocus" }
]

See the full schema for more details: packages/contracts/src/keybindings.ts

Defaults

[
  { "key": "mod+j", "command": "terminal.toggle" },
  { "key": "mod+d", "command": "terminal.split", "when": "terminalFocus" },
  { "key": "mod+n", "command": "terminal.new", "when": "terminalFocus" },
  { "key": "mod+w", "command": "terminal.close", "when": "terminalFocus" },
  { "key": "mod+n", "command": "chat.new", "when": "!terminalFocus" },
  { "key": "mod+shift+o", "command": "chat.new", "when": "!terminalFocus" },
  { "key": "mod+shift+n", "command": "chat.newLocal", "when": "!terminalFocus" },
  { "key": "mod+o", "command": "editor.openFavorite" }
]

For most up to date defaults, see DEFAULT_KEYBINDINGS in apps/server/src/keybindings.ts

Configuration

Rule Shape

Each entry supports:

  • key (required): shortcut string, like mod+j, ctrl+k, cmd+shift+d
  • command (required): action ID
  • when (optional): boolean expression controlling when the shortcut is active

Invalid rules are ignored. Invalid config files are ignored. Warnings are logged by the server.

Available Commands

  • terminal.toggle: open/close terminal drawer
  • terminal.split: split terminal (in focused terminal context by default)
  • terminal.new: create new terminal (in focused terminal context by default)
  • terminal.close: close/kill the focused terminal (in focused terminal context by default)
  • chat.new: create a new chat thread preserving the active thread's branch/worktree state
  • chat.newLocal: create a new local chat thread for the active project (no worktree context)
  • editor.openFavorite: open current project/worktree in the last-used editor
  • script.{id}.run: run a project script by id (for example script.test.run)

Key Syntax

Supported modifiers:

  • mod (cmd on macOS, ctrl on non-macOS)
  • cmd / meta
  • ctrl / control
  • shift
  • alt / option

Examples:

  • mod+j
  • mod+shift+d
  • ctrl+l
  • cmd+k

when Conditions

Currently available context keys:

  • terminalFocus
  • terminalOpen

Supported operators:

  • ! (not)
  • && (and)
  • || (or)
  • parentheses: ( )

Examples:

  • "when": "terminalFocus"
  • "when": "terminalOpen && !terminalFocus"
  • "when": "terminalFocus || terminalOpen"

Unknown condition keys evaluate to false.

Precedence

  • Rules are evaluated in array order.
  • For a key event, the last rule where both key matches and when evaluates to true wins.
  • That means precedence is across commands, not only within the same command.