Repository navigation
v2.5.0 — Last Win fixed, RGB lighting, explicit Sync
First non-beta release. Brings together everything from beta.22 through beta.42 plus the 2026-05-27 work session.
Headline fixes
Last Win (snap-tap) now actually works on gen-1. USBPcap of the official drunkdeer.keybord.net.cn driver doing a real A↔D save revealed we'd been sending a fc 01 LW-pair packet that the official driver never emits, plus a wrong rtModeFlag on the Type-4 keymap entries. Together these caused the "D stuck pressed" / "trailing key" symptoms after fast typing. Now matches the official wire format. Verified on A75 Pro firmware 0x17.
Explicit Sync model. Property changes (sliders, toggles, pair edits) no longer auto-push to the keyboard — they save to disk and the Sync button turns amber. Click "Push changes" to commit. Matches the official web driver's Save UX and eliminates the race window where the firmware was still mid-sync when you tried to test. Three button states:
- Idle: purple "Sync to keyboard"
- Unsynced: amber "● Push changes"
- Just-synced: 2 s green "✓ Synced", then back to idle
Per-profile state with Discard. Each profile tracks its own unsynced flag — switching to a clean profile no longer leaves the button amber. When you try to switch profiles with unsynced changes, you now get a dialog: [Push and switch] / [Discard and switch] / [Stay on this profile]. Discard reverts to the last-pushed snapshot.
RGB lighting (first time shipping)
The Lighting tab is now enabled. Preset effects (Off, AlwaysOn, Breath, Wave Spectrum, Ripple, Marquee, Neon, and 12 more from the official 19-effect catalog) are hardware-validated on A75 Pro 1st gen. Per-key custom painting is available with a one-time first-sync confirmation — wire format byte-matches the official driver but the per-key path is not yet formally hardware-verified.
Brightness is hard-clamped to 0–9 at every layer (UI, ViewModel, packet builder). Recovery procedure for the edge-case soft-brick is in docs/rgb-protocol.md and the Lights-off button does exactly that.
Hotkey safety
Profile hotkeys now require a modifier (Ctrl, Alt, or Shift). Plain keys like [ or R were swallowed system-wide while the app was running. Existing single-key bindings are not migrated — if you had one, re-bind with a modifier.
Bundled presets on first run
Fresh installs land on a Typing preset (default) and Valorant preset instead of an empty profile list. You can delete them.
Gen-2 A75 Pro OEM (VID 0x19F5)
Detection + sync path is unchanged from beta.42 — still echo-verified but observable-unverified. The new explicit-Sync UX applies, which should make any partial behaviour easier to test. If you have an OEM gen-2 unit, treat this as WIP and capture a USBPcap if anything goes wrong.
Other
- A75 Pro firmware 0x17 verified working in production
- Many UI polish fixes (lavender → purple accent, glass-card popups, compact tab strip, Viewbox-fitted keyboard)
- Profile auto-update flow (
%LocalAppData%\DrunkDeer Control\bin\) preserved - Single-instance enforcement preserved
Download
DrunkDeer-Control.exe below is a self-contained single-file build. No .NET installer needed.
🤖 Built with Claude Code