ThinkPad LED control for Windows. Toggle the indicator LEDs (Power, Fn, Sleep, Red Dot, Microphone), control the keyboard backlight, and bind LEDs to system events like Caps Lock or mic mute.
Built in C# / .NET 8 WinForms, x64 only.
- Manual on / off / blink for each ThinkPad indicator LED
- Keyboard backlight control (off / low / high)
- "All off" — turns off every LED including the keyboard backlight in one click
- Lights Out mode — automatically turns off all LEDs when a fullscreen window is detected (games, video, presentations)
- Bind any LED to a source: Caps Lock, Num Lock, Mic mute, Speaker mute, Fullscreen, or Always On
- Runs in the system tray, optional silent start (
--silentor via config) - Auto-elevates to admin on launch (required for EC access)
- Windows 10 / 11, x64
- A ThinkPad (tested on T/X/P series — your mileage may vary on other models)
- .NET 8 Runtime (or SDK if building from source)
WinRing0x64.dllandWinRing0x64.sysplaced next toLEDder.exe
The WinRing0 driver files are not included in this repo. You need to obtain them yourself and drop them in the same folder as the executable.
dotnet build -c Release
The output ends up in bin\Release\net8.0-windows\. Copy WinRing0x64.dll and WinRing0x64.sys into that folder before running.
LEDder.exe # normal start
LEDder.exe --silent # start minimized to tray
Right-click the tray icon for quick access to "All LEDs off" and Lights Out toggle.
Settings are stored in config.json next to the executable. It's created on first run.
This app talks directly to the embedded controller via WinRing0. Writing to the wrong EC offset can do unexpected things. The defaults are safe on tested machines, but if you start poking at offsets manually with the EC byte read/write tool, you do so at your own risk.
MIT