This is a web based keyconfig generator and firmware install tool for Schnell Keyboard by DriftKingTW.
-
Flash generated config file to the keypad: Schnell Keyboard Keyconfig Flash Tool
- i18n multi-language support
- Dark/Light theme support
- Editable key label
- Upload existing config file
- Reset single key
- Flash firmware through web ui
- Selectable stable firmware version history
- Vertical key cap layout ui
- Customize keyboard layout
npm installnpm run devnpm run buildnpm run previewThe web app deploys to GitHub Pages automatically on every push to master
(.github/workflows/deploy.yml). No manual step is required.
Firmware is built and published from the firmware repo
Schnell-BLE-Keypad. Once a
release is published there, it shows up in this tool's firmware installer
automatically — you never edit public/firmware/ by hand.
To cut a new firmware version, push a tag in the firmware repo:
# in the Schnell-BLE-Keypad repo
git tag v1.1.0 # stable release -> "stable" channel
git tag v1.1.0-beta.1 # contains beta/rc -> "beta" channel
git push origin <tag>What happens automatically:
- The firmware repo's
release.ymlbuilds the firmware, merges it into a single flashable image, and creates a GitHub Release withfirmware-merged.binandspiffs.bin. - It dispatches a
firmware-releasedevent to this repo. This requires aWEB_TOOL_DISPATCH_TOKENsecret in the firmware repo — a PAT withContents: read and writeon this repo (the defaultGITHUB_TOKENcannot trigger across repositories). - This repo's
update-firmware.ymldownloads the release assets intopublic/firmware/<channel>/, regenerates the esp-web-toolsmanifest.jsonandindex.json, commits tomaster, then deploys to GitHub Pages.
Channel behaviour:
- stable — also archived under
public/firmware/<tag>/, so every stable release stays installable later via the "show old versions" toggle in the installer dropdown. - beta — only the latest build is kept (not archived).
public/firmware/index.json is the source of truth for the version dropdown;
the UI fetches it on load and falls back to plain stable/beta options if it is
unavailable.
To point a channel at a specific tag without cutting a new release (e.g. to roll a beta back), trigger the workflow manually:
gh workflow run update-firmware.yml \
--repo DriftKingTW/Schnell-Keypad-Configuration-Tool \
-f tag=v1.1.0 -f prerelease=false # prerelease=true targets the beta channel