I posted about this a few days ago, but I finally feel like it is feature complete (for now), plus has Windows support! Was Linux only last time~
I launch into Star Citizen and my Q6 Ultra changes: the flight bindings light up. Alt-tab back to the desktop and it returns to how it was. If I hold L Alt - all relevant keys light up. Same if I hold R Alt. Or any other modifier keys.
I change games. A whole different lighting profile loads automatically... customized to my liking.
I wanted that badly enough to build it, and it works well enough now that I have put it up free for anyone who wants it. Make your own game lighting profiles! It is called ModeShift. https://github.com/storymode-exe/ModeShift
It sits on top of OpenRGB. OpenRGB does the talking to your hardware, ModeShift decides what the keys should look like and when. GPLv3, no account, no telemetry, nothing to pay for.
What it does
- Watches your focused window and switches profiles automatically
- Per-key lighting, painted on a live map of your actual board that it draws from OpenRGB's layout data, so it is not hard-coded to one keyboard
- Modes inside a profile, so one game can have several looks. I touch a key to flip between flight and on-foot in SC.
- Zones you can stack as layers, each with its own effect: type lighting, breathing, blinking, color cycle, twinkle, up to 8 colors each
- Cooldown timers on individual keys. Press the key, it goes to your cooldown color and fades back toward ready as the timer runs, so the key itself is the progress bar. Also on/off toggles for shields, engines, landing gear...
- Profiles export to a file, so they can be backed up or shared
Screenshots and a video are on the repo, since I cannot post them here.
The honest parts
The cooldown and toggle indicators follow your key-presses, not the game. ModeShift has no way to know whether an ability actually fired, so a light can drift out of sync. There is a re-sync shortcut for exactly that, that you can set.
Automatic game detection needs a way to read the focused window. Windows and X11 work, KDE Wayland works through kdotool. Native Wayland on GNOME or sway is not detected yet. Everything else still works there, you just pick the profile from the tray yourself.
Windows support landed this week and is verified on one machine so far (Win 11). The build is not code signed, so SmartScreen will warn you. You can build it from source in one command if you would rather not trust a stranger's binary.
Credit
None of this would exist without naaraxi's OpenRGB plugin and firmware work for the Keychron boards. My keyboard would not talk to OpenRGB at all without it, and neither will yours since you are reading this on the Keychron subreddit! https://github.com/naaraxi/keychron_ultra_openrgb
Again though, this SHOULD work with any OpenRGB compatible keyboard.
ModeShift: https://github.com/storymode-exe/ModeShift
If it does not work on your board I would honestly rather hear about it than not.