# Keyboard Shortcuts in Reasonix: TUI vs Desktop Client Reference

> Compare Reasonix keyboard shortcuts for TUI and desktop clients. Discover single-key and customizable two-axis bindings. Master Reasonix navigation efficiently.

- Repository: [YHH/DeepSeek-Reasonix](https://github.com/esengine/DeepSeek-Reasonix)
- Tags: api-reference
- Published: 2026-06-22

---

**Reasonix uses two distinct shortcut schemes: the "classic" layout for the Terminal UI (TUI) featuring single-key combinations like `Ctrl+Y` and `!cmd`, and the "desktop" layout for the GUI client with customizable two-axis bindings such as `Cmd+1-9` or `Ctrl+Y`, configurable via Settings → Shortcuts.**

The `esengine/DeepSeek-Reasonix` repository provides both a Terminal UI (TUI) and a desktop client, each with optimized keyboard shortcuts. Understanding the keyboard shortcuts in Reasonix for each interface ensures efficient navigation whether you prefer the command line or the graphical application.

## Understanding the Two Shortcut Layouts

Reasonix selects shortcut behavior based on the `ui.shortcut_layout` configuration value defined in [`internal/config/config.go`](https://github.com/esengine/DeepSeek-Reasonix/blob/main/internal/config/config.go). The system supports two mutually exclusive layouts optimized for their respective environments.

### Classic TUI Layout

The classic layout is automatically selected when you run `reasonix` in a terminal. You can manually force this mode by setting `ui.shortcut_layout = "classic"` in your configuration file. This scheme uses single-key or simple combinations (e.g., `Ctrl+P`, `Ctrl+N`, `Esc`) and is implemented in [`internal/control/input.go`](https://github.com/esengine/DeepSeek-Reasonix/blob/main/internal/control/input.go). It is designed for a pure terminal experience and does not expose the two-axis bindings found in the desktop client.

### Desktop Client Layout

The desktop layout is enabled with `ui.shortcut_layout = "desktop"` (or the deprecated `shortcut_layout = "desktop"` in [`reasonix.example.toml`](https://github.com/esengine/DeepSeek-Reasonix/blob/main/reasonix.example.toml)). This richer, two-axis shortcut model mimics modern desktop applications using `<modifier>+<key>` combinations. The desktop UI reads the shortcut registry from **Settings → Shortcuts**, and any custom bindings automatically appear in the keyboard shortcuts sheet generated from the same registry.

## Complete Desktop Client Keyboard Shortcuts

The desktop shortcut sheet—accessible by pressing `?`—is generated from the registry that powers the **Settings → Shortcuts** UI, as documented in [`docs/GUIDE.md`](https://github.com/esengine/DeepSeek-Reasonix/blob/main/docs/GUIDE.md) and rendered via strings in [`desktop/frontend/src/locales/en.ts`](https://github.com/esengine/DeepSeek-Reasonix/blob/main/desktop/frontend/src/locales/en.ts) (`settings.shortcutsTitle`, `shortcuts.cheatsheetTitle`).

### Global Navigation Shortcuts

- `Cmd+1` through `Cmd+9` (macOS) or `Ctrl+1` through `Ctrl+9` (Linux/Windows): Jump to the matching visible chat in the sidebar. Hold the modifier briefly to see the numbered badges.
- `?`: Open the keyboard shortcuts sheet from anywhere in the application.

### Chat and Composer Controls

- `Ctrl+Enter`: Send the current message in the composer.
- `Shift+Enter`: Insert a newline without sending the message.
- `Ctrl+Y`: Toggle **YOLO** mode on or off. While `Cmd+Y` may be forwarded by some terminals, `Ctrl+Y` remains the reliable shortcut across all desktop platforms.

### Mode and Display Toggles

- `Ctrl+U`: Cycle through the **Ask/Auto/Plan** modes when not overridden by a modal prompt.
- `Ctrl+R`: Toggle the **raw** view of the AI response to see the underlying formatting.

### Picker and Approval Controls

- `Enter`: Accept the selected suggestion or approve a pending tool call.
- `Esc`: Dismiss the picker or cancel a pending approval request.

## Complete TUI (Classic) Keyboard Shortcuts

The classic layout shortcuts are defined in [`internal/control/input.go`](https://github.com/esengine/DeepSeek-Reasonix/blob/main/internal/control/input.go) and are not exposed in the desktop client’s shortcut sheet. These bindings are optimized for terminal input handling.

### Navigation and History

- `Ctrl+P` / `Ctrl+N`: Navigate through command history.
- Arrow keys: Navigate through interface elements.

### Shell Commands and Memory Notes

- `!cmd <command>`: Execute a shell command directly from the TUI. This shortcut is deliberately omitted from the desktop UI and is unique to the classic layout.
- `# <note>`: Quick-add a memory note. This invokes `MemoryQuickAddNote` in [`internal/control/input.go`](https://github.com/esengine/DeepSeek-Reasonix/blob/main/internal/control/input.go), allowing you to capture notes without leaving the terminal interface.

## Configuration and Customization

To switch between shortcut schemes, modify the `ShortcutLayout` field in your configuration. The [`internal/config/render.go`](https://github.com/esengine/DeepSeek-Reasonix/blob/main/internal/config/render.go) file handles the rendering and validation of the `ui.shortcut_layout` option. When using the desktop client, conflicts are rejected automatically—the shortcuts sheet will warn you if a binding would trigger two actions simultaneously.

## Implementation Details

The shortcut system is implemented across several key files in the repository:

- [`internal/config/config.go`](https://github.com/esengine/DeepSeek-Reasonix/blob/main/internal/config/config.go): Defines the `ShortcutLayout` configuration structure with valid values `classic` and `desktop`.
- [`internal/config/render.go`](https://github.com/esengine/DeepSeek-Reasonix/blob/main/internal/config/render.go): Renders the `shortcut_layout` configuration option and documents the classic vs desktop choice.
- [`internal/control/input.go`](https://github.com/esengine/DeepSeek-Reasonix/blob/main/internal/control/input.go): Implements TUI-specific shortcuts such as `MemoryQuickAddNote` and the `!cmd` shell command handler.
- [`desktop/frontend/src/locales/en.ts`](https://github.com/esengine/DeepSeek-Reasonix/blob/main/desktop/frontend/src/locales/en.ts): Provides internationalization strings for the desktop shortcuts interface.
- [`docs/GUIDE.md`](https://github.com/esengine/DeepSeek-Reasonix/blob/main/docs/GUIDE.md): Contains the human-readable documentation for desktop keyboard shortcuts.

## Summary

- Reasonix provides two distinct shortcut schemes: **classic** for the TUI and **desktop** for the GUI client.
- The **desktop** client supports customizable two-axis bindings like `Cmd/Ctrl+1-9` and `Ctrl+Y`, managed via Settings → Shortcuts and rendered from the registry.
- The **TUI** uses single-key shortcuts defined in [`internal/control/input.go`](https://github.com/esengine/DeepSeek-Reasonix/blob/main/internal/control/input.go), including `!cmd` for shell access and `#` for memory notes.
- Switch layouts by setting `ui.shortcut_layout` to `"classic"` or `"desktop"` in your configuration file.

## Frequently Asked Questions

### How do I switch between TUI and desktop keyboard shortcuts in Reasonix?

Set `ui.shortcut_layout = "classic"` for the Terminal UI or `ui.shortcut_layout = "desktop"` for the desktop client in your Reasonix configuration. The TUI automatically selects the classic layout when running in a terminal, as determined by the logic in [`internal/config/config.go`](https://github.com/esengine/DeepSeek-Reasonix/blob/main/internal/config/config.go).

### Can I customize keyboard shortcuts in the Reasonix desktop client?

Yes, the desktop client stores bindings in a shortcut registry accessible via Settings → Shortcuts. Any custom bindings you create appear automatically in the keyboard shortcuts sheet (opened with `?`), and the system rejects conflicting combinations before they are saved.

### Why doesn't the `!cmd` shortcut work in the Reasonix desktop client?

The `!cmd` shortcut for executing shell commands is implemented exclusively in the TUI's input handler ([`internal/control/input.go`](https://github.com/esengine/DeepSeek-Reasonix/blob/main/internal/control/input.go)) and is deliberately omitted from the desktop client, which focuses on a sandboxed graphical environment rather than direct shell access.

### What is the shortcut to toggle YOLO mode in Reasonix?

Press `Ctrl+Y` to toggle YOLO mode on or off. While `Cmd+Y` may work on some terminals, `Ctrl+Y` remains the reliable fallback across both desktop and TUI interfaces, as confirmed by the desktop shortcut registry.