A browser-based configurator for the EpoMaker x Aula F75 Max keyboard — RGB lighting, performance settings, key restrictions (disable Windows key / Alt+F4 / Alt+Tab), display image/GIF upload, clock sync, and factory reset, all from a web page. No install, no backend: it talks to the keyboard directly over USB using WebHID.
Ported from the native Aula F75 Max Driver project (macOS/Linux/Android).
If you just want to configure your keyboard, simply head over to https://antik79.github.io/Aula-F75-Max-Web. Linux users must install udev rules or it will not work. Check below for more information.
- A Chromium-based browser: Chrome, Edge, Opera, or Brave on desktop. WebHID isn't available in Firefox or Safari yet.
- The Aula F75 Max keyboard, its 2.4G receiver, or both.
The browser needs OS-level permission to open the keyboard's raw HID device. Install this udev rule, then unplug and replug the keyboard/receiver:
sudo tee /etc/udev/rules.d/60-aula-f75-max.rules <<'EOF'
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="0c45", ATTRS{idProduct}=="800a", MODE="0666", TAG+="uaccess"
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="05ac", ATTRS{idProduct}=="024f", MODE="0666", TAG+="uaccess"
EOF
sudo udevadm control --reload-rules
sudo udevadm triggernpm install
npm run dev # dev server
npm run test # protocol-layer unit tests
npm run build # production build to dist/
npm run lint # oxlintNo physical keyboard required for UI development — click "Try demo mode" on the connect screen to use a simulated device.
src/lib/protocol/— hardware-free port of the native driver's packet builders and checksum logic, unit tested against the Swift source's known byte layouts.src/lib/webhid/—navigator.hidtransport: device selection, the wired keyboard's Feature-report command exchange, the receiver's Output-report + ack pattern, and the chunked display-upload state machine.src/lib/mock/— simulated devices satisfying the same interface aslib/webhid, powering demo mode.src/lib/display/— image/GIF decoding (Canvas + gifuct-js) and RGB565 fit-mode scaling for the 128×128 display.src/components/,src/state/— the React UI and connection state.
Pushes to main build and publish to GitHub Pages via .github/workflows/deploy.yml. Enable Pages for the repo under Settings → Pages → Source: GitHub Actions.
- No background battery polling. The native app polls every 5 minutes and notifies even when unfocused; this app only polls while its tab is open.
- First connection needs a click. Browsers require a user gesture to grant device access; reconnecting after a replug works automatically once granted.
- Nothing leaves your browser. All communication is direct USB HID between your browser and the keyboard — there's no server component and no telemetry.