Multi-User Input Manager — MouseMux V3-style multi-cursor for Windows
Turn one Windows PC into a multi-user workstation. Each mouse controls its own cursor, each keyboard types into its own active window. Built in C# on .NET Framework 4.7.2 with WinForms.
- Per-device mouse tracking — WH_MOUSE_LL hook captures raw input from each physical mouse independently. Mouse 1 → User 1, Mouse 2 → User 2
- Input injection — mouse_event for clicks/wheel, SetCursorPos for cursor movement
- DWM overlay — hardware-accelerated UpdateLayeredWindow renders colored ring cursors with user labels and color tags (MouseMux style)
- Full virtual screen support — cursors move freely across all monitors
- Keyboard focus locking — clicking into a window routes that user's keyboard input to that window
- Device detection — RawInput WM_INPUT identifies devices by hDevice handle. Devices appear as they're used
- Device drag-and-drop — drag devices into user boxes, between boxes, or back to the pool
- Per-user cursor settings — color picker, size, opacity
- Debug logging — writes to
asteria_debug.lognext to the exe - App icon — BiRefNet-processed Asteria logo
- Start button hangs/crashes — showing the overlay window on large virtual screens causes DWM to hang or crash with AccessViolation
- Default cursor sometimes visible —
ShowCursor(false)doesn't always persist through SetCursorPos calls from hooks - No support for more than 2 users yet — device-to-user mapping is sequential but unverified beyond 2 devices
- Click injection may be unreliable —
mouse_eventis deprecated;SendInputhad struct marshaling issues - No daemon/service mode — app must stay open for multi-cursor to work
- Overlay bitmap rendering — GDI+ on large virtual screens (>3 monitors) may be slow
| Component | Tech |
|---|---|
| Framework | .NET Framework 4.7.2 |
| UI | Windows Forms (dark theme) |
| Window overlay | Win32 UpdateLayeredWindow / DWM |
| Input hooks | Win32 SetWindowsHookEx (WH_MOUSE_LL, WH_KEYBOARD_LL) |
| Input injection | Win32 mouse_event, SetCursorPos |
| Device detection | Win32 RegisterRawInputDevices + WM_INPUT |
| Background removal | BiRefNet via rembg (Python) |
msbuild Asteria.csproj /t:Build /p:Configuration=ReleaseRequires .NET Framework 4.7.2 SDK or MSBuild 4.0.
MIT — see LICENSE
Work in progress. Built as an alternative to MouseMux V3 for local multi-user input on Windows.