โจ๏ธ PowerToys Run: Hotkeys Plugin
December 29, 2025 ยท View on GitHub
Hotkeys
Find and copy keyboard shortcuts for any application directly in PowerToys Run.
๐ Overview
Hotkeys is a powerful plugin for Microsoft PowerToys Run that lets you instantly find keyboard shortcuts for any application without leaving your keyboard. Simply type hk <search> to discover shortcuts from Visual Studio Code, Photoshop, Windows, and hundreds of other applications.
๐ Table of Contents
- ๐ Overview
- โจ Features
- ๐ฌ Demo
- ๐ Installation
- ๐ง Usage
- โ๏ธ Configuration
- ๐ Data Structure
- ๐ ๏ธ Building from Source
- ๐ Project Structure
- ๐ค Contributing
- โ FAQ
- ๐งโ๐ป Tech Stack
- ๐ Localization
- License
- ๐ Acknowledgements
- โ Support
- ๐ What's New (v1.1.0)
โจ Features
- ๐ Instant Search: Find shortcuts by description, key combination, or application name
- ๐ท๏ธ Smart Filtering: Use
/appnamesyntax to filter by specific applications - ๐ Quick Copy: Copy shortcuts or descriptions with keyboard shortcuts
- ๐ Blazing Fast: In-memory caching and optimized search algorithms
- ๐จ Theme Support: Auto-adapts to light/dark PowerToys themes
- ๐ Live Updates: Automatically reloads when shortcut files change
- ๐๏ธ Extensible: Add custom shortcuts via JSON files
- ๐ฑ Multi-Platform: Support for Windows, Mac, and Linux shortcuts
- โฑ๏ธ Context Menu: Rich right-click actions for enhanced workflow
- ๐พ Fuzzy Search: Find shortcuts even with typos or partial matches
- ๐ค Multi-Language: Built-in shortcuts for multiple applications and locales
๐ฌ Demo
Quick hotkey lookup across multiple applications
Filter by application using /vscode syntax
Rich context menu with copy and search options
๐ Changelog
v1.1.1 (December 29, 2024)
- Fixed: Search now uses JSON
sourcefield instead of filename (issue #3) - Fixed: Shortcuts in custom files with specific source values are now searchable by source
- Fixed: Query order is now flexible - both
hk f10 /customandhk /custom f10work (issue #3) - Fixed: Removed references to non-existent screenshot images from README (issue #2)
- Improved: Shortcuts are now grouped by actual source field, not filename
- Contributors: Thanks to @codydunne for detailed bug reports and feature requests
v1.1.0 (July 30, 2025)
- Improved code readability and organization
- Translated Ukrainian comments to English in ShortcutInfo.cs
- Updated using statements to follow conventional ordering
- Replaced ParsedQuery struct with modern record struct
- Added nullable reference types for better type safety
- Simplified method implementations with expression-bodied members
- Refactored large methods into smaller, focused helper methods
- Improved error handling and null checking
- Added proper interface inheritance for IDisposable
- Enhanced pattern matching and modern C# features
- Consolidated redundant code patterns
- Fixed PowerToys Run lint issues
v1.0.1 (July 10, 2025)
- Fixed package naming convention to comply with PowerToys Run standards
- Added SHA256 checksums for all release packages
- Removed unnecessary dependencies from the package
- Synchronized version between plugin.json and release artifacts
- Improved GitHub Actions workflow for better release automation
๐ Installation
Prerequisites
- PowerToys Run installed (v0.70.0 or later)
- Windows 10 (build 22621) or later
- .NET 7.0 Runtime (included with Windows 11 22H2 or later)
Quick Install
-
Download the appropriate ZIP for your system architecture:
-
Extract the ZIP to:
%LOCALAPPDATA%\Microsoft\PowerToys\PowerToys Run\Plugins\Typical path:
C:\Users\YourUsername\AppData\Local\Microsoft\PowerToys\PowerToys Run\Plugins\ -
Restart PowerToys (right-click the PowerToys icon in the system tray and select "Restart").
-
Open PowerToys Run (
Alt + Space) and typehk <search term>.
Manual Verification
To verify the plugin is correctly installed:
- Open PowerToys Settings
- Navigate to PowerToys Run > Plugins
- Look for "Hotkeys" in the list of plugins
- Ensure it's enabled (toggle should be ON)
๐ง Usage
Basic Commands
- Activate PowerToys Run (
Alt + Space). - Type:
hkto see instructions and available commands.hk <search term>to find shortcuts by description or keys.hk /apporhk list:appto filter by application.hk appsto list all configured applications.
Keyboard Shortcuts
- Enter: Copy the shortcut key combination to clipboard
- Ctrl + C: Copy the description to clipboard
- Ctrl + Enter: Open application help page (if available)
- Right-click: Show context menu with additional options
Advanced Search Syntax
| Command | Description | Example |
|---|---|---|
hk copy | Find all copy-related shortcuts | Shows Ctrl+C, Cmd+C |
hk /vscode | Show only Visual Studio Code shortcuts | Filters to VS Code |
hk list:chrome | Alternative app filtering syntax | Shows Chrome hotkeys |
hk apps | List all available applications | Application overview |
hk vscode/tab | Show VS Code tab-related shortcuts | Specific category |
โ๏ธ Configuration
Plugin Settings (PowerToys Settings โ PowerToys Run โ Hotkeys)
- Action Keyword: Default
hk(customizable)
Custom Shortcuts
Create custom shortcut files in:
%LOCALAPPDATA%\Microsoft\PowerToys\PowerToys Run\Plugins\Hotkeys\Shortcuts\
Example (my-shortcuts.json):
[
{
"shortcut": "Win+Shift+S",
"description": "Take a screenshot with Snip & Sketch",
"category": "Windows",
"source": "Windows",
"keywords": ["screenshot", "snip", "capture"],
"platform": "Windows",
"difficulty": "Beginner"
},
{
"shortcut": "Ctrl+Shift+P",
"description": "Open command palette",
"category": "Development",
"source": "VS Code",
"keywords": ["command", "palette", "menu"],
"platform": "Windows",
"difficulty": "Intermediate"
}
]
๐ Data Structure
Shortcut Schema
Each shortcut follows this JSON structure:
{
"shortcut": "Ctrl+C",
"description": "Copy selected text",
"category": "Editing",
"source": "Application Name",
"keywords": ["copy", "clipboard"],
"platform": "Windows",
"difficulty": "Beginner",
"aliases": ["Cmd+C"],
"version": "1.0",
"url": "https://app.com/help"
}
Field Definitions
| Field | Required | Type | Description |
|---|---|---|---|
shortcut | โ Yes | string | The key combination (e.g., Ctrl+C) |
description | โ Yes | string | What the shortcut does |
source | โ Yes | string | Application name (e.g., "Visual Studio Code") |
category | โ No | string | Grouping (e.g., "Navigation", "Editing") |
keywords | โ No | string[] | Search terms for better discoverability |
platform | โ No | string | "Windows", "Mac", "Linux", or "Cross-platform" |
difficulty | โ No | string | "Beginner", "Intermediate", "Advanced" |
aliases | โ No | string[] | Alternative key combinations |
version | โ No | string | Application version compatibility |
url | โ No | string | Link to documentation or help page |
๐ ๏ธ Building from Source
Prerequisites
- Visual Studio 2022 or later
- .NET 7.0 SDK
- PowerToys development dependencies
Build Steps
git clone https://github.com/ruslanlap/PowerToysRun-Hotkeys.git
cd PowerToysRun-Hotkeys
dotnet restore
dotnet build -c Release
Package for Distribution
# Build for x64
dotnet publish -c Release -r win-x64 --self-contained false --output ./publish/x64
# Build for ARM64
dotnet publish -c Release -r win-arm64 --self-contained false --output ./publish/arm64
# Create distribution packages
Compress-Archive -Path "./publish/x64/*" -DestinationPath "./Hotkeys-v1.1.0-x64.zip"
Compress-Archive -Path "./publish/arm64/*" -DestinationPath "./Hotkeys-v1.1.0-arm64.zip"
Development Deployment
Use the included PowerShell script for quick development deployment:
.\scripts\deploy.ps1
๐ Project Structure
PowerToysRun-Hotkeys/
โโโ assets/ # Plugin assets and demos
โ โโโ hotkeys.dark.png
โ โโโ hotkeys.light.png
โ โโโ demo-hotkeys.gif
โ โโโ demo-hotkeys2.gif
โ โโโ demo-hotkeys3.gif
โ โโโ demo-hotkeys4.gif
โโโ src/ # Plugin source code
โ โโโ Community.PowerToys.Run.Plugin.Hotkeys/
โ โ โโโ Images/
โ โ โ โโโ hotkeys.dark.png
โ โ โ โโโ hotkeys.light.png
โ โ โโโ Shortcuts/ # Built-in shortcut files
โ โ โ โโโ vscode.json
โ โ โ โโโ windows.json
โ โ โ โโโ chrome.json
โ โ โ โโโ photoshop.json
โ โ โโโ Models/
โ โ โ โโโ ShortcutModel.cs
โ โ โ โโโ SearchResult.cs
โ โ โโโ Services/
โ โ โ โโโ ShortcutService.cs
โ โ โ โโโ SearchService.cs
โ โ โ โโโ IconManager.cs
โ โ โโโ Utilities/
โ โ โ โโโ FileWatcher.cs
โ โ โ โโโ JsonLoader.cs
โ โ โ โโโ TextHelper.cs
โ โ โโโ Main.cs
โ โ โโโ plugin.json
โ โโโ Community.PowerToys.Run.Plugin.Hotkeys.csproj
โโโ tests/ # Unit tests
โ โโโ ShortcutServiceTests.cs
โ โโโ SearchServiceTests.cs
โ โโโ JsonLoaderTests.cs
โโโ scripts/ # Build and deployment scripts
โ โโโ deploy.ps1
โ โโโ build.ps1
โ โโโ package.ps1
โโโ README.md
๐ค Contributing
Contributions are welcome! Here's how you can help:
Ways to Contribute
- Add Application Shortcuts: Create JSON files for new applications
- Improve Search: Enhance fuzzy search algorithms
- Fix Bugs: Report and fix issues
- Documentation: Improve README and documentation
- Localization: Add support for other languages
Contributing Process
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
Adding New Application Shortcuts
To add shortcuts for a new application:
- Create a JSON file in the
Shortcuts/directory - Follow the schema defined in Data Structure
- Test the shortcuts work correctly
- Submit a pull request
Example shortcut file structure:
[
{
"shortcut": "F12",
"description": "Open Developer Tools",
"category": "Development",
"source": "Google Chrome",
"keywords": ["developer", "tools", "debug", "inspect"],
"platform": "Cross-platform",
"difficulty": "Beginner"
}
]
Contributors
- ruslanlap - Project creator and maintainer
- codydunne - Feature improvements and bug reports
- Community Contributors - Thank you!
โ FAQ
How do I add shortcuts for my favorite application?
Create a JSON file in the Shortcuts directory following our schema. You can also submit it as a pull request to help others!
Can I modify existing shortcuts?
Yes! You can create custom JSON files that override built-in shortcuts. Files are loaded in alphabetical order, so later files can override earlier ones.
Does the plugin work offline?
Yes! All shortcuts are stored locally and the plugin works completely offline. No internet connection required.
How do I change the activation keyword?
Go to PowerToys Settings โ PowerToys Run โ Plugins โ Hotkeys and change the "Action Keyword" field.
Can I use keyboard shortcuts to navigate results?
Yes! Use arrow keys to navigate, Enter to copy shortcut, Ctrl+C to copy description, and Ctrl+Enter for help (if available).
How does fuzzy search work?
Fuzzy search allows you to find shortcuts even with typos or partial matches. For example, searching "cpoy" will still find "copy" related shortcuts.
Can I backup my custom shortcuts?
Yes! Your custom shortcuts are stored in JSON files in the Shortcuts directory. Simply backup that folder to preserve your customizations.
๐งโ๐ป Tech Stack
| Technology | Description | Usage |
|---|---|---|
| C# / .NET 7.0 | Primary language and runtime | Core plugin logic |
| PowerToys Run API | IPlugin, IContextMenu, IPluginI18n interfaces | Integration with PowerToys |
| System.Text.Json | JSON parsing and serialization | Loading shortcut files |
| FileSystemWatcher | File monitoring | Live updates for custom shortcuts |
| System.Threading | Asynchronous operations | Non-blocking file operations |
| Fuzzy String Matching | String similarity algorithms | Typo-tolerant search |
| GitHub Actions | CI/CD pipeline | Automated builds and releases |
| MSTest | Unit testing framework | Test coverage and quality |
๐ Localization
Currently, the plugin UI is in English with built-in shortcuts for international applications. Localization support for the interface is planned for future releases.
Supported Applications Include:
- Visual Studio Code (global shortcuts)
- Adobe Creative Suite (Photoshop, Illustrator, etc.)
- Microsoft Office Suite
- Web browsers (Chrome, Firefox, Edge)
- Windows system shortcuts
- Development tools (Git, terminal applications)
๐ License
This project is licensed under the MIT License - see the LICENSE file for details.
๐ Acknowledgements
- Microsoft PowerToys team for the amazing launcher framework
- Wox project for inspiring the plugin architecture
- Application vendors who provide comprehensive shortcut documentation
- The open-source community for shortcut data contributions
- All contributors who have helped improve this plugin
โ Support
If you find this plugin useful and would like to support its development, you can buy me a coffee:
Your support helps maintain and improve the plugin, add new features, and expand the shortcut database.