doc/devdocs/modules/quickaccent.md
Public overview - Microsoft Learn
Quick Accent (formerly known as Power Accent) is a PowerToys module that allows users to quickly insert accented characters by holding a key and pressing an activation key (like the Space key or arrow keys). For example, holding 'a' might display options like 'à', 'á', 'â', etc. This tool enhances productivity by streamlining the input of special characters without the need to memorize keyboard shortcuts.
The Quick Accent module consists of five projects:
poweraccent/
├── PowerAccent.Common/ # Language data, character mappings, LetterKey enum
├── PowerAccent.Core/ # Accent logic, settings, positioning, usage statistics
├── PowerAccent.UI/ # WinUI 3 character selector app (PowerToys.PowerAccent.exe)
├── PowerAccentKeyboardService/ # WinRT keyboard-hook component
└── PowerAccentModuleInterface/ # Native runner module DLL
The Module Interface, implemented in PowerAccentModuleInterface/dllmain.cpp, is responsible for:
PowerAccent.Common holds the UI- and runtime-agnostic data the other projects share:
LetterKey enum (kept in sync with the WinRT LetterKey in PowerAccentKeyboardService/KeyboardListener.idl)It has no UI or WinRT dependencies and is unit-tested in isolation (PowerAccent.Common.UnitTests).
The Core component contains:
PowerAccent.CommonCore carries no UI-framework dependency: it raises events and accepts a UI-thread marshaller delegate instead of touching WPF/WinUI directly, and its positioning math is covered by PowerAccent.Core.UnitTests.
The UI component is a self-contained WinUI 3 (Windows App SDK) app, migrated from WPF. It is responsible for:
TransparentWindow overlay shown with SW_SHOWNA so it never steals focus from the app being typed intoIt builds to PowerToys.PowerAccent.exe together with its .pri and the bundled Windows App SDK runtime, all under the WinUI3Apps output folder.
This component:
Quick Accent supports two activation styles, selected by the Activation key setting.
Trigger-key modes (Left/Right arrow, Space, or Both — the default):
Press-and-hold mode (Press and hold the letter, iOS/macOS style, opt-in):
The module includes multiple language-specific character sets and special character sets:
To debug the Quick Accent module via runner approach, follow these steps:
F5 or clicking the "Start" buttonCtrl+Alt+P to open "Reattach to Process"This process allows you to debug the Quick Accent module while it's running as part of the full PowerToys application.
To directly debug the Quick Accent UI component:
F5 or clicking the "Start" buttonKnown issue: A first incremental build can surface transient errors (for example from CsWinRT projection / WinUI XAML codegen ordering).
Solution: Right-click the PowerAccent folder in Solution Explorer and select "Rebuild", then start debugging again.