Keyboard Shortcuts in Reasonix: TUI vs Desktop Client Reference
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. 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. 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). 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 and rendered via strings in desktop/frontend/src/locales/en.ts (settings.shortcutsTitle, shortcuts.cheatsheetTitle).
Global Navigation Shortcuts
Cmd+1throughCmd+9(macOS) orCtrl+1throughCtrl+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. WhileCmd+Ymay be forwarded by some terminals,Ctrl+Yremains 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 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 invokesMemoryQuickAddNoteininternal/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 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: Defines theShortcutLayoutconfiguration structure with valid valuesclassicanddesktop.internal/config/render.go: Renders theshortcut_layoutconfiguration option and documents the classic vs desktop choice.internal/control/input.go: Implements TUI-specific shortcuts such asMemoryQuickAddNoteand the!cmdshell command handler.desktop/frontend/src/locales/en.ts: Provides internationalization strings for the desktop shortcuts interface.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-9andCtrl+Y, managed via Settings → Shortcuts and rendered from the registry. - The TUI uses single-key shortcuts defined in
internal/control/input.go, including!cmdfor shell access and#for memory notes. - Switch layouts by setting
ui.shortcut_layoutto"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.
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) 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.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →