Keylegend
Interactive keyboard lighting for Razer Chroma — your keys light up by what they actually do.
English · Deutsch · Español · Français · Italiano · Nederlands ·
Polski · Português · Русский · Українська · 简体中文
> Version 1.2.0. Lighting, interface, game detection and application profiles all work.
> Download the installer or the portable copy,
> or build from source. See CHANGELOG.md.

What it does
Most RGB software treats your keyboard as decoration. Keylegend treats it as a display.
Every key is coloured by what it currently means — and that colouring changes the instant
its meaning changes:
- Lock states at a glance. Num, Caps and Scroll Lock show their state on the key itself.
- Colour by character class. Digits, lowercase letters, uppercase letters, symbols and
control keys each get their own colour.
- Hold a modifier, see the layer. Press
AltGr and only the keys that actually carry an
AltGr character stay lit. Press Win and the Windows shortcuts light up, grouped by
function. Same for Alt, Ctrl and their combinations.
- Shift and Caps Lock just work. Because the character each key produces is queried live
from Windows, letters switch from the "lowercase" colour to the "uppercase" colour by
themselves. The number pad recolours to navigation when Num Lock is off.
- Games get their own treatment. Detected automatically — including borderless-windowed
ones — and WASD, the keys around it and the number row take fixed colours, because while
playing it matters where your hands go and not which letter a key types.
- Per-application profiles, around ninety of them included. Photoshop, Visual Studio Code,
Excel, Elden Ring and the rest take effect the moment the program has the focus, and a profile
naming a program outranks the general game profile. Edit one and only the part you edited
stops following the shipped version — the rest keeps improving with later releases.
- The lighting can answer the typing. Eight effects to choose from, none by default:
the struck key fades, flashes or glows on, a water drop or a dark wave runs across the board,
the keys around it shake, sparks fly, or keys warm with use and cool down again. Laid over the
colours rather than mixed into them, so every key still says what it means.
- Gives the lighting back. After a configurable idle period (60 s by default), Keylegend
releases the keyboard so your Chroma Studio effect takes over again.
- Eleven languages. English, German, Spanish, French, Italian, Dutch, Polish, Portuguese,
Russian, Ukrainian and simplified Chinese. The interface follows the Windows display language
and can be switched in the settings. Key legends are unaffected — they follow your keyboard,
not the menus.
Because the key meanings come from the active Windows keyboard layout rather than a
hardcoded table, Keylegend works with any layout — German, US, French, Dvorak — without
changes.
How it works
Keylegend asks Windows what character each key would produce in the current keyboard state
(ToUnicodeEx), derives a category from that character, and sends the resulting colour map
to the Razer Chroma SDK over its local REST interface.
It deliberately does not install a global keyboard hook. It reads key states — whether a key
is down at this moment — and never intercepts, forwards or records keystrokes. With no typing effect
chosen it looks at the modifier and lock states alone; a typing effect additionally asks which of
this keyboard's own keys are down, and nothing further.
See docs/en/architecture.md.
Requirements
- Windows 10 or 11
- Razer Synapse with the Chroma SDK service running
- A Razer Chroma keyboard, connected (see below)
- .NET 10 runtime
Installing
winget install Eistee82.Keylegend
That is the shortest route: winget fetches the .NET runtime as a declared dependency, so there is
no prerequisite to install by hand. Otherwise, take a file:
Download the latest release.
| File | What it is |
|---|
Keylegend-1.2.0-setup.exe | Installs for the current user — no administrator rights. Start menu entry, and a clean uninstall that also removes the autostart entry. |
Keylegend-1.2.0-portable.zip | The same program, to unpack and run. Keep the language folders (de, fr, …) next to the executable, or the interface falls back to English. |
Both are unsigned, so Windows will call the publisher unknown — a certificate costs more per year
than this project has. Each release ships SHA256SUMS.txt if you would like to check the download
is intact, and the build log that produced it is public.
Supported keyboards
Every Razer Chroma keyboard. There is no list, and no file per model, because Keylegend does
not need to recognise your keyboard — it asks. Razer Synapse describes the one that is plugged in:
the model by name, the physical layout as a number, and the keys the hardware actually has. Its own
drawing of that model supplies the rest — the real key sizes, the casing with its dial and media
keys, and the outlines of the characters printed on the caps, in the right language.
The one thing the drawing does not say is which cell of the lighting matrix each key belongs to.
That is a constant of the Chroma protocol, identical on every model, which is why Synapse itself
needs no per-model table either. Checked against the one keyboard this was calibrated on by hand,
all 105 keys agree.
The physical layout describes the shape of the keyboard, not the language you type in. Which
character a key produces is asked of Windows at run time, so a German keyboard is served correctly
even with Windows set to US or Dvorak.
Requires Razer Synapse, installed and running, with the keyboard connected. That is where the
keyboard is described and where its drawing is kept.
Documentation
| Topic | |
|---|
| Architecture | how the colouring is decided, and why there is no keyboard hook |
| Adding a profile | per-application colouring |
| Configuration | settings, the settings file, autostart |
Available in eleven languages:
English · Deutsch · Español · Français ·
Italiano · Nederlands · Polski · Português ·
Русский · Українська · 简体中文
The interface speaks the same eleven, following the Windows display language and switchable in
the settings. Key legends are unaffected — they follow your keyboard, not the menus.
English and German are the maintained originals; where a translation disagrees with them, the
English text is the one that is right. Corrections are welcome, see
CONTRIBUTING.md.
Building and running
git clone https://github.com/Eistee82/Keylegend.git
cd Keylegend
dotnet build
dotnet test
Keylegend.exe (src/Keylegend.App) is the whole program: window, notification-area icon,
settings. --verify is the one switch worth knowing — it checks that a copy carries the shipped
profiles and all eleven languages, writes what it found to the path given after it, and answers
through its exit code. That is what the release script runs against a packaged copy.
Settings live in %APPDATA%\Keylegend\settings.json and are written by the application.
Contributing
Bug reports, application profiles and translations are all welcome — see
CONTRIBUTING.md and CODE_OF_CONDUCT.md.
Licence
MIT. Two third-party donation buttons are excepted, and no vendor code, header,
library or artwork is contained here — see NOTICE.md.
Trademark notice
This project is not affiliated with, endorsed by, or sponsored by Razer Inc.
RAZER and RAZER CHROMA are trademarks or registered trademarks of Razer Inc. They are used
here solely to identify the hardware and the software interface this project works with, as
permitted by referential use. Keylegend is an independent, community-maintained project.
The same applies to every other name in this repository. The application and game profiles name
around ninety programs — Photoshop, Visual Studio Code, Excel, Elden Ring and the rest — and the
documentation names keyboard vendors and models. Those are trademarks of their respective owners
and appear only to say which program or which keyboard something is for. Keylegend is not
associated with any of them and contains none of their code or assets. See NOTICE.md.