3.3 KiB
FuckCapsLock
Caps Lock is a vestigial organ — this app permanently disables it until you terminate the app.
A lightweight Windows background utility that hooks the keyboard at the system level and swallows the Caps Lock keypress before it reaches any window. Runs silently in the system tray, auto-starts with Windows, and only stops blocking Caps Lock when you explicitly exit via the tray menu.
How It Works
FuckCapsLock installs a low-level Windows keyboard hook (WH_KEYBOARD_LL — SetWindowsHookEx). Every keypress passes through this hook before any application sees it. The hook inspects the virtual-key code and, if it matches VK_CAPITAL (0x14), returns 1 (blocked) without calling CallNextHookEx. All other keys pass through normally.
No driver, no service, no admin rights required. It's a single-user-mode userland hook that runs in your session's context.
Usage
- Run
fuckcapslock.exe— it minimizes to the system tray immediately - Caps Lock is now permanently disabled — pressing it does nothing
- To restore Caps Lock, right-click the tray icon and select Exit
- The app registers itself in
HKCU\Software\Microsoft\Windows\CurrentVersion\Runfor auto-start on next boot
Build
dotnet publish -c Release -r win-x64 --self-contained
Output: bin/Release/net10.0/win-x64/publish/fuckcapslock.exe
A pre-built self-contained exe is also available in the out/ directory.
Requirements
- Windows x64 (x86-64 processor)
- No .NET runtime required for the self-contained build
Tested on Windows 11. Should work on Windows 10 and 8 as well.
System Calls Reference
Every Win32 API and registry call the application makes, for auditability:
| API / Call | Module | Purpose | Risk |
|---|---|---|---|
SetWindowsHookEx(WH_KEYBOARD_LL, ...) |
user32.dll | Install low-level keyboard hook | Blocks only VK_CAPITAL |
UnhookWindowsHookEx(...) |
user32.dll | Remove hook on exit | Cleanup — no data sent |
CallNextHookEx(...) |
user32.dll | Pass unchecked keys to next hook | Normal keyboard passthrough |
GetModuleHandle(...) |
kernel32.dll | Get module handle for hook install | Standard hook setup |
Registry.CurrentUser\...\Run |
Microsoft.Win32 | Register for auto-start on boot | Writes only its own exe path |
NotifyIcon |
System.Windows.Forms | System tray icon | Visual indicator only — no data |
Application.Run(...) |
System.Windows.Forms | Message loop | Keeps process alive |
Mutex("Global\FuckCapsLock") |
System.Threading | Prevent duplicate instances | Singleton pattern |
No network calls, no filesystem reads/writes (beyond registry auto-start), no process injection, no DLL sideloading, no keylogging. The only key intercepted is Caps Lock (0x14), which is swallowed and never forwarded.
Background
Caps Lock was designed for typewriters where holding Shift was physically strenuous. On modern keyboards it serves no purpose — it toggles a mode that accidentally inverts case for entire sentences. Every major OS has considered removing it (Apple briefly experimented, Chromebooks replaced it with Search, IBM's Model M had a removable keycap). This utility exists so you don't have to rip the keycap off your laptop.
License
MIT License — see LICENSE.
Copyright (c) 2026 Llama Chile Shop