PLAN.md 1.7 KB

Wobkey RGB CLI — Implementation Plan

Status

  • ✅ Go module initialized (github.com/wobkey/rgb)
  • ✅ git init + AGENTS.md + README.md
  • ✅ Directory structure: cmd/wobkey/, internal/device/, internal/hid/, internal/rgb/, internal/via/
  • ✅ Pure-Go HID layer: reads /dev/hidraw*, /sys/class/hidraw/*/report_descriptor, and HID metadata (no cgo, no libudev)
  • ✅ Keyboard discovery: detects Impact 80 (VID 0x36B0, PID 0x309F) and Rainy 75
  • ✅ All 8 RGB subcommands implemented (effect, brightness, speed, color, mode, enable, disable, info)
  • ✅ go build ✅ go vet ✅ go test ./... ✅ gofmt clean
  • ✅ QMK v12 Raw HID protocol: custom set/get values with 32-byte reports and response validation
  • ✅ Impact 80 three-zone lighting control (logo, backlight, side)
  • ✅ keyboards.json with decimal VID/PID

Open Issues

1. Impact 80 Effect Mapping

The keyboard's official VIA definition uses model-specific effect IDs for its three lighting zones. The generic QMK effect list in internal/rgb/effects.go does not yet map names such as rainbow to those IDs.

2. Cross-Platform HID Backends

The current transport is Linux-specific (/dev/hidraw* and Linux syscalls). macOS and Windows builds need platform-specific HID backends or a shared library.

3. Documentation and Release Artifacts

Keep protocol documentation, keyboard metadata, and generated graph outputs synchronized with the implementation.

Quick Commands for Next Session

# Rebuild with latest code
go build -o /tmp/wobkey ./cmd/wobkey/

# Discover the QMK Raw HID interface
/tmp/wobkey keyboard info

# Test RGB state
/tmp/wobkey rgb disable
/tmp/wobkey rgb info

# Run all checks
gofmt -w .
go vet ./...
go test ./...