Remote keyboard/mouse input teleportation between machines over network.
This project is fully developed and maintained thanks to the generous support of its sponsors and contributors.
- Captures keyboard and mouse on the sender and transmits events over network to a receiving device, then emulates input on the receiver.
- Uses UDP for high-rate mouse move/scroll; uses TCP for key presses.
| Can do / OS | MacOS | Windows | Linux |
|---|---|---|---|
| Send UDP | ✅ | ✅ | ❌ |
| Receive UDP | ✅ | ✅ | ❌ |
| Discover Servers | ✅ | ✅ | ✅ |
| Capture Input | ✅ | ✅ | ✅ |
| Emulate Input | ✅ | ✅ | ❌ |
| Display UI | ✅ | ✅ | ✅ |
-
src/flows- Contains possible work modes
-
src/keyboard/- Logic for input handling and emulation
-
src/networking- Part responsible for network connection, data transfer and running servers discovery
-
src/utils/- Platform helpers
- macOS/Linux: requires CMake; SDL3 detected via pkg-config. A helper script is included:
./scripts/compile.sh- Windows: CMake project links
user32andws2_32; build with your preferred generator (e.g., Visual Studio). A CI workflow for Windows exists.
Start a receiver on the target machine:
./build/keyleport --mode receiver --port 8080Start a sender on the source machine, pointing to the receiver IP:
./build/keyleport --mode sender --ip 192.168.x.y --port 8080Transport selection (in sender):
- UDP for mouse Move/Scroll
- TCP for keyboard and mouse button Down/Up
MIT License — see LICENSE (© Pavel Pakseev).
- Key mapping (eg: windows switches language like mac os)
- Local events emulation (in key-mapping mode only. so it's like using macros)
- Optimized binary data transferring
- Secured data transferring
- Possibly network events batching