Repository navigation
KVM-Control Plus v0.1.0
First public release.
KVM-Control Plus turns your laptop into a KVM console for another machine:
view its screen through a USB HDMI capture dongle and drive its keyboard and
mouse over a CH9329 serial HID bridge.
Download
KVM-Control-Plus.exe — one file, Windows x64. No installer, no DLL folder,
no runtime to install, and no VC++ redistributable required: the C runtime is
linked statically, so the only libraries it imports are Windows system DLLs.
- Size: 7.87 MB
- SHA-256:
784e868d93ffb08c328d72505ac88e04df0e9b7e4887ecb0fdf476ff9453fffc
Run it with no arguments for the GUI. Every diagnostic below is also available
headless.
What's in it
- Two dependencies, total —
eframe(GUI) andwindows(all platform
plumbing). Serial I/O, video capture, settings, input hooks and USB link
measurement are hand-rolled over Win32; no serialport, nokhwa, image, serde,
anyhow or channel crate. Build dependencies hold to the same rule: the icon
and version resources are compiled by driving the SDK'src.exedirectly
instead of depending onwinres. - A Devices tab that explains itself. It reports which USB mode the capture
link negotiated — measured from the USB hub via
IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX[_V2], not inferred — how much
throughput that leaves, and every format the device offers marked with whether
it physically fits. Uncompressed 1080p needs 155–207 MB/s against the ~40 MB/s
a USB 2.0 link carries, so only MJPEG can work there; pick an uncompressed
format and the device streams filler frames forever. The app says so. - CH9329 protocol layer that is pure and byte-exact tested, a hand-rolled
serial port and SetupAPI enumeration, a VK→HID keymap with layout-aware
translation, and an input thread with its own hidden window and Raw Input. - Headless diagnostics that found everything above:
--list-devices,
--list-formats,--probe,--usb,--snapshot,--raw-probe,
--grab-native.
Known limitations
- A live moving picture is not verified end-to-end. Everything up to and
including "valid JPEG bytes arrive at the expected buffer size" is confirmed
against real hardware; a moving image has not been observed in-app, because
the HDMI source was asleep during every test session. See
docs/CAPTURE_DIAGNOSIS.md. - The capture format must be chosen manually. On a USB 2.0 link the app warns
loudly when an unfittable format is selected, but it does not yet refuse or
auto-switch to MJPEG. - Mouse control is absolute-position only; relative (game) mode is not wired up.
- Macros and clipboard/file transfer are not implemented.
Documentation
docs/CAPTURE_DIAGNOSIS.md — the full measured investigation into black
pictures (two independent causes, distinguished by evidence).
docs/CODE_MAP.md — every module and the rules that keep the project lean.
docs/TODO.md — what is done, verified, and next.
A Rust rewrite inspired by the C#/WinUI3 Control3.