Skip to content

feat: add Noir Gear M2-NEX OpenMouse integration - #402

Merged
snekxs merged 3 commits into
OpenMouse-Project:mainfrom
williamsnoirgear:feat/noir-m2-nex
Sep 30, 2026
Merged

snekxs merged 3 commits into
OpenMouse-Project:mainfrom
williamsnoirgear:feat/noir-m2-nex

Conversation

@williamsnoirgear

Copy link
Copy Markdown
Contributor

Summary

Adds Noir Gear M2-NEX as a first-class OpenMouse device on top of the companion K-snake protocol change.

What is included

  • M2-NEX appears as Noir Gear / M2-NEX for USB and 2.4 GHz receiver connections
  • Overview profile selector with three browser-local profiles
  • Performance controls for the six fixed DPI stages, active DPI stage, and polling rate
  • M2-NEX stage colours matching the vendor configurator
  • Buttons page with numbered artwork markers, remapping, and scroll direction
  • Macro page with 32 slots, keyboard/mouse recording, manual actions, recorded timing, fixed delay, and save/clear controls
  • Advanced page with verified auto-sleep controls
  • M2-NEX-specific tab ordering and lighting/LOD gating based on verified support
  • Localized M2-NEX labels and focused application tests

Verification

  • npm run check: 244 tests passed
  • Production Vite build completed successfully
  • Tested locally with an owned M2-NEX connected through the 2.4 GHz receiver
  • The application was checked against the companion local mouse-protocol build

Known limitations

  • Bluetooth is intentionally not claimed.
  • LOD is hidden because the device returned an unknown 0xFF value.
  • Lighting is hidden from the M2-NEX surface until independently verified on hardware.
  • Some descriptors do not provide a reliable macro-read report, so the editor starts with local slots and writes the complete table on save.
  • Profiles are browser-local and are applied explicitly; they are not advertised as onboard hardware banks.

Artwork

The M2-NEX name mapping is included, but the local vendor render is deliberately not committed. A separate artwork request should provide an approved Noir Gear render or a maintainer-created silhouette for noir-m2-nex.png before the image is published to the OpenMouse image bucket.

This pull request depends on OpenMouse-Project/mouse-protocol#143.

user_1781515504933 and others added 3 commits September 29, 2026 17:19
…w strings

The Buttons card read the selected M2-NEX profile but its onChange wrote
straight to the device, so edits never surfaced in the UI and the exported
updateM2NexProfileButton was dead. Also move the new macro, scroll and
profile strings into src/i18n.ts keys (replicated across locales so
missingTranslations stays empty) and replace the hardcoded per-stage DPI
palette with --stage-color-* tokens for both themes.
@snekxs
snekxs merged commit 999f267 into OpenMouse-Project:main Sep 30, 2026
m4milaad pushed a commit to m4milaad/openmouse that referenced this pull request Oct 1, 2026
…drivers

Land the four device integrations that depend on protocol 0.22.0 together:
Noir Gear M2-NEX (OpenMouse-Project#402), Keychron G3 Air (OpenMouse-Project#408), Rapoo VT9 Pro (OpenMouse-Project#422) and
Keychron Launcher 8k/1k (OpenMouse-Project#426). The Launcher work removes KeychronM6HidClient
with m6-hid, so the panel must switch to Keychron8k/1kHidClient in the same
commit as the protocol bump. Raise the JS bundle budget to 2,085 kB for the
combined additions (measured 1,995.2 kB).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants