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.
bun install
bun run dev
bun run test
bun run typecheck
bun run lint
bun run buildDuring development, open /?preview=keymap-editor to exercise the writable-profile
editor UI without connecting to WebHID. The preview never sends device commands.
- 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 0x0483devices in compatibility mode without widening the normal picker - Open the 68 Pro family and reported 87 program interfaces (
UsagePage 0x8C, Usage0x01); 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.
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