Repository navigation
Keys are not displaying on second monitor #172
Description
Activity
Works fine on my windows 7 64 bit en-us version...
I’ll clarify: on Win10 fall creators update it doesn’t position the output on secondary screens
Windows 7 64-bit Professional user; version 6.17601 Service Pack 1 Build 7601.
Carnac only displays on the middle monitor of a 3 screen setup. Ignores any attempts to switch to a different monitor. Offsets are limited to middle monitor so I can't fake it by having slide left or right. :)Reacted by Jorge MoralesI have the same situation in Windows 10 (1809 ver CH). My own solution is to set the display that needs display software as the main computer display.
I had the same issue so I dug deep into the source and realized that the problem is that I have my displays on top of each other, and carnac only sets the
Leftproperty of the view based on the left property of the selected display.I've created a PR which adds the required changes to the code: #238
Reacted by abaumgaertner, Jorge Morales, Nad Hr, Patrik Drozdík and shahram7@szelpe Any updates on this? Are you still working on the PR?
I'm affected by the same issue.
Reacted by shahram7Same issue here. Two Displays working well, 3rd Display not.
If i change the display i will have carnac working to MAIN DISPLAY it works.
@psxvoid The PR code works on my computer, apparently no one is really maintaining the PRs any more.
Reacted by Jorge MoralesThat's a bummer. It would be very cool to see your changes in the main app. Or at least in a chocolatey package.
Reacted by Jorge Moralessame problem
Version 2.3.13.0
windows 11Hi there! 👋
I (@doggy8088 / Will Huang) have stepped in to take over active maintenance of Carnac at doggy8088/carnac (project website: https://carnac.gh.miniasp.com/).
This issue regarding multi-monitor positioning, vertical monitor stacks, mixed-DPI scaling, and display resolution changes has been resolved in my fork!
Context & Root Cause
- Why this happened:
- KeyShowView previously only updated Left (Screen.Left) and never set Top (Screen.Top), and relied on WPF DIPs (WindowState = Maximized) instead of physical pixel coordinates—causing overlays on vertically stacked monitors, negative-coordinate monitors, or secondary mixed-DPI screens to appear on the wrong display or off-screen.
- The monitor selector in Preferences -> General rendered all screens in a flat 1D horizontal row regardless of their actual 2D arrangement in Windows Display Settings.
- Carnac did not subscribe to SystemEvents.DisplaySettingsChanged, so docking/undocking monitors or changing resolution via Remote Desktop left the overlay and Preferences window stranded off-screen.
- The Fix:
- Win32 Physical Pixel Placement (OverlayPlacementController): Positions the overlay window using Win32 MoveWindow with exact physical screen coordinates (Left, Top, Width, Height) across any horizontal, vertical, or mixed-DPI monitor configuration.
- Proportional 2D Monitor Selector (MonitorLayout): The screen picker in Preferences now draws monitors in their true 2D spatial layout (including vertical stacks and negative coordinates) and immediately moves the overlay when you click a monitor or corner radio button.
- Automatic Re-Placement on Display Changes: Subscribed to SystemEvents.DisplaySettingsChanged so the overlay and Preferences window automatically re-clamp onto an active screen when monitors or resolutions change.
- Related Issues & PRs:
Availability
- Source Code: Available now on the dev branch of doggy8088/carnac.
- Upcoming Release: This will be included in the next official release, which will be published to GitHub Releases (both installer and portable .zip), WinGet (winget install doggy8088.Carnac), and Chocolatey.
Reacted by Pavel Sapehin- Why this happened:

Even though the display position is selected on a second (or third) monitor, the keystrokes are not showing on that display device.