Compare commits

...

198 Commits

Author SHA1 Message Date
Noraa Junker
dad8d00cda faster 2 2026-05-21 22:19:18 +02:00
Noraa Junker
1b71d64ef8 h 2026-05-21 19:28:38 +02:00
Noraa Junker
111d5b387e Try to make things faster 2026-05-21 19:25:12 +02:00
Noraa Junker
47d348f4ec Remove ZoomIt again, as it still does not work 2026-05-21 18:52:25 +02:00
Noraa Junker
4a71f79901 Fix missing PowerToys modules 2026-05-21 18:45:20 +02:00
Noraa Junker
79f69b87f2 Terminate more cleanly 2026-05-21 18:11:20 +02:00
Noraa Junker
6a0ff6a131 Fix wrong Shortcut Guide Shortcut 2026-05-21 17:47:42 +02:00
Noraa Junker
9123365993 Fix OOBE string 2026-05-21 17:36:14 +02:00
Niels Laute
82e4705ed6 Merge branch 'main' into feature/shortcutguidev2 2026-05-20 12:20:34 +02:00
Muyuan Li (from Dev Box)
cffddcdcb7 Revert personal website link change - not an issue per maintainer
Reverts the noraajunker.ch -> PR link change. As confirmed by @niels9001,
personal contributor links are standard in PowerToys settings pages.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-20 15:24:06 +08:00
Muyuan Li (from Dev Box)
e7b6e36987 Resolve all PR #40834 review comments locally
Applied fixes:
- DpiHelper: int→nint for window handles (pointer truncation)
- DisplayHelper: static fields→lambda closure + bounds check
- NativeMethods: FindWindowA→FindWindowW (Unicode)
- MainWindow: MenuItems[0] guard, remove .ToInt32()
- TaskbarWindow: remove .ToInt32()
- Program.cs: logger init order, args handling, Environment.Exit(0)
- ShortcutDescription/ShortcutEntry: proper GetHashCode
- ShortcutDescriptionToKeysConverter: remove unused using
- excluded_app.cpp: m_excludedApps.clear() before parsing
- tasklist_positions: COM pointers from header to static in .cpp
- IndexYmlGenerator: O(n²) array rebuild→LINQ
- ShortcutGuidePage.xaml: personal link→GitHub PR link

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-20 15:05:06 +08:00
Niels Laute
c07a3d9bd9 Merge remote-tracking branch 'origin/main' into pr/40834 2026-05-19 12:02:29 +02:00
Niels Laute
dcfcd0a699 Fix CS0105: remove duplicate using ManagedCommon directive
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-19 12:02:21 +02:00
Niels Laute
7da07303b3 Update src/modules/ShortcutGuide/ShortcutGuide.Ui/Converters/ShortcutDescriptionToKeysConverter.cs
Co-authored-by: Muyuan Li <116717757+MuyuanMS@users.noreply.github.com>
2026-05-19 10:42:36 +02:00
Niels Laute
97d3b99bc5 Fix spellcheck: add ShortcutGuide V2 word variants, fix forbidden comma pattern
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-18 14:15:28 +02:00
Niels Laute
e0409b0271 Merge branch 'main' into feature/shortcutguidev2 2026-05-18 14:11:36 +02:00
Niels Laute
b58803642d Restore CmdPal files lost via rename-detection in earlier restore
These 7 files exist on main but were dropped by the bad merge. Git's
rename detection paired them with newly-resurrected files at different
paths, so the earlier --diff-filter=DM restore pass missed them.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-17 19:40:37 +02:00
Niels Laute
87c91c5a2a Remove files resurrected by bad merge conflict resolution
These files were intentionally deleted on main by recent PRs but were
resurrected when 7aae7343aa merged main with a bad conflict resolution:
- HideWindowMessage.cs (deleted by #47826 CmdPal parameters)
- BookmarkPlaceholderForm.cs (deleted by #47886 bookmarks-as-parameters)
- NativeMethods.json/.txt + WindowsPackageManager.Interop/* (deleted by
  #46636 Extension Gallery)
- Ext.Indexer/Assets/Actions.png (moved/deleted by #46636)
- DdcCiValidationResult.cs (deleted by #47875 PowerDisplay max-compat)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-17 19:39:34 +02:00
Niels Laute
7716010a38 Restore files dropped by merge conflict resolution
Restores 114 deleted files and re-applies 129 file modifications that
were lost when a divergent merge of main into feature/shortcutguidev2
resolved conflicts by dropping recent CmdPal/Settings work from main
(ExtensionGallery, ListItemsView, ParametersViewModels, HttpCaching,
DangerousFeatureWarningDialog, etc.).

Source: tree of bf8493225d (the good merge sibling of 7aae7343aa).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-17 19:34:10 +02:00
Niels Laute
e77e7dfe68 Merge branch 'feature/shortcutguidev2' of https://github.com/microsoft/PowerToys into feature/shortcutguidev2 2026-05-17 19:27:25 +02:00
Niels Laute
7aae7343aa Merge branch 'main' into feature/shortcutguidev2 2026-05-17 19:27:21 +02:00
Niels Laute
bf8493225d Merge branch 'main' into feature/shortcutguidev2 2026-05-17 18:25:56 +01:00
Niels Laute
12eddcb320 More improvements 2026-05-16 19:31:23 +02:00
Niels Laute
9473657670 Update expect.txt 2026-05-13 22:10:23 +02:00
Niels Laute
9948a2831f Having a single list of shortcuts 2026-05-13 16:43:14 +02:00
Niels Laute
e746675ebf Move manifests to subfolder 2026-05-13 15:42:12 +02:00
Niels Laute
c3ec5b529b Logging 2026-05-13 14:50:05 +02:00
Niels Laute
6a8e439847 More minor refactoring 2026-05-13 14:47:34 +02:00
Niels Laute
36c30ae2fd Minor refactoring 2026-05-13 14:33:08 +02:00
Niels Laute
d09408ce43 Update Resources.resw 2026-05-13 13:32:08 +02:00
Niels Laute
ab79ae7477 Merge branch 'main' into feature/shortcutguidev2 2026-05-13 13:30:07 +02:00
Niels Laute
b6eb027558 Adding more shortcut files 2026-05-13 13:22:23 +02:00
Copilot
999ba28e34 Normalize spell-check expect list with case-sensitive dedupe and stable sort (#47112)
## Summary of the Pull Request

This updates the spell-check allowlist at
`.github/actions/spell-check/expect.txt` to remove duplicate entries and
enforce a single alphabetical ordering. Matching remains case-sensitive
(e.g., `AAA` and `aaa` are treated as distinct entries).

## PR Checklist

- [ ] **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
- [ ] **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

- **Scope**
  - Updated only `.github/actions/spell-check/expect.txt`.

- **Changes**
  - Removed exact duplicate words.
  - Reordered file into strict alphabetical order.
  - Preserved case-sensitive distinctions.

- **Example**
  ```bash
LC_ALL=C sort -u .github/actions/spell-check/expect.txt -o
.github/actions/spell-check/expect.txt
  ```

## Validation Steps Performed

N/A (no behavioral/code-path changes; list normalization only).

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: noraa-junker <58633848+noraa-junker@users.noreply.github.com>
2026-04-20 14:35:52 +02:00
Noraa Junker
03ff49601d Update expect.txt 2026-04-20 14:14:18 +02:00
Noraa Junker
406b42db64 Update expect.txt 2026-04-20 14:03:48 +02:00
Noraa Junker
8d4a24cd3f Merge branch 'main' into feature/shortcutguidev2 2026-04-20 13:57:22 +02:00
copilot-swe-agent[bot]
0a20b7efb5 Add spelling exceptions for ShortcutGuide-related words to expect.txt
Agent-Logs-Url: https://github.com/microsoft/PowerToys/sessions/9b871785-a2b4-4e2b-8fc0-d19b49fb0792

Co-authored-by: noraa-junker <58633848+noraa-junker@users.noreply.github.com>
2026-04-20 11:53:26 +00:00
Noraa Junker
bf18e7815b Correct postion logic 2026-04-20 13:49:10 +02:00
copilot-swe-agent[bot]
43b37bc733 Add window position dropdown (Left/Right) to Shortcut Guide settings
Agent-Logs-Url: https://github.com/microsoft/PowerToys/sessions/3883a5cc-f63f-4d66-8d5f-a73a94b9d86a

Co-authored-by: noraa-junker <58633848+noraa-junker@users.noreply.github.com>
2026-04-20 11:38:30 +00:00
Niels Laute
c011b2223c More shortcuts MORE! 2026-04-17 17:51:18 +02:00
Niels Laute
019ee046da Update Resources.resw 2026-04-17 17:45:48 +02:00
Niels Laute
e8579c39d0 Showing app icons 2026-04-17 17:14:29 +02:00
Niels Laute
911b39256c Fix crashing on launch 2026-04-17 16:24:46 +02:00
Noraa Junker
250a8cb5b7 Merge main 2026-04-01 12:53:28 +02:00
Noraa Junker
9f9d221eab Adjust docs 2026-02-02 01:40:19 +01:00
Noraa Junker
b9c5c15be2 Fix taskbar indicator to work with the latest canary builds 2026-02-02 01:35:08 +01:00
Noraa Junker
3a4f9c2274 Move cpp project files to powertoys.interop 2026-02-02 00:14:14 +01:00
Noraa Junker
a51fe19f82 merge main and adapt to new modules (aswell fix no taskbar bug) 2026-02-01 22:46:35 +01:00
Noraa Junker
efc814a610 merge main 2026-02-01 12:10:14 +01:00
Noraa Junker
1d1ae0d191 Merge main 2025-10-31 11:32:22 +01:00
Noraa Junker
3df4b45849 Merge remote-tracking branch 'origin/main' into feature/shortcutguidev2 2025-10-29 20:21:45 +01:00
Noraa Junker
88357a5a99 Fixed spawning on wrong display and taskbar window not working under certain circumstances on secondary displays 2025-10-29 20:21:20 +01:00
Noraa Junker
b4773affa7 Fix installer 2025-10-28 21:47:11 +01:00
Noraa Junker
e82c2d20cb Fix spelling again 2025-10-28 14:59:33 +01:00
Noraa Junker
e3a1f97ef3 Fix spelling 2025-10-28 14:51:48 +01:00
Noraa Junker
b26ded5370 Fix spelling 2025-10-28 14:51:36 +01:00
Noraa Junker
2e8ad4827b Fix some spelling issues 2025-10-28 14:43:54 +01:00
Noraa Junker
877626ef45 Added manifest file in 2025-10-28 14:30:41 +01:00
Noraa Junker
e0f72df36c Update ShortcutGuide image 2025-10-28 10:18:40 +01:00
Noraa Junker
552b02d596 Fix spawning window on the right monitor 2025-10-28 00:25:08 +01:00
Noraa Junker
c184acbada Fix xaml styling 2025-10-27 23:42:45 +01:00
Noraa Junker
55038c3c5e Fix missing localization on settings button 2025-10-27 23:42:26 +01:00
Noraa Junker
f537c43139 Added right key visuals and fixed some UI bugs 2025-10-27 23:36:17 +01:00
Noraa Junker
f867323677 Update OOBE string, supress window resizing and fix auto closing when taskbar window opened 2025-10-25 21:01:39 +02:00
Noraa Junker
d58145eb8c add zoomit shortcuts comment 2025-10-25 12:07:15 +02:00
Noraa Junker
486bec0ebd Fix empty windows key 2025-10-18 23:26:53 +02:00
Noraa Junker
e76506dffd Localization 2025-10-18 23:26:16 +02:00
Noraa Junker
841a5c5555 Fixed (un)pinning shortcuts 2025-10-18 23:04:47 +02:00
Noraa Junker
f646e0328e Fix wrong number for Taskbar item 10 2025-10-18 22:06:58 +02:00
Noraa Junker
5054a776dd Fix solution merge error 2025-10-18 22:06:46 +02:00
Noraa Junker
9d480c8e2c Merge conflicts 2025-10-18 21:51:43 +02:00
Niels Laute
d652285a81 [UX] Vertical shortcutguide (#41161)
- Exploring a vertical version for Shortcut Guide 2, to make better use
of the screen real estate
- Cleanup code and improved maintainability

<img width="1391" height="1439" alt="image"
src="https://github.com/user-attachments/assets/7ee3c925-71f1-46ee-83f6-4bc43b69db4c"
/>

<img width="715" height="1065" alt="image"
src="https://github.com/user-attachments/assets/e59684b2-2063-453e-93c7-df770eaa6999"
/>


To do:
- Shortcut visualizations are broken (well.. sometimes!)
- A lot of UX nits

---------

Co-authored-by: Aaron Junker <Aaron.Junker@outlook.com>
2025-10-17 14:39:35 +02:00
Aaron Junker
200afb5c4b merge main 2025-08-20 21:15:49 +02:00
Gordon Lam (SH)
e7582ebd6a Add back empty line which is missing during rebase main 2025-08-19 08:24:08 +08:00
Gordon Lam (SH)
b9c1181d9f Add back missing project because of rebase from main: 2025-08-19 08:16:20 +08:00
Aaron Junker
4aff3418e4 Change display name of File Explorer, hide taskbar indicators on other pages then Windows -> Overview and fix height of Windows -> Overview 2025-08-19 08:09:35 +08:00
Aaron Junker
e53e1b4376 fix xaml styling 2025-08-19 08:09:35 +08:00
Aaron Junker
73f718c233 git messed up 2025-08-19 08:09:34 +08:00
Aaron Junker
0917a64e7d close infotip when link is clicked and remove unneccesairy grid 2025-08-19 08:09:34 +08:00
Aaron Junker
a764bf3e0c Change oobe design 2025-08-19 08:09:34 +08:00
Aaron Junker
4853bd0345 Change some StaticResources to ThemeResources and change style of taskbar indicators 2025-08-19 08:09:34 +08:00
Aaron Junker
dceb1d7730 Fix styling 2025-08-19 08:09:34 +08:00
Aaron Junker
72be09554e Factor out TaskbarIndicator 2025-08-19 08:09:34 +08:00
Aaron Junker
19f95066c3 Fix xaml styling 2025-08-19 08:09:34 +08:00
Aaron Junker
bb16ae1709 Adress some PR comments and fix some bugs 2025-08-19 08:09:34 +08:00
Aaron Junker
dc0877ebe5 Make some adjustants to how the windows key is displayed 2025-08-19 08:09:34 +08:00
Aaron Junker
cd844e3889 Forgot notice.md and CPPProject has some trouble buildinng release x64 2025-08-19 08:09:34 +08:00
Aaron Junker
ac789a7fbe Remove failing test 2025-08-19 08:09:34 +08:00
Aaron Junker
3b7df37ac2 That is a kinda embarrasing error 2025-08-19 08:09:34 +08:00
Aaron Junker
387b7e9795 So something was not right. Hopefully this fixes it. 2025-08-19 08:09:34 +08:00
Aaron Junker
b553addcdd Fix arm64 configuration 2025-08-19 08:09:28 +08:00
Aaron Junker
5c11c751fe Fix xaml styling 2025-08-19 08:05:58 +08:00
Aaron Junker
6d7d5f9cde Fix building in release mode and some other stuff 2025-08-19 08:05:58 +08:00
Aaron Junker
4cb9c53809 Add documentation and only export in tasklist_positions what needs to be exported 2025-08-19 08:05:58 +08:00
Aaron Junker
84d4cbb16d Refactoring, commenting and fixing some little lefrover bugs 2025-08-19 08:05:49 +08:00
Aaron Junker
97cba618da Add explorer shortcuts, fix animation stopping and add an error when index.yml generation fails 2025-08-19 08:05:26 +08:00
Aaron Junker
145247c4fb Add attribution in settings 2025-08-19 08:04:42 +08:00
Aaron Junker
84ab12027b Add welcome screen and update settings and OOBE 2025-08-19 08:04:42 +08:00
Aaron Junker
3458d01d4c Respect excluded apps 2025-08-19 08:04:41 +08:00
Aaron Junker
2e6f80f944 Respect theme selection 2025-08-19 08:04:41 +08:00
Aaron Junker
f8cc513f9c Localization 2025-08-19 08:04:41 +08:00
Aaron Junker
b1d5233622 Fix spelling 2025-08-19 08:04:41 +08:00
Aaron Junker
68b7b4183f Make UI better 2025-08-19 08:04:41 +08:00
Aaron Junker
68a10d0488 Add disclaimers 2025-08-19 08:04:41 +08:00
Aaron Junker
e70ca56e9d Add taskbar launch shortcuts and make powertoys shortcuts empty by default 2025-08-19 08:04:34 +08:00
Aaron Junker
16c4a56ca1 Make settings button work and add settings placeholder 2025-08-19 08:02:30 +08:00
Aaron Junker
0d5c85a00d Add taskbar launch shortcuts and make powertoys shortcuts empty by default 2025-08-19 08:02:29 +08:00
Aaron Junker
509ad636fe Fix spelling 2025-08-19 08:02:29 +08:00
Aaron Junker
26f76105d4 Delete weird file 2025-08-19 08:02:29 +08:00
Aaron Junker
639b29eb8c Fix pinning and unpinning shortcuts 2025-08-19 08:02:29 +08:00
Aaron Junker
bff3874b5f Only display powertoys shortcuts if the modules are enabled 2025-08-19 08:02:29 +08:00
Aaron Junker
eff58e1df5 Fix closing by shortcut add closing by ESC and fix missing files from CPPProject 2025-08-19 08:02:29 +08:00
Aaron Junker
411f4df2c0 Remove legacy shortcut behaviour 2025-08-19 08:02:29 +08:00
Aaron Junker
7dc8c1000b Remove old Shortcut Guide 2025-08-19 08:02:23 +08:00
Aaron Junker
48d8e33375 Refactoring 2025-08-19 08:00:02 +08:00
Aaron Junker
afc27e873f Remove some hosts references and fix close button 2025-08-19 08:00:02 +08:00
Aaron Junker
3302e61d72 Refactoring and localisation 2025-08-19 08:00:02 +08:00
Aaron Junker
e6edca93e7 Add taskbar indicators 2025-08-19 07:59:56 +08:00
Aaron Junker
7acab452d5 Handle errors displaying app and close window automatically on focus change 2025-08-19 07:59:29 +08:00
Aaron Junker
0a07811233 Add keyboard accelerator to the search box 2025-08-19 07:59:29 +08:00
Aaron Junker
9ecf82d2ea Add copying keyboard manifests and other improvements 2025-08-19 07:59:19 +08:00
Aaron Junker
44d12c6e63 Add support for multiple shortcuts 2025-08-19 07:58:42 +08:00
Aaron Junker
6b8a3e65f7 push 2025-08-19 07:58:42 +08:00
Aaron Junker
2b16068a7d Rename YmlInterpreter to ManifestInterpreter 2025-08-19 07:58:42 +08:00
Aaron Junker
440e75184a Fix error messages and read application titles out of index manifest 2025-08-19 07:58:42 +08:00
Aaron Junker
acf510dff5 Fix display on monitor with mouse and move all NaticeMethods to NativeMethods.cs 2025-08-19 07:58:42 +08:00
Aaron Junker
ddd090cc81 Code cleanup 2025-08-19 07:58:42 +08:00
Aaron Junker
2f4766df19 Push 2025-08-19 07:58:42 +08:00
Aaron Junker
6558260c53 Push 2025-08-19 07:58:42 +08:00
Aaron Junker
55b3e15f10 Changed style a little bit 2025-08-19 07:58:42 +08:00
Aaron Junker
69c6475e15 [WIP] Shortcut Guide V2 2025-08-19 07:58:21 +08:00
Aaron Junker
8e7be164a9 Change display name of File Explorer, hide taskbar indicators on other pages then Windows -> Overview and fix height of Windows -> Overview 2025-08-07 11:57:04 +02:00
Aaron Junker
f42b3922c7 fix xaml styling 2025-08-05 10:33:42 +02:00
Aaron Junker
d568d16560 git messed up 2025-08-05 00:06:07 +02:00
Aaron Junker
0abae1d190 close infotip when link is clicked and remove unneccesairy grid 2025-08-04 23:51:18 +02:00
Aaron Junker
271e0c0533 Change oobe design 2025-08-04 23:34:23 +02:00
Aaron Junker
6bd5c4c811 Change some StaticResources to ThemeResources and change style of taskbar indicators 2025-08-03 22:37:40 +02:00
Aaron Junker
a41be807a4 Fix styling 2025-08-03 16:31:57 +02:00
Aaron Junker
e11626550e Factor out TaskbarIndicator 2025-08-03 16:30:59 +02:00
Aaron Junker
7266745124 Fix xaml styling 2025-08-01 17:53:23 +02:00
Aaron Junker
77a5bc2ff5 Adress some PR comments and fix some bugs 2025-08-01 17:51:32 +02:00
Aaron Junker
0b6683eb34 Make some adjustants to how the windows key is displayed 2025-08-01 17:06:54 +02:00
Aaron Junker
3796fdb706 Forgot notice.md and CPPProject has some trouble buildinng release x64 2025-07-30 18:17:26 +02:00
Aaron Junker
2d12932e44 Remove failing test 2025-07-30 17:31:31 +02:00
Aaron Junker
1da76e55bb Merge branch 'feature/shortcutguidev2' of https://github.com/microsoft/PowerToys into feature/shortcutguidev2 2025-07-30 17:21:46 +02:00
Aaron Junker
3c1a6a5b16 That is a kinda embarrasing error 2025-07-30 17:21:37 +02:00
Noraa Junker-Wildi
3b77feb879 Merge branch 'main' into feature/shortcutguidev2 2025-07-30 16:58:28 +02:00
Aaron Junker
7e7bb04d48 So something was not right. Hopefully this fixes it. 2025-07-30 16:50:20 +02:00
Aaron Junker
273b50cb16 Fix arm64 configuration 2025-07-29 18:51:21 +02:00
Aaron Junker
498c8d534f Fix xaml styling 2025-07-29 18:01:23 +02:00
Aaron Junker
0e2f466454 Fix building in release mode and some other stuff 2025-07-29 17:48:28 +02:00
Aaron Junker
1982f2615d Add documentation and only export in tasklist_positions what needs to be exported 2025-07-29 15:37:48 +02:00
Aaron Junker
2f89281178 Refactoring, commenting and fixing some little lefrover bugs 2025-07-28 16:12:36 +02:00
Aaron Junker
56f056e492 Add explorer shortcuts, fix animation stopping and add an error when index.yml generation fails 2025-07-28 14:08:42 +02:00
Aaron Junker
71dd8fe83f Add attribution in settings 2025-07-28 02:07:14 +02:00
Aaron Junker
f9183af53d Add welcome screen and update settings and OOBE 2025-07-28 02:02:55 +02:00
Aaron Junker
0f85f8bad6 Respect excluded apps 2025-07-27 23:48:49 +02:00
Aaron Junker
e0e7bf4df2 Respect theme selection 2025-07-27 22:45:14 +02:00
Aaron Junker
b12fcf6699 Localization 2025-07-27 22:06:15 +02:00
Aaron Junker
2ee02c4bbe Fix spelling 2025-07-27 21:12:12 +02:00
Aaron Junker
a306797d21 Make UI better 2025-07-27 21:11:16 +02:00
Aaron Junker
7e50caa04e Add disclaimers 2025-07-27 20:43:27 +02:00
Aaron Junker
e3b1ec356e commit 2025-07-27 20:30:03 +02:00
Aaron Junker
fa54b49fca Make settings button work and add settings placeholder 2025-07-27 20:29:36 +02:00
Aaron Junker
7e2fc4481d Add taskbar launch shortcuts and make powertoys shortcuts empty by default 2025-07-27 20:15:01 +02:00
Aaron Junker
201a27d2bb Add taskbar launch shortcuts and make powertoys shortcuts empty by default 2025-07-27 20:09:54 +02:00
Aaron Junker
fe3d481407 Fix spelling 2025-07-27 19:48:55 +02:00
Aaron Junker
3475c92f32 Delete weird file 2025-07-27 19:42:18 +02:00
Aaron Junker
82b0ca71fd Fix pinning and unpinning shortcuts 2025-07-27 19:39:43 +02:00
Aaron Junker
3a8431ae9d Only display powertoys shortcuts if the modules are enabled 2025-07-27 18:48:32 +02:00
Aaron Junker
eed6dc6f8d Merge branch 'feature/shortcutguidev2' of https://github.com/microsoft/PowerToys into feature/shortcutguidev2 2025-07-27 18:17:41 +02:00
Aaron Junker
038cd23423 Merge branch 'feature/shortcutguidev2' of https://github.com/microsoft/PowerToys into feature/shortcutguidev2 2025-07-27 18:17:39 +02:00
Aaron Junker
be799ddd82 Merge branch 'feature/shortcutguidev2' of https://github.com/microsoft/PowerToys into feature/shortcutguidev2 2025-07-27 18:00:52 +02:00
Aaron Junker
e26bf2acd6 Merge branch 'feature/shortcutguidev2' of https://github.com/microsoft/PowerToys into feature/shortcutguidev2 2025-07-27 18:00:49 +02:00
Aaron Junker
95e0a20444 Merge branch 'feature/shortcutguidev2' of https://github.com/microsoft/PowerToys into feature/shortcutguidev2 2025-07-27 17:47:27 +02:00
Aaron Junker
3e75fb0c52 Merge main in 2025-07-27 17:46:58 +02:00
Aaron Junker
ba4098960c Merge main in 2025-07-27 17:46:48 +02:00
Aaron Junker
1580279be1 Fix closing by shortcut add closing by ESC and fix missing files from CPPProject 2025-07-27 17:42:41 +02:00
Aaron Junker
07760e4730 Remove legacy shortcut behaviour 2025-07-27 16:59:25 +02:00
Aaron Junker
d73ab4f2d3 Remove old Shortcut Guide 2025-07-27 16:40:44 +02:00
Aaron Junker
a6b761433e Refactoring 2025-06-18 21:05:34 +02:00
Aaron Junker
da77396da5 Remove some hosts references and fix close button 2025-06-15 23:20:26 +02:00
Aaron Junker
46df48684d Refactoring and localisation 2025-06-15 22:13:41 +02:00
Aaron Junker
7596e965ef Add taskbar indicators 2025-06-13 23:37:54 +02:00
Aaron Junker
0b823ea8bd Handle errors displaying app and close window automatically on focus change 2025-06-11 15:41:39 +02:00
Aaron Junker
54d176c4c4 Add keyboard accelerator to the search box 2025-06-11 15:33:57 +02:00
Aaron Junker
569f07268b Add copying keyboard manifests and other improvements 2025-06-11 15:26:34 +02:00
Aaron Junker
7ce5182695 Add support for multiple shortcuts 2025-06-07 02:21:34 +02:00
Aaron Junker
b16b4579fa push 2025-06-06 23:32:40 +02:00
Aaron Junker
a292a92f4d Merge main 2025-06-06 22:20:01 +02:00
Aaron Junker
6952deb4ae Rename YmlInterpreter to ManifestInterpreter 2024-11-10 15:06:36 +01:00
Aaron Junker
da7b789bfe Fix error messages and read application titles out of index manifest 2024-11-10 15:05:34 +01:00
Aaron Junker
a14c458f19 Fix display on monitor with mouse and move all NaticeMethods to NativeMethods.cs 2024-11-04 00:17:43 +01:00
Aaron Junker
22dc870991 Code cleanup 2024-11-04 00:11:16 +01:00
Aaron Junker
d5f5500347 Push 2024-11-03 22:06:38 +01:00
Aaron Junker
c81a423880 Push 2024-11-02 15:10:33 +01:00
Aaron Junker
7a6189ba3e Changed style a little bit 2024-10-14 20:37:55 +02:00
Aaron Junker
03587ae800 [WIP] Shortcut Guide V2 2024-10-14 19:02:22 +02:00
6 changed files with 129 additions and 77 deletions

View File

@@ -39,15 +39,20 @@ namespace ShortcutGuide.Helpers
public static ShortcutFile GetShortcutsOfApplication(string applicationName)
{
string path = PathOfManifestFiles;
IEnumerable<string> files = Directory.EnumerateFiles(path, applicationName + ".*.yml") ??
throw new FileNotFoundException($"The file for the application '{applicationName}' was not found in '{path}'.");
string localizedPath = Path.Combine(path, applicationName + $".{Language}.yml");
string fallbackPath = Path.Combine(path, applicationName + ".en-US.yml");
IEnumerable<string> filesEnumerable = files as string[] ?? [.. files];
return filesEnumerable.Any(f => f.EndsWith($".{Language}.yml", StringComparison.InvariantCulture))
? YamlToShortcutList(File.ReadAllText(Path.Combine(path, applicationName + $".{Language}.yml")))
: filesEnumerable.Any(f => f.EndsWith(".en-US.yml", StringComparison.InvariantCulture))
? YamlToShortcutList(File.ReadAllText(filesEnumerable.First(f => f.EndsWith(".en-US.yml", StringComparison.InvariantCulture))))
: throw new FileNotFoundException($"The file for the application '{applicationName}' was not found in '{path}' with the language '{Language}' or 'en-US'.");
if (File.Exists(localizedPath))
{
return YamlToShortcutList(File.ReadAllText(localizedPath));
}
if (File.Exists(fallbackPath))
{
return YamlToShortcutList(File.ReadAllText(fallbackPath));
}
throw new FileNotFoundException($"The file for the application '{applicationName}' was not found in '{path}' with the language '{Language}' or 'en-US'.");
}
/// <summary>
@@ -78,6 +83,36 @@ namespace ShortcutGuide.Helpers
return deserializer.Deserialize<IndexFile>(content);
}
private static readonly object IndexLock = new();
private static IndexFile? cachedIndexFile;
private static DateTime cachedIndexLastWriteTimeUtc;
/// <summary>
/// Retrieves the index YAML file that contains the list of all applications and their shortcuts from the cache.
/// </summary>
/// <returns>A deserialized <see cref="IndexFile"/> object.</returns>
private static IndexFile GetCachedIndexYamlFile()
{
string indexPath = Path.Combine(PathOfManifestFiles, "index.yml");
DateTime lastWriteTimeUtc = File.GetLastWriteTimeUtc(indexPath);
lock (IndexLock)
{
if (cachedIndexFile is not null && cachedIndexLastWriteTimeUtc == lastWriteTimeUtc)
{
return cachedIndexFile.Value;
}
string content = File.ReadAllText(indexPath);
Deserializer deserializer = new();
cachedIndexFile = deserializer.Deserialize<IndexFile>(content);
cachedIndexLastWriteTimeUtc = lastWriteTimeUtc;
return cachedIndexFile.Value;
}
}
/// <summary>
/// Retrieves all application IDs that should be displayed, based on the foreground window and background processes.
/// </summary>
@@ -93,8 +128,6 @@ namespace ShortcutGuide.Helpers
Dictionary<string, string?> applicationIds = new(StringComparer.Ordinal);
Process[] processes = Process.GetProcesses();
if (NativeMethods.GetWindowThreadProcessId(handle, out uint processId) > 0)
{
string? name = null;
@@ -119,7 +152,7 @@ namespace ShortcutGuide.Helpers
{
try
{
IndexFile.IndexItem match = GetIndexYamlFile().Index.First((s) => !s.BackgroundProcess && IsMatch(name, s.WindowFilter));
IndexFile.IndexItem match = GetCachedIndexYamlFile().Index.First((s) => !s.BackgroundProcess && IsMatch(name, s.WindowFilter));
string? pathForApp = match.WindowFilter == "*" ? null : executablePath;
foreach (var item in match.Apps)
{
@@ -132,48 +165,15 @@ namespace ShortcutGuide.Helpers
}
}
foreach (var item in GetIndexYamlFile().Index.Where((s) => s.BackgroundProcess))
foreach (var item in GetCachedIndexYamlFile().Index.Where((s) => s.BackgroundProcess))
{
try
var foundProcesses = Process.GetProcessesByName(item.WindowFilter);
if (foundProcesses.Length > 0)
{
string? matchedExecutablePath = null;
bool matched = false;
foreach (var p in processes)
foreach (var app in item.Apps)
{
try
{
if (IsMatch(p.MainModule!.ModuleName, item.WindowFilter))
{
matched = true;
if (item.WindowFilter != "*")
{
matchedExecutablePath = p.MainModule!.FileName;
}
break;
}
}
catch (Win32Exception)
{
// Access denied for elevated processes; skip.
}
applicationIds[app] = foundProcesses[0].MainModule?.FileName;
}
if (matched)
{
foreach (var app in item.Apps)
{
// Preserve an existing (foreground) path if one was already set;
// only fill in a path when the slot is currently null.
if (!applicationIds.TryGetValue(app, out string? existing) || existing is null)
{
applicationIds[app] = matchedExecutablePath;
}
}
}
}
catch (InvalidOperationException)
{
}
}
@@ -181,10 +181,17 @@ namespace ShortcutGuide.Helpers
static bool IsMatch(string input, string filter)
{
input = input.ToLower(CultureInfo.InvariantCulture);
filter = filter.ToLower(CultureInfo.InvariantCulture);
string regexPattern = "^" + Regex.Escape(filter).Replace("\\*", ".*") + "$";
return Regex.IsMatch(input, regexPattern);
if (filter == "*")
{
return true;
}
if (filter.ToLowerInvariant().EndsWith(".exe", StringComparison.InvariantCulture))
{
return input == filter[..^4];
}
return false;
}
}
}

View File

@@ -5,6 +5,7 @@
using System;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using Microsoft.PowerToys.Settings.UI.Library;
@@ -32,7 +33,9 @@ namespace ShortcutGuide.Helpers
content = new(PopulateRegex().Replace(content.ToString(), populateStartString + Environment.NewLine));
SettingsUtils settingsUtils = SettingsUtils.Default;
EnabledModules enabledModules = SettingsRepository<GeneralSettings>.GetInstance(settingsUtils).SettingsConfig.Enabled;
SettingsRepository<GeneralSettings> settingsRepository = SettingsRepository<GeneralSettings>.GetInstance(settingsUtils);
settingsRepository.ReloadSettings();
EnabledModules enabledModules = settingsRepository.SettingsConfig.Enabled;
if (enabledModules.AdvancedPaste)
{
AdvancedPasteProperties advancedPasteProperties = SettingsRepository<AdvancedPasteSettings>.GetInstance(settingsUtils).SettingsConfig.Properties;
@@ -57,11 +60,19 @@ namespace ShortcutGuide.Helpers
content.Append(HotkeySettingsToYaml(advancedPasteProperties.AdditionalActions.Transcode.TranscodeToMp3.Shortcut, SettingsResourceLoader.GetString("AdvancedPaste/ModuleTitle"), SettingsResourceLoader.GetString("TranscodeToMp3/Header")));
content.Append(HotkeySettingsToYaml(advancedPasteProperties.AdditionalActions.Transcode.TranscodeToMp4.Shortcut, SettingsResourceLoader.GetString("AdvancedPaste/ModuleTitle"), SettingsResourceLoader.GetString("TranscodeToMp4/Header")));
}
foreach (var action in advancedPasteProperties.CustomActions.Value.Where(a => a.IsShown))
{
content.Append(HotkeySettingsToYaml(action.Shortcut, SettingsResourceLoader.GetString("AdvancedPaste/ModuleTitle"), action.Name));
}
}
if (enabledModules.AlwaysOnTop)
{
content.Append(HotkeySettingsToYaml(SettingsRepository<AlwaysOnTopSettings>.GetInstance(settingsUtils).SettingsConfig.Properties.Hotkey, SettingsResourceLoader.GetString("AlwaysOnTop/ModuleTitle"), SettingsResourceLoader.GetString("AlwaysOnTop_ShortDescription")));
AlwaysOnTopProperties alwaysOnTopProperties = SettingsRepository<AlwaysOnTopSettings>.GetInstance(settingsUtils).SettingsConfig.Properties;
content.Append(HotkeySettingsToYaml(alwaysOnTopProperties.Hotkey, SettingsResourceLoader.GetString("AlwaysOnTop/ModuleTitle"), SettingsResourceLoader.GetString("AlwaysOnTop_ShortDescription")));
content.Append(HotkeySettingsToYaml(alwaysOnTopProperties.IncreaseOpacityHotkey, SettingsResourceLoader.GetString("AlwaysOnTop/ModuleTitle"), SettingsResourceLoader.GetString("AlwaysOnTop_IncreaseOpacityShortcut/Header")));
content.Append(HotkeySettingsToYaml(alwaysOnTopProperties.DecreaseOpacityHotkey, SettingsResourceLoader.GetString("AlwaysOnTop/ModuleTitle"), SettingsResourceLoader.GetString("AlwaysOnTop_DecreaseOpacityShortcut/Header")));
}
if (enabledModules.ColorPicker)
@@ -79,6 +90,7 @@ namespace ShortcutGuide.Helpers
CropAndLockProperties cropAndLockProperties = SettingsRepository<CropAndLockSettings>.GetInstance(settingsUtils).SettingsConfig.Properties;
content.Append(HotkeySettingsToYaml(cropAndLockProperties.ThumbnailHotkey, SettingsResourceLoader.GetString("CropAndLock/ModuleTitle"), SettingsResourceLoader.GetString("CropAndLock_Thumbnail")));
content.Append(HotkeySettingsToYaml(cropAndLockProperties.ReparentHotkey, SettingsResourceLoader.GetString("CropAndLock/ModuleTitle"), SettingsResourceLoader.GetString("CropAndLock_Reparent")));
content.Append(HotkeySettingsToYaml(cropAndLockProperties.ScreenshotHotkey, SettingsResourceLoader.GetString("CropAndLock/ModuleTitle"), SettingsResourceLoader.GetString("CropAndLock_Screenshot")));
}
if (enabledModules.CursorWrap)
@@ -116,6 +128,11 @@ namespace ShortcutGuide.Helpers
content.Append(HotkeySettingsToYaml(SettingsRepository<PeekSettings>.GetInstance(settingsUtils).SettingsConfig.Properties.ActivationShortcut, SettingsResourceLoader.GetString("Peek/ModuleTitle")));
}
if (enabledModules.PowerDisplay)
{
content.Append(HotkeySettingsToYaml(SettingsRepository<PowerDisplaySettings>.GetInstance(settingsUtils).SettingsConfig.Properties.ActivationShortcut, SettingsResourceLoader.GetString("PowerDisplay/ModuleTitle"), SettingsResourceLoader.GetString("Launch_PowerDisplay/Content")));
}
if (enabledModules.PowerLauncher)
{
content.Append(HotkeySettingsToYaml(SettingsRepository<PowerLauncherSettings>.GetInstance(settingsUtils).SettingsConfig.Properties.OpenPowerLauncher, SettingsResourceLoader.GetString("PowerLauncher/ModuleTitle")));
@@ -128,7 +145,7 @@ namespace ShortcutGuide.Helpers
if (enabledModules.ShortcutGuide)
{
content.Append(HotkeySettingsToYaml(SettingsRepository<ShortcutGuideSettings>.GetInstance(settingsUtils).SettingsConfig.Properties.DefaultOpenShortcutGuide, SettingsResourceLoader.GetString("ShortcutGuide/ModuleTitle"), SettingsResourceLoader.GetString("ShortcutGuide_ShortDescription")));
content.Append(HotkeySettingsToYaml(SettingsRepository<ShortcutGuideSettings>.GetInstance(settingsUtils).SettingsConfig.Properties.OpenShortcutGuide, SettingsResourceLoader.GetString("ShortcutGuide/ModuleTitle"), SettingsResourceLoader.GetString("ShortcutGuide_ShortDescription")));
}
if (enabledModules.PowerOcr)
@@ -145,6 +162,8 @@ namespace ShortcutGuide.Helpers
/*
if (enabledModules.ZoomIt)
{
settingsUtils.GetSettings<ZoomItSettings>("ZoomIt")
content.Append(HotkeySettingsToYaml(SettingsRepository<ZoomItSettings>.GetInstance(settingsUtils).SettingsConfig.Properties.ToggleKey, SettingsResourceLoader.GetString("ZoomIt/ModuleTitle"), SettingsResourceLoader.GetString("ZoomIt_ZoomGroup/Header")));
content.Append(HotkeySettingsToYaml(SettingsRepository<ZoomItSettings>.GetInstance(settingsUtils).SettingsConfig.Properties.LiveZoomToggleKey, SettingsResourceLoader.GetString("ZoomIt/ModuleTitle"), SettingsResourceLoader.GetString("ZoomIt_LiveZoomGroup/Header")));
content.Append(HotkeySettingsToYaml(SettingsRepository<ZoomItSettings>.GetInstance(settingsUtils).SettingsConfig.Properties.DrawToggleKey, SettingsResourceLoader.GetString("ZoomIt/ModuleTitle"), SettingsResourceLoader.GetString("ZoomIt_DrawGroup/Header")));
@@ -188,6 +207,11 @@ namespace ShortcutGuide.Helpers
/// <inheritdoc cref="HotkeySettingsToYaml(HotkeySettings, string, string?)"/>
private static string HotkeySettingsToYaml(KeyboardKeysProperty hotkeySettings, string moduleName, string? description = null)
{
if (hotkeySettings is null)
{
return HotkeySettingsToYaml(new HotkeySettings(), moduleName, description);
}
return HotkeySettingsToYaml(hotkeySettings.Value, moduleName, description);
}

View File

@@ -6,6 +6,7 @@ using System;
using System.Diagnostics;
using System.IO;
using System.Threading;
using System.Windows;
using ManagedCommon;
using Microsoft.PowerToys.Settings.UI.Library;
using Microsoft.PowerToys.Telemetry;
@@ -27,8 +28,8 @@ namespace ShortcutGuide
// The module interface passes: <powertoys_pid> [telemetry]
if (args.Length >= 2 && args[1] == "telemetry")
{
Logger.LogInfo("Telemetry mode requested. Sending settings telemetry.");
SendSettingsTelemetry();
// Telemetry-only invocation: send settings telemetry and exit silently.
Logger.LogInfo("Telemetry mode requested. Exiting.");
return;
}
@@ -71,7 +72,8 @@ namespace ShortcutGuide
indexGeneration.WaitForExit();
if (indexGeneration.ExitCode != 0)
{
Logger.LogError($"Index generation failed with exit code {indexGeneration.ExitCode}. There may be a corrupt shortcuts file in \"{ManifestInterpreter.PathOfManifestFiles}\".");
Logger.LogError("Index generation failed with exit code: " + indexGeneration.ExitCode);
MessageBox.Show($"Shortcut Guide encountered an error while generating the index file. There is likely a corrupt shortcuts file in \"{ManifestInterpreter.PathOfManifestFiles}\". Try deleting this directory.", "Error displaying shortcuts", MessageBoxButton.OK, MessageBoxImage.Error);
return;
}

View File

@@ -2,6 +2,7 @@
// The Microsoft Corporation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System;
using System.Collections.Generic;
using System.IO;
using System.Text.Json;
@@ -45,6 +46,7 @@ namespace ShortcutGuide
MainWindow.SessionDurationMs,
MainWindow.CloseType));
Current.Exit();
Application.Current.Exit();
};
}

View File

@@ -7,6 +7,7 @@ using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Common.UI;
using ManagedCommon;
using Microsoft.PowerToys.Settings.UI.Library;
@@ -32,8 +33,7 @@ namespace ShortcutGuide
{
public sealed partial class MainWindow : WindowEx
{
private readonly Dictionary<string, string?> _currentApplicationIds;
private readonly Stopwatch _sessionStopwatch = Stopwatch.StartNew();
private Dictionary<string, string?> _currentApplicationIds = [];
private ShortcutFile? _shortcutFile;
private string _selectedAppName = null!;
private string _closeType = "Unknown";
@@ -46,9 +46,17 @@ namespace ShortcutGuide
public MainWindow()
{
this._currentApplicationIds = ManifestInterpreter.GetAllCurrentApplicationIds();
this.InitializeComponent();
Activated += Window_Activated;
Task.Run(async () =>
{
_currentApplicationIds = ManifestInterpreter.GetAllCurrentApplicationIds();
DispatcherQueue.TryEnqueue(() =>
{
this.SetNavItems();
});
});
Title = ResourceLoaderInstance.ResourceLoader.GetString("Title")!;
ExtendsContentIntoTitleBar = true;

View File

@@ -562,7 +562,7 @@ opera.exe</value>
<value>Remap a key</value>
<comment>Keyboard Manager remap keyboard button content</comment>
</data>
<data name="KeyboardManager_Editor.Header" xml:space="preserve">
<data name="KeyboardManager_Editor.Header" xml:space="preserve">
<value>Editor</value>
<comment>Keyboard Manager new editor header</comment>
</data>
@@ -1174,6 +1174,12 @@ opera.exe</value>
<data name="ShortcutGuide_WindowPosition_Right.Content" xml:space="preserve">
<value>Right</value>
</data>
<data name="ShortcutGuide_WindowPosition_Left.Content" xml:space="preserve">
<value>Left</value>
</data>
<data name="ShortcutGuide_WindowPosition_Right.Content" xml:space="preserve">
<value>Right</value>
</data>
<data name="ShortcutGuide_DisabledApps.Header" xml:space="preserve">
<value>Exclude apps</value>
</data>
@@ -1772,7 +1778,7 @@ Made with 💗 by Microsoft and the PowerToys community.</value>
<data name="Help_floatWithout" xml:space="preserve">
<value>float without leading zero</value>
</data>
<data name="ColorFormatEditorHelpline3.Text" xml:space="preserve">
<data name="ColorFormatEditorHelpline3.Text" xml:space="preserve">
<value>The lightness (CIE), chromaticity A (CIE Lab) and chromaticity B (CIE Lab) values can be formatted to the following formats:</value>
</data>
<data name="Help_integer" xml:space="preserve">
@@ -1927,19 +1933,19 @@ Made with 💗 by Microsoft and the PowerToys community.</value>
<data name="Activation_Shortcut.Description" xml:space="preserve">
<value>Customize the shortcut to activate this module</value>
</data>
<data name="KeyboardManager_Editor_Shortcut.Header" xml:space="preserve">
<data name="KeyboardManager_Editor_Shortcut.Header" xml:space="preserve">
<value>Editor shortcut</value>
</data>
<data name="KeyboardManager_Editor_Open_Shortcut.Header" xml:space="preserve">
<data name="KeyboardManager_Editor_Open_Shortcut.Header" xml:space="preserve">
<value>Open editor shortcut</value>
</data>
<data name="KeyboardManager_Editor_Open_Shortcut.Description" xml:space="preserve">
<data name="KeyboardManager_Editor_Open_Shortcut.Description" xml:space="preserve">
<value>Customize the shortcut to open the Keyboard Manager editor</value>
</data>
<data name="KeyboardManager_LaunchEditor_Button.Content" xml:space="preserve">
<data name="KeyboardManager_LaunchEditor_Button.Content" xml:space="preserve">
<value>Open editor</value>
</data>
<data name="PasteAsPlainText_Shortcut.Header" xml:space="preserve">
</data>
<data name="PasteAsPlainText_Shortcut.Header" xml:space="preserve">
<value>Paste as plain text directly</value>
</data>
<data name="AdvancedPasteUI_Actions.Header" xml:space="preserve">
@@ -2056,6 +2062,9 @@ The Microsoft Windows Operating System
Windows Explorer
Notepad
Microsoft PowerToys
Paint
Microsoft Office Apps
And more...!
The shortcuts always correspond to the most current application/Windows version.</value>
</data>
@@ -2580,7 +2589,7 @@ From there, simply click on one of the supported files in the File Explorer and
<data name="MouseUtils_CursorWrap_ActivationMode_HoldingShift.Content" xml:space="preserve">
<value>Holding Shift</value>
<comment>CursorWrap: Activation mode - wrap only when Shift held</comment>
</data>
</data>
<data name="Oobe_MouseUtils_MousePointerCrosshairs.Text" xml:space="preserve">
<value>Mouse Pointer Crosshairs</value>
<comment>Mouse as in the hardware peripheral.</comment>
@@ -5045,7 +5054,7 @@ The break timer font matches the text font.</value>
<data name="LearnMore_CmdPal.Text" xml:space="preserve">
<value>Learn more about Command Palette</value>
</data>
<data name="LearnMore_CmdPalContent.Content" xml:space="preserve">
<data name="LearnMore_CmdPalContent.Content" xml:space="preserve">
<value>Learn more</value>
</data>
<data name="Shell_CmdPal.Content" xml:space="preserve">
@@ -5136,7 +5145,7 @@ The break timer font matches the text font.</value>
<data name="UpdateAvailableInfoBar.Title" xml:space="preserve">
<value>Update available</value>
</data>
<data name="GeneralVersion.Text" xml:space="preserve">
<data name="GeneralVersion.Text" xml:space="preserve">
<value>Version</value>
</data>
<data name="LearnWhatsNew.Text" xml:space="preserve">
@@ -5482,7 +5491,7 @@ The break timer font matches the text font.</value>
<value>Open Power Display</value>
<comment>{Locked="Power Display"}</comment>
</data>
<data name="PowerDisplay_LaunchButton.Content" xml:space="preserve">
<data name="PowerDisplay_LaunchButton.Content" xml:space="preserve">
<value>Open Power Display</value>
<comment>{Locked="Power Display"}</comment>
</data>
@@ -5772,7 +5781,7 @@ The break timer font matches the text font.</value>
<data name="PowerDisplay_CustomVcpMappings.Header" xml:space="preserve">
<value>Custom name mappings</value>
</data>
<data name="PowerDisplayGroupHeader.Header" xml:space="preserve">
<data name="PowerDisplayGroupHeader.Header" xml:space="preserve">
<value>Power Display</value>
<comment>{Locked="Power Display"}</comment>
</data>
@@ -6172,4 +6181,4 @@ Text uses the current drawing color.</value>
<value>Example: outlook</value>
<comment>{Locked="outlook"}</comment>
</data>
</root>
</root>