No description
  • TypeScript 99.3%
  • CSS 0.4%
  • HTML 0.2%
Find a file
Cipulot 510317d811 Add protocol-aware QMK lighting keycodes
Add to chat# Add protocol-aware QMK lighting keycodes

## Summary

- Select the keycode dictionary using the connected keyboard’s VIA protocol and QMK keycode version.
- Preserve unified `RGB_*` keycodes for protocol 12 and older firmware.
- Use separate `UG_*` and `RM_*` keycodes for protocol 13.
- Add support for the explicit Reader lighting modules:
  - `qmk_backlight_keycodes`
  - `qmk_rgblight_keycodes`
  - `qmk_rgb_matrix_keycodes`
  - `qmk_backlight_rgblight_keycodes`
- Keep `qmk_lighting` as a compatibility fallback, inferring the subsystem only from standardized lighting menus.
- Use the selected per-device dictionary consistently across the picker, Any input, macros, encoders, keymap rendering, and save/load.
- Report missing, malformed, or unsupported protocol-13 keycode-version responses on the Errors page.
- Add Develop-tab warnings for ambiguous lighting definitions and explicit module/menu mismatches.
- Improve the Develop-tab error when `qmk_lighting` is combined with an explicit lighting module.
- Update `@the-via/reader` to `1.14.3` and refresh the `via-keyboards` snapshot.

## Compatibility

Protocol 12 and older boards continue using legacy keycode values, even when their definitions have been updated with explicit lighting modules.

Protocol 13 boards must report the supported QMK keycode version (`0x00000008`) before modern keycodes are enabled.

## Verification

- Tested protocol-12 legacy RGB assignment and persistence.
- Tested protocol-13 RGBLight and RGB Matrix assignment and persistence.
- Tested Any input assignment, autocomplete, and legacy-name rejection.
- Tested protocol-12 and protocol-13 boards connected simultaneously.
- Regenerated the latest keyboard definitions successfully.
- TypeScript and formatting checks pass.
- Production build passes.
2026-07-28 16:29:29 +02:00
.github/workflows Revert "Prevent Cloudflare Pages from serving HTML for stale JS assets" 2026-07-09 21:53:10 +02:00
.vscode Fiber 🚧🚧🚧🚧🚧 (#71) 2023-03-02 21:12:34 -05:00
public Create 404.html 2026-07-12 21:14:21 -04:00
scripts Cleanup components and refactor (#276) 2024-10-25 20:17:41 -04:00
src Add protocol-aware QMK lighting keycodes 2026-07-28 16:29:29 +02:00
types Fiber 🚧🚧🚧🚧🚧 (#71) 2023-03-02 21:12:34 -05:00
.gitignore Fiber 🚧🚧🚧🚧🚧 (#71) 2023-03-02 21:12:34 -05:00
.prettierrc Update prettier and reapply formatting 2021-07-23 20:57:10 -04:00
bun.lock Add protocol-aware QMK lighting keycodes 2026-07-28 16:29:29 +02:00
index.html LANG support 2026-01-13 02:13:24 +01:00
LICENSE Create LICENSE 2022-07-11 19:51:05 -04:00
package-lock.json Add protocol-aware QMK lighting keycodes 2026-07-28 16:29:29 +02:00
package.json Add protocol-aware QMK lighting keycodes 2026-07-28 16:29:29 +02:00
README.md feat: improve readme with local dev setup 2025-09-29 18:53:40 +01:00
staticwebapp.config.json Update staticwebapp.config.json 2023-07-11 23:23:58 -04:00
tsconfig.json Fiber 🚧🚧🚧🚧🚧 (#71) 2023-03-02 21:12:34 -05:00
tsconfig.node.json Fiber 🚧🚧🚧🚧🚧 (#71) 2023-03-02 21:12:34 -05:00
vite.config.ts Fiber 🚧🚧🚧🚧🚧 (#71) 2023-03-02 21:12:34 -05:00

VIA Web Application - Your keyboards best friend

android-chrome-192x192

Azure Static Web Apps CI/CD

VIA is a powerful, open-source web-based interface for configuring your QMK-powered mechanical keyboard. It allows you to customize your keymaps, create macros, and adjust RGB settings (if it has RGB) on the fly, without needing to recompile your keyboard's firmware. This makes keyboard customization easier and more accessible for everyone.

Getting VIA to support your keyboard

Are you a keyboard maker or a developer interested in adding support for your keyboard? We welcome contributions to the VIA project!

  1. The source code of the keyboard has to be merged in QMK Firmware Repositories Master branch.
  2. Your keymaps/via keymap has to be merged in VIA's QMK Userspace Repository Main branch.
  3. Create a definition in JSON format for your keyboard and submit it as a pull request to VIA's Keyboards Repository Master branch.

Please follow our Specification documentation carefully to ensure your pull request is smoothly reviewed and merged.

Local development setup

Start by cloning the-via/keyboards then install dependencies with npm install and finally npm run build. You should see the output folder dist. This should be copied or symlinked to our repo's public/definitions folder.

# Inside the-via/app
public/definitions -> ../../keyboards/dist

Useful commands

npm run dev

Runs the app in the development mode. Open http://localhost:5173 to view it in the browser.

The page will reload if you make edits. You will also see any lint errors in the console.

npm run build

Builds a static copy of your site to the build/ folder. Your app is ready to be deployed!

npm run test

Launches the application test runner. Run with the --watch flag (npm test -- --watch) to run in interactive watch mode.


This project is tested with BrowserStack.

Looking for an offline app?

@cebby2420 has kindly made a desktop app that does so.

You can find it at https://github.com/cebby2420/via-desktop.

NOTE: This project has no official affiliation with VIA, and we cannot provide support for it.

Facing Issues?

If you encounter any issues or bugs while using the VIA web application, please report them by opening an issue in the Issues section. This will help us to track down and resolve problems, and improve the VIA experience for everyone.

Before reporting, please make sure to check if an issue has already been reported. Thank you!