โŒจ๏ธ PowerToys Run: Hotkeys Plugin

December 29, 2025 ยท View on GitHub

Hotkeys Plugin Logo

Hotkeys

Find and copy keyboard shortcuts for any application directly in PowerToys Run.

Hotkeys Plugin Demo
Build Status Latest Release Maintenance C# .NET Version PRs Welcome GitHub stars GitHub issues GitHub all releases Made with Love Awesome Latest Release PowerToys Compatible Platform License Awesome Mentioned in Awesome PowerToys Run Plugins
Download x64 Download ARM64

๐Ÿ“‹ 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.

Search across applications

๐Ÿ“‹ Table of Contents

โœจ Features

  • ๐Ÿ” Instant Search: Find shortcuts by description, key combination, or application name
  • ๐Ÿท๏ธ Smart Filtering: Use /appname syntax 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

Main Demo

Quick hotkey lookup across multiple applications

App Filter Example

Filter by application using /vscode syntax

Context Menu Example

Rich context menu with copy and search options

๐Ÿ“ Changelog

v1.1.1 (December 29, 2024)

  • Fixed: Search now uses JSON source field 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 /custom and hk /custom f10 work (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

  1. Download the appropriate ZIP for your system architecture:

  2. Extract the ZIP to:

    %LOCALAPPDATA%\Microsoft\PowerToys\PowerToys Run\Plugins\
    

    Typical path: C:\Users\YourUsername\AppData\Local\Microsoft\PowerToys\PowerToys Run\Plugins\

  3. Restart PowerToys (right-click the PowerToys icon in the system tray and select "Restart").

  4. Open PowerToys Run (Alt + Space) and type hk <search term>.

Manual Verification

To verify the plugin is correctly installed:

  1. Open PowerToys Settings
  2. Navigate to PowerToys Run > Plugins
  3. Look for "Hotkeys" in the list of plugins
  4. Ensure it's enabled (toggle should be ON)

๐Ÿ”ง Usage

Basic Commands

  1. Activate PowerToys Run (Alt + Space).
  2. Type:
    • hk to see instructions and available commands.
    • hk <search term> to find shortcuts by description or keys.
    • hk /app or hk list:app to filter by application.
    • hk apps to 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

CommandDescriptionExample
hk copyFind all copy-related shortcutsShows Ctrl+C, Cmd+C
hk /vscodeShow only Visual Studio Code shortcutsFilters to VS Code
hk list:chromeAlternative app filtering syntaxShows Chrome hotkeys
hk appsList all available applicationsApplication overview
hk vscode/tabShow VS Code tab-related shortcutsSpecific 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

FieldRequiredTypeDescription
shortcutโœ… YesstringThe key combination (e.g., Ctrl+C)
descriptionโœ… YesstringWhat the shortcut does
sourceโœ… YesstringApplication name (e.g., "Visual Studio Code")
categoryโŒ NostringGrouping (e.g., "Navigation", "Editing")
keywordsโŒ Nostring[]Search terms for better discoverability
platformโŒ Nostring"Windows", "Mac", "Linux", or "Cross-platform"
difficultyโŒ Nostring"Beginner", "Intermediate", "Advanced"
aliasesโŒ Nostring[]Alternative key combinations
versionโŒ NostringApplication version compatibility
urlโŒ NostringLink 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

  1. Add Application Shortcuts: Create JSON files for new applications
  2. Improve Search: Enhance fuzzy search algorithms
  3. Fix Bugs: Report and fix issues
  4. Documentation: Improve README and documentation
  5. Localization: Add support for other languages

Contributing Process

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Commit your changes: git commit -m 'Add amazing feature'
  4. Push to the branch: git push origin feature/amazing-feature
  5. Open a Pull Request

Adding New Application Shortcuts

To add shortcuts for a new application:

  1. Create a JSON file in the Shortcuts/ directory
  2. Follow the schema defined in Data Structure
  3. Test the shortcuts work correctly
  4. 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

โ“ 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

TechnologyDescriptionUsage
C# / .NET 7.0Primary language and runtimeCore plugin logic
PowerToys Run APIIPlugin, IContextMenu, IPluginI18n interfacesIntegration with PowerToys
System.Text.JsonJSON parsing and serializationLoading shortcut files
FileSystemWatcherFile monitoringLive updates for custom shortcuts
System.ThreadingAsynchronous operationsNon-blocking file operations
Fuzzy String MatchingString similarity algorithmsTypo-tolerant search
GitHub ActionsCI/CD pipelineAutomated builds and releases
MSTestUnit testing frameworkTest 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:

Buy me a coffee

Your support helps maintain and improve the plugin, add new features, and expand the shortcut database.

Made with โค๏ธ by ruslanlap