Files
PowerToys/doc/dsc/modules/ShortcutGuide.md
Noraa Junker 6c9fb8ce52 [Shortcut Guide] Add Windows key hold activation options (#49661)
## Summary of the Pull Request

Adds configurable Windows-key hold activation to Shortcut Guide while
keeping the regular activation shortcut independent.

Users can choose to disable Windows-key activation, show taskbar
indicators, or open the full Shortcut Guide. Full-guide mode also
supports a configurable hold duration and optional close-on-release
behavior.

<img width="1099" height="611" alt="image"
src="https://github.com/user-attachments/assets/e0fe4c0f-3bef-43f8-a526-d22caf9e484e"
/>


## PR Checklist

- [ ] Closes: N/A
- [x] **Communication:** The UX and behavior were discussed before
implementation
- [x] **Tests:** Added/updated and all pass
- [x] **Localization:** All end-user-facing strings can be localized
- [x] **Dev docs:** Added/updated
- [ ] **New binaries:** Not applicable
- [ ] **Documentation updated:** Not applicable

## Detailed Description of the Pull Request / Additional comments

- Adds Off, taskbar-indicator, and full-guide Windows-key actions to
Settings.
- Adds a 100–5,000 ms hold-duration setting and a full-guide
close-on-release option.
- Handles left and right Windows keys and suppresses Start after an
activated hold.
- Routes Windows-key holds through a dedicated event so custom
activation shortcuts remain independent.
- Clears previous pressed-key registrations before refreshing them to
prevent duplicate long-press callbacks.
- Preserves compatibility with the existing `press_time` setting and
documents the new options.

## Validation Steps Performed

- Built the affected ARM64 Debug Settings, Runner, Shortcut Guide
module-interface, and Shortcut Guide UI projects.
- `ShortcutGuide.UnitTests`: 7/7 passed.
- Targeted Settings tests: 12/12 passed.
- Manually verified Off, taskbar-indicator, full-guide close-on-release,
and full-guide persistent modes.
- Verified configured hold thresholds, both Windows keys, Start
suppression, and regular-shortcut independence.
- Validated the final Settings XAML layout in the running Settings app.

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Muyuan Li (from Dev Box) <muyuanli@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 2b3acca3-e49b-4936-8fb9-6f669bd449db
2026-08-13 22:27:39 +02:00

280 lines
6.3 KiB
Markdown

---
description: DSC configuration reference for PowerToys ShortcutGuide module
ms.date: 10/18/2025
ms.topic: reference
title: ShortcutGuide Module
---
# ShortcutGuide Module
## Synopsis
Manages configuration for the Shortcut Guide utility, which displays available keyboard shortcuts.
## Description
The `ShortcutGuide` module configures PowerToys Shortcut Guide, a utility that
displays an overlay showing available Windows and application keyboard shortcuts.
It can be opened with a configurable shortcut or by holding either Windows key.
## Properties
The ShortcutGuide module supports the following configurable properties:
### OpenShortcutGuide
Sets the keyboard shortcut or method to open the shortcut guide.
**Type:** object
**Properties:**
- `win` (boolean) - Windows key modifier
- `ctrl` (boolean) - Ctrl key modifier
- `alt` (boolean) - Alt key modifier
- `shift` (boolean) - Shift key modifier
- `code` (integer) - Virtual key code
- `key` (string) - Key name
**Default:** `Win+Shift+/`
### WindowsKeyAction
Sets the action performed after holding either Windows key.
**Type:** integer
**Allowed values:** `0` (Off), `1` (Show taskbar indicators), `2` (Open Shortcut Guide)
**Default:** `1`
### OverlayOpacity
Sets the opacity of the shortcut guide overlay (0-100).
**Type:** integer
**Range:** `0` to `100`
**Default:** `90`
### Theme
Sets the theme for the shortcut guide.
**Type:** string
**Allowed values:** `"light"`, `"dark"`, `"system"`
**Default:** `"dark"`
### PressTime
Sets how long the Windows key must be held before showing the guide (in milliseconds).
**Type:** integer
**Range:** `100` to `5000`
**Default:** `900`
### CloseOnWindowsKeyRelease
Controls whether the full Shortcut Guide closes when the Windows key is released.
This setting applies when `WindowsKeyAction` is `2`; taskbar indicators always
close on release.
**Type:** boolean
**Default:** `true`
### ExcludedApps
List of applications where Shortcut Guide is disabled.
**Type:** string (newline-separated list of executable names)
## Examples
### Example 1 - Configure activation time with direct execution
This example opens the full Shortcut Guide after holding a Windows key for 600 milliseconds.
```powershell
$config = @{
settings = @{
properties = @{
WindowsKeyAction = 2
PressTime = 600
CloseOnWindowsKeyRelease = $true
}
name = "ShortcutGuide"
version = "1.0"
}
} | ConvertTo-Json -Depth 10 -Compress
PowerToys.DSC.exe set --resource 'settings' --module ShortcutGuide `
--input $config
```
### Example 2 - Configure appearance with DSC
This example customizes the overlay appearance.
```bash
dsc config set --file shortcutguide-appearance.dsc.yaml
```
```yaml
# shortcutguide-appearance.dsc.yaml
$schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json
resources:
- name: Configure Shortcut Guide appearance
type: Microsoft.PowerToys/ShortcutGuideSettings
properties:
settings:
properties:
OverlayOpacity: 95
Theme: light
name: ShortcutGuide
version: 1.0
```
### Example 3 - Install and configure with WinGet
This example installs PowerToys and configures Shortcut Guide.
```bash
winget configure winget-shortcutguide.yaml
```
```yaml
# winget-shortcutguide.yaml
$schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2023/08/config/document.json
metadata:
winget:
processor: dscv3
resources:
- name: Install PowerToys
type: Microsoft.WinGet.DSC/WinGetPackage
properties:
id: Microsoft.PowerToys
source: winget
- name: Configure Shortcut Guide
type: Microsoft.PowerToys/ShortcutGuideSettings
properties:
settings:
properties:
PressTime: 700
OverlayOpacity: 90
Theme: dark
name: ShortcutGuide
version: 1.0
```
### Example 4 - Quick activation
This example configures taskbar indicators with a short hold duration.
```bash
dsc config set --file shortcutguide-quick.dsc.yaml
```
```yaml
# shortcutguide-quick.dsc.yaml
$schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json
resources:
- name: Quick activation
type: Microsoft.PowerToys/ShortcutGuideSettings
properties:
settings:
properties:
WindowsKeyAction: 1
PressTime: 400
name: ShortcutGuide
version: 1.0
```
### Example 5 - High opacity for visibility
This example maximizes opacity for better visibility.
```powershell
$config = @{
settings = @{
properties = @{
OverlayOpacity = 100
Theme = "dark"
}
name = "ShortcutGuide"
version = "1.0"
}
} | ConvertTo-Json -Depth 10 -Compress
PowerToys.DSC.exe set --resource 'settings' --module ShortcutGuide --input $config
```
### Example 6 - Exclude applications
This example excludes Shortcut Guide from specific applications.
```bash
dsc config set --file shortcutguide-exclusions.dsc.yaml
```
```yaml
# shortcutguide-exclusions.dsc.yaml
$schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json
resources:
- name: Exclude apps
type: Microsoft.PowerToys/ShortcutGuideSettings
properties:
settings:
properties:
ExcludedApps: |
Game.exe
FullScreenApp.exe
name: ShortcutGuide
version: 1.0
```
## Use cases
### New users
Configure for easy keyboard shortcut discovery:
```yaml
resources:
- name: New user configuration
type: Microsoft.PowerToys/ShortcutGuideSettings
properties:
settings:
properties:
PressTime: 800
OverlayOpacity: 95
name: ShortcutGuide
version: 1.0
```
### Power users
Configure for quick access without accidental activation:
```yaml
resources:
- name: Power user configuration
type: Microsoft.PowerToys/ShortcutGuideSettings
properties:
settings:
properties:
PressTime: 1200
OverlayOpacity: 85
name: ShortcutGuide
version: 1.0
```
## See also
- [Settings Resource][01]
- [PowerToys DSC Overview][02]
- [Peek][03]
- [PowerToys Keyboard Shortcut Guide Documentation][04]
<!-- Link reference definitions -->
[01]: ../settings-resource.md
[02]: ../overview.md
[03]: ./Peek.md
[04]: https://learn.microsoft.com/windows/powertoys/shortcut-guide