|
| 1 | +--- |
| 2 | +sidebar_label: Keyboard Shortcuts |
| 3 | +--- |
| 4 | + |
| 5 | +# Keyboard Shortcuts |
| 6 | + |
| 7 | +The Roo Code interface supports keyboard shortcuts to streamline your workflow and reduce dependence on mouse interactions. |
| 8 | + |
| 9 | +## Available Keyboard Commands |
| 10 | + |
| 11 | +Roo Code offers keyboard commands to enhance your workflow. This page focuses on the `roo.acceptInput` command, but here's a quick reference to all keyboard commands: |
| 12 | + |
| 13 | +| Command | Description | Default Shortcut | |
| 14 | +|---------|-------------|-----------------| |
| 15 | +| `roo.acceptInput` | Submit text or accept the primary suggestion | None (configurable) | |
| 16 | +| `roo.focus` | Focus the Roo input box | None (configurable) | |
| 17 | + |
| 18 | +### Key Benefits of Keyboard Commands |
| 19 | + |
| 20 | +* **Keyboard-Driven Interface**: Submit text or select the primary suggestion button without mouse interaction |
| 21 | +* **Improved Accessibility**: Essential for users with mobility limitations or those who experience discomfort with mouse usage |
| 22 | +* **Vim/Neovim Compatibility**: Supports seamless transitions for developers coming from keyboard-centric environments |
| 23 | +* **Workflow Efficiency**: Reduces context switching between keyboard and mouse during development tasks |
| 24 | + |
| 25 | +## roo.acceptInput Command |
| 26 | + |
| 27 | +The `roo.acceptInput` command lets you submit text or accept suggestions with keyboard shortcuts instead of clicking buttons or pressing Enter in the input area. |
| 28 | + |
| 29 | +### What It Does |
| 30 | + |
| 31 | +The `roo.acceptInput` command is a general-purpose input submission command. When triggered, it: |
| 32 | + |
| 33 | +- Submits your current text or image input when in the text input area (equivalent to pressing Enter) |
| 34 | +- Clicks the primary (first) button when action buttons are visible (such as confirm/cancel buttons or any other action buttons) |
| 35 | + |
| 36 | +### Detailed Setup Guide |
| 37 | + |
| 38 | +#### Method 1: Using the VS Code UI |
| 39 | + |
| 40 | +1. Open the Command Palette (`Ctrl+Shift+P` or `Cmd+Shift+P` on Mac) |
| 41 | +2. Type "Preferences: Open Keyboard Shortcuts" |
| 42 | +3. In the search box, type "roo.acceptInput" |
| 43 | +4. Locate "Roo: Accept Input/Suggestion" in the results |
| 44 | +5. Click the + icon to the left of the command |
| 45 | +6. Press your desired key combination (e.g., `Ctrl+Enter` or `Alt+Enter`) |
| 46 | +7. Press Enter to confirm |
| 47 | + |
| 48 | + |
| 49 | +#### Method 2: Editing keybindings.json directly |
| 50 | + |
| 51 | +1. Open the Command Palette (`Ctrl+Shift+P` or `Cmd+Shift+P` on Mac) |
| 52 | +2. Type "Preferences: Open Keyboard Shortcuts (JSON)" |
| 53 | +3. Add the following entry to the JSON array: |
| 54 | + |
| 55 | +```json |
| 56 | +{ |
| 57 | + "key": "ctrl+enter", // or your preferred key combination |
| 58 | + "command": "roo.acceptInput", |
| 59 | + "when": "rooViewFocused" // This is a context condition that ensures the command only works when Roo is focused |
| 60 | +} |
| 61 | +``` |
| 62 | + |
| 63 | +You can also use a more specific condition: |
| 64 | +```json |
| 65 | +{ |
| 66 | + "key": "ctrl+enter", |
| 67 | + "command": "roo.acceptInput", |
| 68 | + "when": "webviewViewFocus && webviewViewId == 'roo-cline.SidebarProvider'" |
| 69 | +} |
| 70 | +``` |
| 71 | + |
| 72 | +#### Recommended Key Combinations |
| 73 | + |
| 74 | +Choose a key combination that doesn't conflict with existing VS Code shortcuts: |
| 75 | + |
| 76 | +- `Alt+Enter` - Easy to press while typing |
| 77 | +- `Ctrl+Space` - Familiar for those who use autocomplete |
| 78 | +- `Ctrl+Enter` - Intuitive for command execution |
| 79 | +- `Alt+A` - Mnemonic for "Accept" |
| 80 | + |
| 81 | +### Practical Use Cases |
| 82 | + |
| 83 | +#### Quick Development Workflows |
| 84 | + |
| 85 | +- **Text Submission**: Send messages to Roo without moving your hands from the keyboard |
| 86 | +- **Action Confirmations**: Accept operations like saving files, running commands, or applying diffs |
| 87 | +- **Multi-Step Processes**: Move quickly through steps that require confirmation or input |
| 88 | +- **Consecutive Tasks**: Chain multiple tasks together with minimal interruption |
| 89 | + |
| 90 | +#### Keyboard-Centric Development |
| 91 | + |
| 92 | +- **Vim/Neovim Workflows**: If you're coming from a Vim/Neovim background, maintain your keyboard-focused workflow |
| 93 | +- **IDE Integration**: Use alongside other VS Code keyboard shortcuts for a seamless experience |
| 94 | +- **Code Reviews**: Quickly accept suggestions when reviewing code with Roo |
| 95 | +- **Documentation Writing**: Submit text and accept formatting suggestions when generating documentation |
| 96 | + |
| 97 | +#### Accessibility Use Cases |
| 98 | + |
| 99 | +- **Hand Mobility Limitations**: Essential for users who have difficulty using a mouse |
| 100 | +- **Repetitive Strain Prevention**: Reduce mouse usage to prevent or manage repetitive strain injuries |
| 101 | +- **Screen Reader Integration**: Works well with screen readers for visually impaired users |
| 102 | +- **Voice Control Compatibility**: Can be triggered via voice commands when using voice control software |
| 103 | + |
| 104 | +### Accessibility Benefits |
| 105 | + |
| 106 | +The `roo.acceptInput` command was designed with accessibility in mind: |
| 107 | + |
| 108 | +- **Reduced Mouse Dependence**: Complete entire workflows without reaching for the mouse |
| 109 | +- **Reduced Physical Strain**: Helps users who experience discomfort or pain from mouse usage |
| 110 | +- **Alternative Input Method**: Supports users with mobility impairments who rely on keyboard navigation |
| 111 | +- **Workflow Optimization**: Particularly valuable for users coming from keyboard-centric environments like Vim/Neovim |
| 112 | + |
| 113 | +### Keyboard-Centric Workflows |
| 114 | + |
| 115 | +Here are some complete workflow examples showing how to effectively use keyboard shortcuts with Roo: |
| 116 | + |
| 117 | +#### Development Workflow Example |
| 118 | + |
| 119 | +1. Open VS Code and navigate to your project |
| 120 | +2. Open Roo via the sidebar |
| 121 | +3. Type your request: "Create a REST API endpoint for user registration" |
| 122 | +4. When Roo asks for framework preferences, use your `roo.acceptInput` shortcut to select the first suggestion |
| 123 | +5. Continue using the shortcut to accept code generation suggestions |
| 124 | +6. When Roo offers to save the file, use the shortcut again to confirm |
| 125 | +7. Use VS Code's built-in shortcuts to navigate through the created files |
| 126 | + |
| 127 | +#### Code Review Workflow |
| 128 | + |
| 129 | +1. Select code you want to review and use VS Code's "Copy" command |
| 130 | +2. Ask Roo to review it: "Review this code for security issues" |
| 131 | +3. As Roo asks clarifying questions about the code context, use your shortcut to accept suggestions |
| 132 | +4. When Roo provides improvement recommendations, use the shortcut again to accept implementation suggestions |
| 133 | + |
| 134 | +### Troubleshooting |
| 135 | + |
| 136 | +| Issue | Solution | |
| 137 | +|-------|----------| |
| 138 | +| Shortcut doesn't work | Ensure Roo is focused (click in the Roo panel first) | |
| 139 | +| Wrong suggestion selected | The command always selects the first (primary) button; use mouse if you need a different option | |
| 140 | +| Conflicts with existing shortcuts | Try a different key combination in VS Code keyboard settings | |
| 141 | +| No visual feedback when used | This is normal - the command silently activates the function without visual confirmation | |
| 142 | +| Shortcut works inconsistently | Make sure the `when` clause is properly configured in your keybindings.json (either `rooViewFocused` or the webview-specific condition) | |
| 143 | + |
| 144 | +### Technical Implementation |
| 145 | + |
| 146 | +The `roo.acceptInput` command is implemented as follows: |
| 147 | + |
| 148 | +- Command registered as `roo.acceptInput` with display title "Roo: Accept Input/Suggestion" in the command palette |
| 149 | +- When triggered, it sends an "acceptInput" message to the active Roo webview |
| 150 | +- The webview determines the appropriate action based on the current UI state: |
| 151 | + - Clicks the primary action button if action buttons are visible and enabled |
| 152 | + - Sends the message if the text area is enabled and contains text/images |
| 153 | +- No default key binding - users assign their preferred shortcut |
| 154 | + |
| 155 | +### Limitations |
| 156 | + |
| 157 | +- Works only when the Roo interface is active |
| 158 | +- Has no effect if no inputs or suggestions are currently available |
| 159 | +- Prioritizes the primary (first) button when multiple options are shown |
0 commit comments