Skip to content

feat: add LunaFury LUNA33 and TYPE33 support - #168

Merged
snekxs merged 2 commits into
OpenMouse-Project:mainfrom
sekiranunn:feat/lunafury-support
Oct 6, 2026
Merged

snekxs merged 2 commits into
OpenMouse-Project:mainfrom
sekiranunn:feat/lunafury-support

Conversation

@sekiranunn

@sekiranunn sekiranunn commented Oct 5, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Add LunaFury LUNA33 and TYPE33 to the existing Lamzu/CompX driver. Both models
use the shared VID 0x373e:

Model Connection PID Ceiling / stages
LUNA33 Wired, 1K 0x0032 30000 DPI / 6
LUNA33 8K receiver 0x0033 30000 DPI / 6
TYPE33 Wired, 8K 0x0054 30000 DPI / 5
TYPE33 8K receiver 0x0084 30000 DPI / 5

Wired mouse commands use target 0x00; receiver mouse commands use target
0x02. The b032/b033/b054/b084 bootloader identities are excluded. EL/ES
suffixes are preserved when the device reports them in its product name;
the PID does not determine the color.

The public lamzu subpath exposes Lightning Trigger, per-button latency,
sensor angle, and wheel guard. These commands run only on LunaFury devices.
Setters validate ranges and profile bytes, then read back each write.
Unsupported or invalid replies leave the optional status fields absent.

Extension reads match the echoed profile and, for button latency, the button
ID. Stale replies are skipped within the existing retry limit without
resending the request.

Protocol evidence

The device table and command mappings come from the
public vendor configurator, inspected on
2026-10-05: app.14b76f96.js.map contains the device table and UI calls, and
output.xvi3.min.js contains the XviUpdater feature-report transport.
docs/lunafury-testing.md records the packet offsets, timing layout,
connection targets, and hardware checklist. The patch contains no proprietary
source or binaries.

Hardware verification

I tested all implemented features on LUNA33 over both wired and 8K receiver
connections with firmware 0.0.26.0. This covers both LUNA33 runtime
identities in the table. TYPE33 has not been tested on hardware.

Tests

  • npm run check: strict build, all 2059 tests passed, package dry-run passed.
  • The exhaustive cross-brand discovery/overlap matrix is unchanged and passed.
  • Fixtures cover all runtime IDs, wired/receiver targeting, profile 3,
    signed angles, full 19-byte button timing payloads, invalid/truncated replies,
    ignored writes/readback mismatches, disabled zero-wheel-window restoration,
    and other-brand isolation.
  • The matching source-only OpenMouse candidate was tested with the packed API:
    build, all 287 tests, bundle-size check, and frontend audit passed.
  • npm audit --omit=dev --audit-level=high: zero vulnerabilities.
    The unchanged upstream dev/release toolchain has 11 full-audit findings.
  • git diff --check passed. Changes use LF and exclude generated output and
    vendor artwork.

The matching frontend is OpenMouse #598,
kept in draft until a stable npm release contains these APIs.

@snekxs
snekxs merged commit ba726a9 into OpenMouse-Project:main Oct 6, 2026
5 checks passed
@github-actions

github-actions Bot commented Oct 6, 2026

Copy link
Copy Markdown

🎉 This PR is included in version 0.24.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants