English · Русский
A keystroke visualizer for Windows 11, ported from KeyCastr for macOS. It shows what you type and click in bezels over the screen, for screencasts, demos and presentations.
The visualizers, preferences, defaults and keystroke formatting follow KeyCastr's source closely. The bezels can blur the desktop behind them (acrylic).
| Default | Svelte | Minimal |
|---|---|---|
![]() |
![]() |
![]() |
| Preferences → General | Preferences → Display |
|---|---|
![]() |
![]() |
Get the latest build from Releases:
WinKeyCastr-win-x64.exe— self-contained, runs as is.WinKeyCastr-win-x64-framework-dependent.exe— smaller, needs the .NET 10 Desktop Runtime.
Windows SmartScreen may warn about an unsigned app: choose More info → Run anyway.
- Windows 11
- .NET 10 SDK (for building) / .NET 10 Desktop Runtime (for running a framework-dependent build)
dotnet build
dotnet run --project src/WinKeyCastr
dotnet testSingle-file release build:
dotnet publish src/WinKeyCastr -c Release -r win-x64 --self-contained false -p:PublishSingleFile=true -o publish- KeyCastr lives in the notification area. Click its key-cap icon (with the Windows logo) for About, Preferences…, Start/Stop Casting and Quit. The icon is filled while casting.
- Ctrl+Alt+Win+K toggles casting (KeyCastr's ⌃⌥⌘K). You can change it under Preferences → General.
- Drag a bezel to move it. The position is remembered.
- Running the program again opens the preferences of the copy that's already running.
- The interface is in English or Russian: Preferences → General → Language (defaults to the system language).
| Visualizer | What it shows |
|---|---|
| Default | A stack of bezels in the bottom-left corner. Typing in quick succession shares a bezel; commands, clicks and pauses start a new one. Display mode: Command Keys Only (default), All Modified Keys or All Keys, plus Apply Modifiers. Font size, line break delay, linger time, fade duration and colours are adjustable. |
| Svelte | A small panel with the last few keystrokes and ⇧ ⌃ ⌥ ⊞ indicators that light up while held. |
| Minimal | One bezel showing exactly what is held down right now: modifiers, key and mouse button. |
Display Mouse Events adds a ring around the pointer on click, shows clicks in the visualizer, or both.
| macOS | Windows | Shown as |
|---|---|---|
| ⌃ Control | Ctrl | ⌃ |
| ⌥ Option | Alt / AltGr | ⌥ |
| ⇧ Shift | Shift | ⇧ |
| ⌘ Command | Win | ⊞ |
- KeyCastr treats ⌃ and ⌘ chords as commands. On Windows, Alt chords (Alt+Tab, Alt+F4) count as commands too. AltGr does not, because it types characters the way the Mac Option key does.
- Preferences → General → Modifier keys switches to text labels (
Ctrl+Shift+K) if your audience isn't used to the Mac symbols. - Keys are shown in the keyboard layout of the window you are typing into, so a Russian layout shows
⌃С.
- Acrylic. Optional blur behind the bezels (Preferences → Display → Bezel Material). It uses Windows.UI.Composition's host backdrop brush, because the regular Windows 11 acrylic turns solid in windows that are not active, and the overlays never are.
- Notification area / taskbar instead of menu bar / Dock. With "In the Taskbar" selected, closing the preferences window minimizes it to the taskbar, like a Dock icon.
- There is no Sparkle "Update" pane.
- The ⌘ on KeyCastr's key-cap icon is replaced by the Windows logo.
- Windows protects elevated (administrator) windows from non-elevated hooks. To show keystrokes typed into elevated apps, run WinKeyCastr as administrator too.
src/WinKeyCastr/
Input/ global keyboard/mouse hooks, keystroke → text (port of KCEventTransformer)
Overlay/ always-on-top, non-activating overlay windows and the acrylic backdrop
Visualizers/ Default, Svelte, Minimal and the mouse-click ring
Settings/ preferences, saved to %APPDATA%\WinKeyCastr\settings.json
UI/ preferences and about windows, notification-area icon, colour well, shortcut recorder
tests/WinKeyCastr.Tests/ keystroke formatting tests (ported from KeyCastr) and layout translation tests
Debug builds accept --demo Default|Svelte|Minimal to play scripted input without touching real
input or saving settings (--prefs, --display open the preferences).
See THIRD-PARTY-NOTICES.md for KeyCastr's BSD licence, which covers the reused icons.




