MouseMove-R - VirtualHere automation for game streaming (C++)
[!IMPORTANT] Superseded by MouseBridge - a Raspberry Pi USB-gadget rewrite that eliminates VirtualHere entirely: the mouse stays permanently enumerated on the remote PC and focus switching takes <5 ms instead of 1-3 s of USB re-enumeration (measured 0.70 ms median input latency, zero loss). This repository is archived and kept for reference.
MouseMove
Why Use This Program?
MouseMove was created to solve a specific problem with remote desktop software like Moonlight: some applications don't accept simulated or emulated mouse inputs. These applications require direct USB device communication to function properly. While VirtualHere enables USB device sharing over a network, manually connecting and disconnecting devices can be cumbersome.
This program automatically manages VirtualHere USB device connections based on window focus, ensuring that: 1. Your USB device (like a mouse) only connects to the remote computer when you're actually using the remote application 2. The device automatically disconnects when you switch to local applications 3. You don't have to manually manage VirtualHere connections
This is particularly useful for: - Gaming setups using Moonlight/Sunshine - Remote workstations requiring precise input - Applications that reject simulated input devices - Setups where you frequently switch between local and remote use
Features
- Automatically manages VirtualHere USB device connections based on window focus
- Monitors specific window titles for focus changes
- Maintains connection status through heartbeat system
- Configurable through external configuration file
- Provides warning notifications for connection issues
Requirements
- Windows 64-bit operating system
- VirtualHere USB Client
- VirtualHere USB Server (vhusbdwin64.exe)
- Visual C++ Redistributable for Visual Studio 2015-2022
- LAN or VLAN connectivity between the Client/Host.
Installation Guide
Server Installation (Remote computer with USB Device)
- Download MouseMoveR.exe from the latest release
- Create a config.txt file in the same directory with these settings:
DEVICE_ID=YOUR_VIRTUALHERE_DEVICE_ID SERVER_PORT=8080 POLL_INTERVAL=5 HEARTBEAT_TIMEOUT=17 WARNING_INTERVAL=60 - Replace YOUR_DEVICE_ID with your VirtualHere device ID (can be found in VirtualHere Client)
- Run MouseMoveR.exe
- Allow through Windows Firewall if prompted
Client Installation (Computer running Moonlight)
- Download MouseMove.exe from the latest release
- Create a config.txt file in the same directory with these settings:
SERVER_IP=SERVER_COMPUTER_IP SERVER_PORT=8080 HEARTBEAT_INTERVAL=5 POLL_INTERVAL=2 VHUSB_CHECK_INTERVAL=30 WINDOW_TITLE=COMPUTER_NAME - Moonlight - Replace SERVER_COMPUTER_IP with the IP address of the computer running MouseMoveR
- Replace the WINDOW_TITLE if necessary with your Moonlight window title
- Run MouseMove.exe
Troubleshooting
- Ensure VirtualHere USB Client is running on both computers
- Check Windows Firewall settings if connection fails
- Verify IP addresses and ports in config files
- Check that the device ID matches exactly what's shown in VirtualHere Client
- Monitor the console output for any error messages
Building from Source
- Clone the repository
- Open the solution in Visual Studio
- Build both MouseMove and MouseMoveR projects
- Output executables will be in the Debug/Release folders
License
This project is licensed under the MIT License - see the LICENSE file for details
Contributing
- Fork the repository
- Create a new branch for your feature
- Submit a pull request
Support
For issues and feature requests, please use the GitHub issues system.
This page is generated automatically from the GitHub README, which is the single source of truth. ← Back to toddwolven.com