A lightweight Windows tray app that shows a clean, modern on-screen indicator for Caps Lock, Num Lock and Scroll Lock. It is made for keyboards that have no lock LEDs.
It starts with Windows, sits quietly in the system tray, and never steals focus or blocks your clicks.
Publisher: JXT SIDHU
- Instant lock status for Caps, Num and Scroll Lock (green when ON, dim when OFF)
- Crisp, anti-aliased design with per-pixel transparency, soft glow and shadow, and DPI-aware rendering that stays sharp on high-resolution screens
- Non-intrusive: always on top, click-through, no taskbar button, and it never takes keyboard focus
- Always visible option: pin any lock (for example Caps Lock) so it is shown permanently
- Display modes: always show, show only while ON, or flash briefly when a lock is toggled
- Position anywhere: 7 presets, or unlock and drag it to any spot on any monitor
- Starts with Windows, hidden in the tray
- Resizable settings window with live preview, opened from the tray icon
- Custom colors: ON, OFF, ON text and OFF text
- Rename the labels (CAPS, NUM, SCROLL)
- Horizontal or vertical layout
- Font choice, corner roundness, glow and shadow toggle, ON/OFF text toggle
- Distance from the screen edge, and choice of monitor
- Optional sound when a lock changes
- One-click reset to defaults
- Windows 10 or 11
- .NET Framework 4.x (already included with Windows; nothing to install)
- Download
JXTKeyLock.csandBuild.batinto the same folder. - Double-click
Build.bat. It uses the C# compiler that ships with Windows, createsJXT KEY LOCK INDICATOR.exe, and starts it. - Find the tray icon near the clock (click the ^ arrow if it is hidden). Click it to open settings.
The settings window opens automatically on the first run only. After that the app starts hidden.
"Start with Windows" is on by default and can be changed in Settings > General. The app re-registers itself every time it launches, so a moved or rebuilt exe still starts correctly. It uses the per-user startup entry (HKCU\...\Run) and needs no administrator rights. You can also see or toggle it in Windows Settings > Apps > Startup.
| What | Where |
|---|---|
| Settings | %APPDATA%\JXT KEY LOCK INDICATOR\settings.ini |
| Error log (only if something goes wrong) | %APPDATA%\JXT KEY LOCK INDICATOR\error.log |
- Untick Start with Windows in settings.
- Right-click the tray icon and choose Exit.
- Delete the exe, and optionally the
%APPDATA%\JXT KEY LOCK INDICATORfolder.
- Build fails: make sure
JXTKeyLock.csandBuild.batare in the same folder, then open an issue with the error text. - Nothing appears after launching: check the tray (^ arrow). Launching the exe again opens the settings window of the running copy.
- A message about a problem appears: details are saved to
error.login the settings folder. Please include it in an issue. - Windows SmartScreen warning on a downloaded exe: the exe is not code-signed. Building it yourself with
Build.batavoids this.
The app polls the Windows keyboard toggle state (GetKeyState) about 10 times per second, which uses almost no CPU, and draws the indicator into a layered, click-through window. It is a single C# file with no dependencies beyond .NET Framework.
MIT (add a LICENSE file to the repository).
Made by JXT SIDHU