⚠️ Use at your own risk, the developer is not responsible for any damages that may arise as a result of using this program.
Builds will be periodically uploaded to the releases tab.
You may also download pre-compiled versions from here (requires github account) by clicking the latest entry with a ✅ and going under the "artifacts" section.
All stock effects: Static, Breath, Smooth, LeftWave, RightWave.
Custom effects:
The best way to add a new effect is to directly edit the source code, as it allows the most flexibility. You can however also use the built-in feature to make basic effects.
json
file with the following format:{
"effect_steps": [
{"rgb_array": [0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0], "step_type": "Set", "brightness": 1, "steps": 100, "delay_between_steps": 100, "sleep": 100},
{"rgb_array": [0, 100, 0, 0, 0, 200, 0, 0, 200, 200, 0, 0], "step_type": "Transition", "brightness": 1, "steps": 100, "delay_between_steps": 100, "sleep": 100}
],
"should_loop": true
}
[r,g,b,r,g,b...]
format.Set
or smoothly transition to them with Transition
.1
(low) or 2
(high).effect_step
(In ms).Note: By default, on Linux you will have to run the program with root privileges, however, you can remedy this by adding the following udev
rule (in a path similar to /etc/udev/rules.d/99-kblight.rules
):
# Pro Models
SUBSYSTEM=="usb", ATTR{idVendor}=="048d", ATTR{idProduct}=="c995", MODE="0666"
# Regular Legions
SUBSYSTEM=="usb", ATTR{idVendor}=="048d", ATTR{idProduct}=="c994", MODE="0666"
# LOQ Models
SUBSYSTEM=="usb", ATTR{idVendor}=="048d", ATTR{idProduct}=="c993", MODE="0666"
# Pro Models
SUBSYSTEM=="usb", ATTR{idVendor}=="048d", ATTR{idProduct}=="c985", MODE="0666"
# Regular Legions
SUBSYSTEM=="usb", ATTR{idVendor}=="048d", ATTR{idProduct}=="c984", MODE="0666"
# LOQ Models
SUBSYSTEM=="usb", ATTR{idVendor}=="048d", ATTR{idProduct}=="c983", MODE="0666"
# Regular legions
SUBSYSTEM=="usb", ATTR{idVendor}=="048d", ATTR{idProduct}=="c975", MODE="0666"
# Ideapad models
SUBSYSTEM=="usb", ATTR{idVendor}=="048d", ATTR{idProduct}=="c973", MODE="0666"
# Regular legions
SUBSYSTEM=="usb", ATTR{idVendor}=="048d", ATTR{idProduct}=="c965", MODE="0666"
# Ideapad models
SUBSYSTEM=="usb", ATTR{idVendor}=="048d", ATTR{idProduct}=="c963", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="048d", ATTR{idProduct}=="c955", MODE="0666"
And then reloading the rules:
sudo udevadm control --reload-rules && sudo udevadm trigger
Execute the file by double-clicking on it. You may pass extra startup options via the CLI by also specifying the --gui
flag.
Configuration for this mode is saved by default on the folder the program was executed in a file called settings.json
, you can override this location by setting the LEGION_KEYBOARD_CONFIG
environment variable.
Usage:
legion-kb-rgb [OPTIONS] [SUBCOMMAND]
Examples:
legion-kb-rgb --help
legion-kb-rgb set -e Static -c 255,0,0,255,0,0,255,0,0,255,0,0
4
and brightness at highlegion-kb-rgb set -e SmoothWave -s 4 -b 2 -d Left
This program has been tested to work on:
sudo apt-get install -y libclang-dev libxcb-shm0-dev libusb-1.0-0-dev libx11-dev nasm libdbus-1-dev libudev-dev libxcb-randr0-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libxi-dev libxtst-dev
cargo-make
Works on both Windows and Linux.
cargo-make
cargo install cargo-make
git clone https://github.com/4JX/L5P-Keyboard-RGB.git
cd L5P-Keyboard-RGB/
cargo make build-release
Download and bootstrap VCPKG
You'll need to set an environment variable called VCPKG_ROOT
pointing to the directory where you downloaded and bootstrapped VCPKG.
Download the VCPKG dependencies
Windows:
vcpkg update && vcpkg install libvpx:x64-windows-static libyuv:x64-windows-static
Linux:
vcpkg update && vcpkg install libvpx libyuv
git clone https://github.com/4JX/L5P-Keyboard-RGB.git
cd L5P-Keyboard-RGB/
cargo build --release
I cannot guarantee this solution will work for anyone but myself. That being said feel free to open an issue if you encounter any of these problems on the issues tab.
Thanks to legendk95#0574 (272711294338072577) over at discord for initially reverse engineering the way to talk to the keyboard.