Unofficial library for modifying the RGB LEDs of a Wooting keyboard and getting analog input. It uses the WebHID API which is only available in Chrome and its derivatives.
npm install @clinth/wootSet up:
const d = new Devices();
await d.initialise();Set colours to a buffer:
const wd = d.devices[0]; // Get first device
// Set the Esc key to red
wd.setRgb({ row: 0, column: 0}, { r: 255, g: 0, b: 0 });
// Or alternatively:
wd.setRgbAlt(0, 0, 255, 0, 0);Write all changed keys to the keyboard:
wd.flushRgbBuffer();Calling flushRgbBuffer is a no-op if setRgb/setRgbAlt hasn't been called since last flush.
Set a single key, skipping the buffer:
wd.setRgbSingle({ row:0, column:0 }, { r: 0, g: 255, b: 0});Enumerate keys row-wise:
for (const key of wd.keysByRow()) {
wd.setRgb(key, { r: 255, g: 0, b: 0 });
}...or by column:
for (const key of wd.keysByColumn()) {
wd.setRgb(key, { r: 255, g: 0, b: 0 });
}Note that setting colours stops any current dynamic effect, including per-effect brightness levels. Wootility will not control the lighing of your keyboard until you release it:
wd.resetAll();You can also reset a single key to its default colour (as determined by saved profile):
wd.resetSingle({ row:0, column: 0});Set up:
const d = new Devices({ analog: true });
await d.initialise();Use the oninput handler to listen for key input from a device:
// Get all analog input Wooting devices
for (const wd of d.getAnalog()) {
wd.oninput = (event) => {
console.log(`Key: ${event.key} Value: ${event.value} Code: ${event.code}`);
}
}Starts a Vite server for the demo HTML:
npm install
npm run dev:demoInstall dependencies:
npm installnpm run build- Thanks to the Wooting Discord for help: Sainan & diogotr7.
- The Wooting RGB SDK was a useful reference (MPL License, Wooting BV)
- Uses parts from the AnalogSense.js SDK (MIT License, Calamity Inc.)