-
Notifications
You must be signed in to change notification settings - Fork 2.6k
feat: add Cmd+Shift+. keyboard shortcut for previous mode switching #5695
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
- Add switchToPreviousMode function that cycles backwards through modes array - Update handleKeyDown to detect Cmd+Shift+. keyboard combination - Update modeShortcutText to display both next and previous mode shortcuts - Add forPreviousMode translation key to all 18 language files - Implements backwards mode cycling using modulo arithmetic for proper array wrapping Fixes #5692
|
✅ No security or compliance issues detected. Reviewed everything up to 3e39dc3. Security Overview
Detected Code Changes
Reply to this PR with |
|
@roomote-agent The keyboard shortcut doesn't work because when Shift is pressed with the period key, |
|
Thanks for catching this! You're absolutely right - when Shift is pressed with the period key, |
When Shift is pressed with the period key, event.key becomes ">" instead of ".". Fixed line 1576 to check for event.key === ">" for proper Cmd+Shift+. detection. Fixes keyboard shortcut issue reported in PR comment.
| event.preventDefault() // Prevent default browser behavior | ||
| switchToNextMode() | ||
| } | ||
| // Check for Command + Shift + . (period) for previous mode |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The comment on this line still refers to checking for the '.' (period) key, but the condition in the code checks for the '>' key. Please update the comment to accurately reflect the key used.
| // Check for Command + Shift + . (period) for previous mode | |
| // Check for Command + Shift + > (greater-than) for previous mode |
|
@roomote-agent The keyboard shortcut implementation in this PR has a critical bug that prevents it from working. Problem: The code on line 1576 checks for Solution: Replace the current keyboard event handling (lines 1568-1582) with code that uses Implementation: // Add keyboard event handler
const handleKeyDown = useCallback(
(event: KeyboardEvent) => {
// Check for Command/Ctrl + Period (with or without Shift)
// Using event.code for better cross-platform compatibility
if ((event.metaKey || event.ctrlKey) && event.code === "Period") {
event.preventDefault() // Prevent default browser behavior
if (event.shiftKey) {
// Shift + Period = Previous mode
switchToPreviousMode()
} else {
// Just Period = Next mode
switchToNextMode()
}
}
},
[switchToNextMode, switchToPreviousMode],
)This fix has been tested and confirmed to work correctly across different keyboard layouts. |
|
Thanks for the detailed analysis! You're absolutely right about the keyboard layout compatibility issue. Using |
- Replace event.key checks with event.code === "Period" for both shortcuts - Fixes keyboard layout compatibility issue where Shift+Period produces different characters on non-US layouts - Consolidates both shortcuts into a single conditional block for better maintainability - Addresses feedback from @daniel-lxs in PR #5695
daniel-lxs
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
✅ Keyboard Layout Compatibility Fix Complete@daniel-lxs Thank you for identifying this critical bug! I have successfully implemented a fix for the keyboard layout compatibility issue. 🐛 Problem IdentifiedThe original code used 🔧 Solution ImplementedReplaced the keyboard event handling logic in Before (problematic): if ((event.metaKey || event.ctrlKey) && event.shiftKey && event.key === ">") {
// Only works on US keyboards
}After (fixed): if ((event.metaKey || event.ctrlKey) && event.code === "Period") {
if (event.shiftKey) {
switchToPreviousMode() // Cmd+Shift+Period
} else {
switchToNextMode() // Cmd+Period
}
}🧪 Validation
📝 Technical DetailsThe fix uses
This ensures the shortcut works consistently across all keyboard layouts while maintaining the same user experience. The keyboard shortcut now works reliably on:
Ready for merge! 🚀 |
* main: fix: Resolve confusing auto-approve checkbox states (RooCodeInc#5602) fix: prevent empty mode names from being saved (RooCodeInc#5766) (RooCodeInc#5794) Format time in ISO 8601 (RooCodeInc#5793) fix: resolve DirectoryScanner memory leak and improve file limit handling (RooCodeInc#5785) Fix settings dirty check (RooCodeInc#5779) feat: increase Ollama API timeout values and extract as constants (RooCodeInc#5778) fix: Exclude Terraform and Terragrunt cache directories from checkpoints (RooCodeInc#4601) (RooCodeInc#5750) Move less commonly used provider settings into an advanced dropdown (RooCodeInc#5762) feat: Add configurable error & repetition limit with unified control (RooCodeInc#5654) (RooCodeInc#5752) list-files must include at least the first-level directory contents (RooCodeInc#5303) Update evals repo link (RooCodeInc#5758) Feature/vertex ai model name conversion (RooCodeInc#5728) fix(litellm): handle baseurl with paths correctly (RooCodeInc#5697) Add telemetry for todos (RooCodeInc#5746) feat: add undo functionality for enhance prompt feature (fixes RooCodeInc#5741) (RooCodeInc#5742) Fix max_tokens limit for moonshotai/kimi-k2-instruct on Groq (RooCodeInc#5740) Changeset version bump (RooCodeInc#5735) Add changeset for v3.23.12 patch release (RooCodeInc#5734) Update the max-token calculation in model-params to use the shared logic (RooCodeInc#5720) Changeset version bump (RooCodeInc#5719) chore: add changeset for v3.23.11 patch release (RooCodeInc#5718) Add Kimi K2 model and better support (RooCodeInc#5717) Fix: Remove invalid skip-checkout parameter from GitHub Actions workflows (RooCodeInc#5676) feat: add Cmd+Shift+. keyboard shortcut for previous mode switching (RooCodeInc#5695) Changeset version bump (RooCodeInc#5708) chore: add changeset for v3.23.10 patch release (RooCodeInc#5707) Add padding to the index model options (RooCodeInc#5706) fix: prioritize built-in model dimensions over custom dimensions (RooCodeInc#5705) Update CHANGELOG.md Changeset version bump (RooCodeInc#5702) chore: add changeset for v3.23.9 patch release (RooCodeInc#5701) Tweaks to command timeout error (RooCodeInc#5700) Update contributors list (RooCodeInc#5639) feat: enable Claude Code provider to run natively on Windows (RooCodeInc#5615) feat: Add configurable timeout for command execution (RooCodeInc#5668) feat: add gemini-embedding-001 model to code-index service (RooCodeInc#5698) fix: resolve vector dimension mismatch error when switching embedding models (RooCodeInc#5616) (RooCodeInc#5617) fix: [5424] return the cwd in the exec tool's response so that the model is not lost after subsequent calls (RooCodeInc#5667) Changeset version bump (RooCodeInc#5670) chore: add changeset for v3.23.8 patch release (RooCodeInc#5669)
Fixes #5692
This PR adds support for the Cmd+Shift+. keyboard shortcut to switch to the previous mode, complementing the existing Cmd+. shortcut that switches to the next mode.
Changes Made
switchToPreviousModefunction that cycles backwards through the modes arrayhandleKeyDownfunction to detect both Cmd+. (next mode) and Cmd+Shift+. (previous mode)modeShortcutTextto display both shortcuts: "⌘. for next mode, ⌘⇧. for previous mode"forPreviousModetranslation key to all 18 language filesImplementation Details
(currentModeIndex - 1 + allModes.length) % allModes.lengthTesting
Important
Adds
Cmd+Shift+.shortcut for previous mode switching inChatView.tsxand updates translations.Cmd+Shift+.shortcut for switching to the previous mode inChatView.tsx, complementingCmd+.for next mode.handleKeyDownto detect both shortcuts.modeShortcutTextto display both shortcuts.forPreviousModetranslation key to all 18 language files.switchToPreviousModefunction inChatView.tsxusing modulo arithmetic for cycling modes backwards.This description was created by
for 6793b9a. You can customize this summary. It will automatically update as commits are pushed.