From 135291d456b53a982bacb53c530340003f6e13b8 Mon Sep 17 00:00:00 2001 From: Noraa Junker Date: Thu, 30 Jul 2026 08:29:05 +0200 Subject: [PATCH] [Shortcut Guide] Add Less Than and greater than characters and fix crash if key is empty or invalid (#49562) ## Summary of the Pull Request ## PR Checklist - [x] Closes: #49558 - [ ] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [ ] **Tests:** Added/updated and all pass - [ ] **Localization:** All end-user-facing strings can be localized - [x] **Dev docs:** Added/updated - [ ] **New binaries:** Added on the required places - [ ] [JSON for signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json) for new binaries - [ ] [WXS for installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs) for new binaries and localization folder - [ ] [YML for CI pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml) for new test projects - [ ] [YML for signed pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml) - [ ] **Documentation updated:** If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys) and link it here: #xxx ## Detailed Description of the Pull Request / Additional comments ## Validation Steps Performed --- doc/specs/WinGet Manifest Keyboard Shortcuts schema.md | 2 ++ .../ShortcutGuideXAML/Controls/KeyVisual.xaml.cs | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/doc/specs/WinGet Manifest Keyboard Shortcuts schema.md b/doc/specs/WinGet Manifest Keyboard Shortcuts schema.md index 011b307ae6..03d38a676f 100644 --- a/doc/specs/WinGet Manifest Keyboard Shortcuts schema.md +++ b/doc/specs/WinGet Manifest Keyboard Shortcuts schema.md @@ -235,6 +235,8 @@ By convention these tokens are written as double-quoted strings in the YAML (for |``| Corresponds to either the left, right, up or down arrow key | |``| Corresponds to either the left or right arrow key | |``| Corresponds to either the up or down arrow key | +|``| Corresponds to the `<` key | +|``| Corresponds to the `>` key | |``| Corresponds to any letter that is _underlined_ in the UI | diff --git a/src/modules/ShortcutGuide/ShortcutGuide.Ui/ShortcutGuideXAML/Controls/KeyVisual.xaml.cs b/src/modules/ShortcutGuide/ShortcutGuide.Ui/ShortcutGuideXAML/Controls/KeyVisual.xaml.cs index 2e6f378a80..fd5610dd1b 100644 --- a/src/modules/ShortcutGuide/ShortcutGuide.Ui/ShortcutGuideXAML/Controls/KeyVisual.xaml.cs +++ b/src/modules/ShortcutGuide/ShortcutGuide.Ui/ShortcutGuideXAML/Controls/KeyVisual.xaml.cs @@ -107,6 +107,8 @@ namespace ShortcutGuide.Controls "" => "\uE0E2\uE0E3\uE0E4\uE0E5", "" => "\uE751", "" => "\uE750", + "" => "<", + "" => ">", "" => "Esc", string s when s.StartsWith('<') => s.Trim('<', '>'), _ => key, @@ -175,7 +177,7 @@ namespace ShortcutGuide.Controls private void SetGlyphOrText(string glyphOrText) { - this.RenderKeyAsGlyph = ((glyphOrText[0] >> 12) & 0xF) is 0xE or 0xF; + this.RenderKeyAsGlyph = glyphOrText.Length > 0 && ((glyphOrText[0] >> 12) & 0xF) is 0xE or 0xF; this._keyPresenter.Content = glyphOrText; this._keyPresenter.Style = this.RenderKeyAsGlyph