Extension that helps you to learn keyboard shortcuts while you are working. Now with smart editor action detection that learns from your editing patterns!
Note: The current VSCode API does not allow the plugin to be implemented in full. Therefore, the plugin was implemented as a workaround and partially tracks user actions by indirect signs.
If you have any problems or want to participate in the development, welcome to the project repository on GitHub.
- 100% Local Processing - No data leaves your computer
- Open Source - Fully auditable code
- No Telemetry - Zero data collection
- In-Memory Only - No logs written to disk
- Focus-Aware - Automatically pauses when VS Code loses focus (only monitors within VS Code)
Read our Privacy Policy | No data collection | Local processing only
For antivirus users: This extension monitors keyboard events to suggest shortcuts. Some antivirus software may flag this as "keylogger-like" behavior, but the extension is completely safe and transparent. You can review the source code at any time.
-
When you use the mouse on a button inside the editor, the extension shows you the keyboard shortcut that you should have used instead.
-
For buttons that don't have a shortcut, the extension prompts you with the possibility to directly create one by opening the keybindings menu.
Key Promoter now intelligently detects inefficient editing patterns and suggests better shortcuts:
- Word Deletion - Detects when you delete a word character-by-character instead of using
Ctrl+Backspace/Ctrl+Delete - Line Deletion - Detects when you press Backspace multiple times to delete an entire line instead of using
Ctrl+Shift+K
- Line Movement - Detects when you manually cut and paste to move lines instead of using
Alt+Up/Alt+Down - Line Duplication - Detects when you copy and paste to duplicate a line instead of using
Shift+Alt+Down
- Arrow Navigation - Detects excessive use of arrow keys when keyboard shortcuts would be faster:
- Character-by-character word traversal → suggests
Ctrl+Left/Ctrl+Right - Navigating to line start/end → suggests
Home/End - Page scrolling with arrows → suggests
PageUp/PageDown - File navigation with arrows → suggests
Ctrl+Home/Ctrl+End
- Character-by-character word traversal → suggests
- Inefficient Selection - Detects slow text selection patterns:
- Character-by-character word selection → suggests
Ctrl+Shift+Left/Ctrl+Shift+Right - Word-by-word line edge selection → suggests
Shift+Home/Shift+End
- Character-by-character word selection → suggests
- Repeated Word Selection - Detects when you repeatedly select the same word → suggests
Ctrl+Dfor multi-cursor
Smart Learning: The extension learns from your editing patterns and only shows suggestions after you've repeated the same inefficient action multiple times. It won't annoy you with one-time actions!
| Setting | Description | Default |
|---|---|---|
Key Promoter.enabled |
Enable/disable the extension completely Disables keyboard shortcut detection. Read why this setting exists |
true |
Key Promoter.loyaltyLevel |
Number of command repetitions before showing notification | 5 |
Key Promoter.suggestKeybindingCreation |
Suggest creating custom shortcuts for commands without them | true |
Key Promoter.logger.loggingLevel |
Logging level for troubleshooting Options: Error, Warn, Info, Debug |
"Info" |
| Setting | Description | Default |
|---|---|---|
Key Promoter.editorActions.enabled |
Enable/disable smart editor action detection Detects inefficient editing patterns and suggests better shortcuts |
true |
Key Promoter.editorActions.loyaltyLevel |
Number of inefficient action repetitions before showing notification | 1 |
Note: Editor actions have a separate, lower loyalty level (default: 1) because they represent complete patterns (like deleting an entire line), not individual command executions. The extension won't spam you - it still tracks the pattern multiple times internally before showing a notification.
| Setting | Description | Default |
|---|---|---|
Key Promoter.ignoredCommands |
Commands and patterns that will not trigger notifications Supports wildcards (e.g., "inlineChat.*") |
["type"] |
You can use wildcards to ignore entire groups of commands or editor patterns:
{
"Key Promoter.ignoredCommands": [
"type",
// Ignore command groups
"inlineChat.*", // Ignores all inlineChat commands
"workbench.action.terminal.*", // Ignores all terminal actions
"git.*", // Ignores all git commands
"editor.action.*", // Ignores all editor actions
"workbench.action.Editor", // Ignores tab navigation group
// Ignore specific editor patterns
"editorPattern.line-delete-backspace", // Ignore line deletion tips
"editorPattern.word-delete-backspace", // Ignore word deletion tips
"editorPattern.arrow-navigation-excessive", // Ignore arrow navigation tips
// Ignore all editor patterns
"editorPattern.*" // Ignores all editor action tips
]
}Editor Pattern IDs:
editorPattern.line-delete-backspace- Line deletion with BackspaceeditorPattern.word-delete-backspace- Word deletion character-by-charactereditorPattern.line-movement-manual- Manual line movementeditorPattern.line-duplication-manual- Manual line duplicationeditorPattern.word-selection-repeated- Repeated word selectioneditorPattern.arrow-navigation-excessive- Excessive arrow key navigationeditorPattern.text-selection-navigation- Inefficient text selection
- ✅ Windows - Full support
- ✅ macOS - Full support (with permissions, see below)
- ✅ Linux (X11) - Full support
⚠️ Linux (Wayland) - May have issues with keyboard monitoring⚠️ WSL - May have incorrect behavior
On macOS, you need to grant accessibility permissions:
- Open System Preferences → Security & Privacy → Privacy → Accessibility
- Add VS Code to the allowed applications
- Restart VS Code
- Monitors when you execute commands via mouse/menu or your editing patterns
- Checks if the command has a keyboard shortcut
- Shows your personalized shortcut after repeated usage
- Some default editor actions are not tracked
- Other extensions' commands are not supported
- May have issues on Linux Wayland
- WSL may have incorrect behavior
- Mouse selection patterns are not detected (by design, to avoid false positives)
Use the Key Promoter output panel to see detailed logs:
- Open Output panel:
View→Output - Select "Key Promoter" from the dropdown
- Adjust log level in settings if needed
If you're unsure whether Key Promoter can detect your keyboard:
- Open Command Palette (
F1) - Run:
Key Promoter: Test Keyboard - Press some keys to verify they are detected
This is useful for debugging platform-specific issues (especially on Linux Wayland or macOS without permissions).
- Check that
Key Promoter.enabledistrue - On macOS: verify accessibility permissions are granted
- Check the output panel for errors
- Increase
Key Promoter.loyaltyLevelfor command notifications - Increase
Key Promoter.editorActions.loyaltyLevelfor editor pattern notifications - Add specific commands/patterns to
Key Promoter.ignoredCommands - Disable editor actions with
Key Promoter.editorActions.enabled: false
- The extension monitors keyboard events locally - this is safe and necessary
- Add VS Code to your antivirus whitelist if needed
- Review the open-source code for transparency
- Open VS Code
- Go to Extensions (
Ctrl+Shift+X) - Search for "Key Promoter"
- Click Install
Download the latest .vsix file (or build by yourself):
- Go to GitHub Releases
- Download the latest
key-promoter-x.x.x.vsixfile - Install in VS Code:
- Open VS Code
- Go to Extensions (
Ctrl+Shift+X) - Click
...→ Install from VSIX... - Select the downloaded
.vsixfile
See CHANGELOG.md for detailed release notes.
MIT License - see LICENSE for details