Skip to content
550W-HOSTPublic

Repository files navigation

NIZ Deck

Community WebHID configurator with physical-layout support for the NIZ DRT family (Atom68, Micro82, mini84, X87, X99, S104, X108), built with React, TypeScript, and Tailwind CSS.

NIZ Deck is an independent community project and is not affiliated with NiZ.

Commands

bun install
bun run dev
bun run test
bun run typecheck
bun run lint
bun run build

During development, open /?preview=keymap-editor to exercise the writable-profile editor UI without connecting to WebHID. The preview never sends device commands.

Current scope

  • Connect to the NIZ 68 Pro family (VID 0x0483, PID 0x5432/0x5532/0x5632/0x5732), 84EC (PID 0x5129), the reported NIZ 87 (PID 0x5131), and other DRT models (Micro82 / mini84 / X87 / X99 / S104 / X108) as read-only candidates
  • Explicitly discover unknown VID 0x0483 devices in compatibility mode without widening the normal picker
  • Open the 68 Pro family and reported 87 program interfaces (UsagePage 0x8C, Usage 0x01); discover the 84EC collection by VID/PID
  • Read firmware version (0xF9)
  • Capture the complete keymap (0xF2, 0xF0, 0xF6)
  • Read-only DRT companion blocks for the 68 Pro family: light (0xE2/0xE0/0xE6, 0xCC bytes), trigger (0xD3/0xD4/0xD1, 0xCC bytes), track (0xE3/0xE6, 0x110 bytes); shown as byte counts in the device panel and hashed (no raw bytes) in the compatibility report
  • Keep unrelated devices metadata-only; probe only NiZ-like names and HID programming collections
  • Require two byte-identical complete reads for unverified non-68-Pro/community candidates
  • Inspect Base, Right Fn, and Left Fn layers
  • Stage local key/chord and timed-sequence assignment drafts with search, physical key capture, undo/redo, per-key restore, and change review
  • Render hand-drawn 68/84/87-key ANSI layouts, with a generic grid fallback for 82/99/104/108-key models until dedicated maps land; manual selection available
  • Recognize unknown 68/82/84/87/99/104/108 candidates by product name and captured positions
  • Export a versioned JSON capture containing raw and parsed reports
  • Export a redacted compatibility report without keycodes, macro events, or raw keymap reports
  • Rewrite only the verified 68 Pro profile after a second matching read, then verify a complete read-back

Edited records are deliberately not writable yet. Draft assignments remain separate from captured raw reports until a hardware-verified record encoder is available.

The rewrite action is deliberately guarded: it is disabled for non-68-Pro/community candidates, validates every raw record, permits no more than one stable omitted record, requires matching preflight reads, and marks interrupted writes as requiring recovery.

Structure

src/
  components/   Workbench UI
  data/         Physical layout and NIZ keycode names
  device/       Transport contracts, WebHID adapter, device client
  domain/       Shared state and action models
  hooks/        React device lifecycle
  protocol/     64-byte packet codec and parser
  types/        WebHID browser declarations
  index.css     Tailwind theme tokens and document-level base styles
  uiStyles.ts   Shared Tailwind utility compositions

Releases

Packages

Contributors

Languages