Releases: KaiCreates/InputSync
InputSync v1.2.0 — Native Rust KVM Switch
InputSync v1.2.0 — Native Rust KVM Switch
Control multiple computers with one keyboard and mouse over your local network — end-to-end encrypted, no browser engine, no installer, no runtime dependencies.
Pure Rust + egui. Single portable binary. ~9 MB.
What's New in v1.2.0
Architecture — Full migration from Tauri/WebView2/React to pure Rust + egui:
- Replaced the entire Tauri + React frontend with a native egui (eframe 0.31 + glow) UI — no browser engine, no WebView2, no Node.js required at build or runtime
- Single portable native binary (~9 MB stripped) replaces the old .deb/.exe installer packages
- Windows no longer requires WebView2 Runtime — completely self-contained executable
New features:
- Screen edge switching — move the cursor to any configured screen edge to automatically forward control to the connected client
- Dead corners — configurable corner regions that block edge triggers to prevent accidental switching
- Dead zones — configurable rectangular screen regions that suppress edge activation
- Optional TLS transport — self-signed TOFU certificate via rcgen + rustls + tokio-rustls, layered on top of the existing ChaCha20 session encryption
- Settings persistence — all configuration saved to
~/.local/share/inputsync/config.json - In-app log viewer — real-time log output in the Logs tab
- Mini screen-map widget — clickable widget in Settings for configuring edge targets
- Tabs: Main | Settings | Logs
Bug fixes:
- Server restart after stop —
Start Servernow auto-stops any running server; no stale state - Stopped TCP listener now releases port immediately on shutdown
Downloads
| Platform | File | Notes |
|---|---|---|
| Linux (x86_64) | inputsync-linux-x86_64 |
Run directly — no install needed |
| Windows (10/11 x64) | inputsync-windows-x86_64.exe |
Run directly — no installer, no WebView2 |
Checksums: SHA256SUMS-linux.txt / SHA256SUMS-windows.txt
Quick Start
- Server (keyboard/mouse machine): Run InputSync → Start Server → note the 6-character code + IP
- Client (machine to control): Run InputSync → Enter code + IP → Connect
- Switch control: Move cursor to a configured screen edge, or press ScrollLock, or click the Forwarding toggle
- All input events are encrypted end-to-end (X25519 ECDH + ChaCha20-Poly1305)
System Requirements
Linux: libx11, libxtst, libxdo, libwayland (most distros include these)
Windows: Windows 10+ x64 — no additional runtime required
Network: TCP :24800 + UDP :24801-24802 open on the server machine
Verify Downloads
# Linux
sha256sum -c SHA256SUMS-linux.txt
chmod +x inputsync-linux-x86_64 && ./inputsync-linux-x86_64
# Windows (PowerShell)
Get-FileHash inputsync-windows-x86_64.exe -Algorithm SHA256
# Compare against SHA256SUMS-windows.txtBuilt with Rust + egui — no WebView2, no Electron, no Node.js
InputSync v1.1.2 — Native Rust KVM Switch
InputSync v1.1.2 — Native Rust KVM Switch
Control multiple computers with one keyboard and mouse over your local network — end-to-end encrypted, no browser engine, no installer, no runtime dependencies.
Pure Rust + egui. Single portable binary. ~9 MB.
What's New in v1.1.2
Architecture — Full migration from Tauri/WebView2/React to pure Rust + egui:
- Replaced the entire Tauri + React frontend with a native egui (eframe 0.31 + glow) UI — no browser engine, no WebView2, no Node.js required at build or runtime
- Single portable native binary (~9 MB stripped) replaces the old .deb/.exe installer packages
- Windows no longer requires WebView2 Runtime — completely self-contained executable
New features:
- Screen edge switching — move the cursor to any configured screen edge to automatically forward control to the connected client
- Dead corners — configurable corner regions that block edge triggers to prevent accidental switching
- Dead zones — configurable rectangular screen regions that suppress edge activation
- Optional TLS transport — self-signed TOFU certificate via rcgen + rustls + tokio-rustls, layered on top of the existing ChaCha20 session encryption
- Settings persistence — all configuration saved to
~/.local/share/inputsync/config.json - In-app log viewer — real-time log output in the Logs tab
- Mini screen-map widget — clickable widget in Settings for configuring edge targets
- Tabs: Main | Settings | Logs
Bug fixes:
- Server restart after stop —
Start Servernow auto-stops any running server; no stale state - Stopped TCP listener now releases port immediately on shutdown
Downloads
| Platform | File | Notes |
|---|---|---|
| Linux (x86_64) | inputsync-linux-x86_64 |
Run directly — no install needed |
| Windows (10/11 x64) | inputsync-windows-x86_64.exe |
Run directly — no installer, no WebView2 |
Checksums: SHA256SUMS-linux.txt / SHA256SUMS-windows.txt
Quick Start
- Server (keyboard/mouse machine): Run InputSync → Start Server → note the 6-character code + IP
- Client (machine to control): Run InputSync → Enter code + IP → Connect
- Switch control: Move cursor to a configured screen edge, or press ScrollLock, or click the Forwarding toggle
- All input events are encrypted end-to-end (X25519 ECDH + ChaCha20-Poly1305)
System Requirements
Linux: libx11, libxtst, libxdo, libwayland (most distros include these)
Windows: Windows 10+ x64 — no additional runtime required
Network: TCP :24800 + UDP :24801-24802 open on the server machine
Verify Downloads
# Linux
sha256sum -c SHA256SUMS-linux.txt
chmod +x inputsync-linux-x86_64 && ./inputsync-linux-x86_64
# Windows (PowerShell)
Get-FileHash inputsync-windows-x86_64.exe -Algorithm SHA256
# Compare against SHA256SUMS-windows.txtBuilt with Rust + egui — no WebView2, no Electron, no Node.js
InputSync v1.1.1 — Native Rust KVM Switch
InputSync v1.1.1 — Native Rust KVM Switch
Control multiple computers with one keyboard and mouse over your local network — end-to-end encrypted, no browser engine, no installer, no runtime dependencies.
Pure Rust + egui. Single portable binary. ~9 MB.
What's New in v1.1.1
Architecture — Full migration from Tauri/WebView2/React to pure Rust + egui:
- Replaced the entire Tauri + React frontend with a native egui (eframe 0.31 + glow) UI — no browser engine, no WebView2, no Node.js required at build or runtime
- Single portable native binary (~9 MB stripped) replaces the old .deb/.exe installer packages
- Windows no longer requires WebView2 Runtime — completely self-contained executable
New features:
- Screen edge switching — move the cursor to any configured screen edge to automatically forward control to the connected client
- Dead corners — configurable corner regions that block edge triggers to prevent accidental switching
- Dead zones — configurable rectangular screen regions that suppress edge activation
- Optional TLS transport — self-signed TOFU certificate via rcgen + rustls + tokio-rustls, layered on top of the existing ChaCha20 session encryption
- Settings persistence — all configuration saved to
~/.local/share/inputsync/config.json - In-app log viewer — real-time log output in the Logs tab
- Mini screen-map widget — clickable widget in Settings for configuring edge targets
- Tabs: Main | Settings | Logs
Bug fixes:
- Server restart after stop —
Start Servernow auto-stops any running server; no stale state - Stopped TCP listener now releases port immediately on shutdown
Downloads
| Platform | File | Notes |
|---|---|---|
| Linux (x86_64) | inputsync-linux-x86_64 |
Run directly — no install needed |
| Windows (10/11 x64) | inputsync-windows-x86_64.exe |
Run directly — no installer, no WebView2 |
Checksums: SHA256SUMS-linux.txt / SHA256SUMS-windows.txt
Quick Start
- Server (keyboard/mouse machine): Run InputSync → Start Server → note the 6-character code + IP
- Client (machine to control): Run InputSync → Enter code + IP → Connect
- Switch control: Move cursor to a configured screen edge, or press ScrollLock, or click the Forwarding toggle
- All input events are encrypted end-to-end (X25519 ECDH + ChaCha20-Poly1305)
System Requirements
Linux: libx11, libxtst, libxdo, libwayland (most distros include these)
Windows: Windows 10+ x64 — no additional runtime required
Network: TCP :24800 + UDP :24801-24802 open on the server machine
Verify Downloads
# Linux
sha256sum -c SHA256SUMS-linux.txt
chmod +x inputsync-linux-x86_64 && ./inputsync-linux-x86_64
# Windows (PowerShell)
Get-FileHash inputsync-windows-x86_64.exe -Algorithm SHA256
# Compare against SHA256SUMS-windows.txtBuilt with Rust + egui — no WebView2, no Electron, no Node.js
InputSync v1.1.0 — Native Rust KVM Switch
What's New in v1.1.0
Architecture: Pure Rust + egui — No WebView2, No Electron, No Runtime
Single portable native binary. Install via .deb or drop the binary anywhere and run.
New Features
- Screen Edge Switching — move cursor to screen edge to auto-switch control to client
- Dead Corners — block edge triggers at configurable screen corners
- Dead Zones — block edge triggers in any configurable rectangular region
- Optional TLS — self-signed TOFU certificate (rcgen + rustls)
- Settings Persistence — config saved to
~/.local/share/inputsync/config.json - In-app Log Viewer — real-time logs in the Logs tab
- Tabbed UI — Main | Settings | Logs (pure egui, no browser engine)
Bug Fixes (20 resolved)
- Server restart no longer causes "address already in use" (TCP + UDP both released cleanly)
- Client disconnect events now reach the UI
- Session codes now use OsRng (cryptographic entropy)
client_countproperly incremented/decremented- 10-second handshake timeout prevents resource exhaustion
- UDP port OS-assigned — no more hardcoded port clashes
- TLS
ServerNamehandles raw IP addresses — no more panic - Simulator channel bounded (512 packets) — no unbounded heap growth
- Sequence counter only advances on emitted packets
- Mouse baseline reset on forwarding re-enable — no cursor jump
- Dead zone bounds validated in UI
Downloads
| File | Platform | Notes |
|---|---|---|
inputsync_1.1.0-1_amd64.deb |
Linux x86_64 (Ubuntu 22.04+, Debian 12+) | Installs to /usr/bin, adds app menu entry |
SHA256SUMS-v1.1.0-linux.txt |
— | SHA256 checksum |
Install (Ubuntu / Debian)
wget https://github.com/KaiCreates/InputSync/releases/download/v1.1.0/inputsync_1.1.0-1_amd64.deb
sudo dpkg -i inputsync_1.1.0-1_amd64.deb
# Fix any missing deps if needed:
sudo apt-get install -f
# Launch:
inputsyncVerify
sha256sum -c SHA256SUMS-v1.1.0-linux.txtSystem Requirements
- Ubuntu 22.04+ / Debian 12+ (amd64)
- X11 display server
- Dependencies auto-installed by dpkg:
libgtk-3-0 libx11-6 libxtst6 libxdo3 - Network: TCP :24800 + UDP :24801-24802 open on the server machine
Built with Rust + egui 0.31 — compiled for x86-64 baseline (runs on any 64-bit CPU)
InputSync v1.0.2
InputSync v1.0.2
Cross-platform software KVM switch — control multiple computers with one keyboard and mouse over your local network, with end-to-end encryption.
What's New
See CHANGELOG.md for full details.
Downloads
| Platform | File | Notes |
|---|---|---|
| Linux (Ubuntu 22.04+, Debian 12+) | InputSync_*_amd64.deb |
Recommended |
| Windows (10/11 x64) | InputSync_*_x64-setup.exe |
NSIS installer |
Installation
Linux (.deb):
sudo dpkg -i InputSync_*_amd64.deb
# Fix any missing deps:
sudo apt-get install -fWindows:
Run InputSync_*_x64-setup.exe — click More info → Run anyway if SmartScreen appears (unsigned build).
Verify Downloads (SHA256)
Each download folder includes a SHA256SUMS.txt. Verify with:
# Linux
sha256sum -c SHA256SUMS.txt
# Windows (PowerShell)
Get-FileHash InputSync_*_x64-setup.exe -Algorithm SHA256Quick Start
- Server (your keyboard/mouse machine): Open InputSync → Start Server → note the 6-character code + IP
- Client (machine to control): Open InputSync → Enter code + IP → Connect
- Switch control: Press ScrollLock or click the Capture toggle to start/stop forwarding input
- All events are encrypted end-to-end (X25519 + ChaCha20-Poly1305)
System Requirements
Linux: Ubuntu 22.04+ / Debian 12+ · X11 display · libwebkit2gtk-4.1-0 · libxtst6
Windows: Windows 10 build 1903+ · 64-bit · WebView2 (bundled)
Network: Both machines on same LAN · TCP :24800 + UDP :24801-24802 open
Built with Rust 🦀 + Tauri 2 + React
InputSync v1.0.1
InputSync v1.0.1 — Bug Fix Release
This patch release fixes critical issues reported on Windows and Linux after the v1.0.0 launch. No new features — pure stability improvements.
What's Fixed
Windows
Installer no longer appears frozen
The Windows installer downloads Microsoft Edge WebView2 Runtime if it's not already on your system (~100 MB). Previously this download happened silently with zero feedback, making the installer look stuck or crashed. v1.0.1 now detects whether WebView2 is already installed:
- If already installed (most Windows 10 / Windows 11 systems): the step is skipped instantly — no download, no wait.
- If not installed: a dialog appears before the download begins, clearly stating the installer is running normally and will complete in a few minutes.
App no longer silently fails to open
If WebView2 was missing or corrupted after installation, InputSync would crash immediately with no visible error — users saw the app disappear with no explanation. v1.0.1 replaces the silent crash with a native Windows error dialog that:
- Explains exactly what went wrong
- Provides a direct download link to fix the WebView2 issue
- Shows the technical error detail for reporting purposes
Linux
No UI on Wayland / Hyprland
InputSync's UI (WebKit2GTK) and input capture (rdev) both require an X11 session. On Wayland compositors like Hyprland, the app would launch but show a completely blank window or no window at all. The .desktop entry now forces GDK_BACKEND=x11 WEBKIT_DISABLE_DMABUF_RENDERER=1, routing through XWayland automatically. XWayland is available on all major Wayland compositors.
Tray icon crash on startup
The system tray icon caused an immediate startup crash: ImageBufferSize { expected: 1048576, actual: 2097152 }. The bundled icons were generated as 16-bit-per-channel RGBA PNGs (8 bytes/pixel), but the tray loader expected standard 8-bit RGBA (4 bytes/pixel). All icons have been regenerated at the correct 8-bit depth.
Upgrade Instructions
Linux (.deb):
sudo dpkg -i InputSync_1.0.1_amd64.deb
sudo apt-get install -fWindows:
Run InputSync_1.0.1_x64-setup.exe — the improved installer will guide you through WebView2 setup if needed.
Downloads
| Platform | File | Notes |
|---|---|---|
| Linux (Ubuntu 22.04+, Debian 12+) | InputSync_1.0.1_amd64.deb |
X11 required; Wayland via XWayland |
| Windows (10/11 x64) | InputSync_1.0.1_x64-setup.exe |
Improved WebView2 handling |
Verify Downloads (SHA256)
# Linux
sha256sum -c SHA256SUMS.txt
# Windows (PowerShell)
Get-FileHash InputSync_1.0.1_x64-setup.exe -Algorithm SHA256Quick Start
- Server (your keyboard/mouse machine): Open InputSync → Start Server → note the 6-character code + IP
- Client (machine to control): Open InputSync → Enter code + IP → Connect
- Switch control: Press ScrollLock to toggle input forwarding
- All events are encrypted end-to-end (X25519 + ChaCha20-Poly1305)
Built with Rust + Tauri 2 + React
InputSync v1.0.0 — Initial Release
InputSync v1.0.0 — Initial Release
Cross-platform software KVM switch — control multiple computers with one keyboard and mouse over your local network, with end-to-end encryption.
Features
-
🔐 End-to-End Encrypted — X25519 ECDH key exchange + ChaCha20-Poly1305 AEAD. Every keystroke and mouse event is encrypted before it leaves your machine. No plaintext ever travels the network.
-
⚡ Ultra-Low Latency — UDP transport with relative delta-encoded mouse events. Input forwarding feels indistinguishable from local control on a good LAN.
-
🎯 Session Codes — Connect with a random 6-character alphanumeric code (e.g.
ABC123). No manual IP configuration, no port forwarding needed beyond your LAN. -
🔄 ScrollLock Switch — Press ScrollLock on the server to instantly toggle input between local and remote control — just like a hardware KVM.
-
🖥️ Cross-Platform — Linux (X11) and Windows from a single Rust codebase. Wayland support is on the roadmap.
-
🪶 Tiny Footprint — ~5 MB installer, ~10 MB installed. No background daemon, no system services, no registry clutter.
-
🎨 Terminal Pixel-Art UI — Minimal dark theme built with Tauri 2 + React. Looks at home next to your terminal.
-
🛡️ No Persistence — Session keys are ephemeral. Nothing is written to disk. Fresh key exchange every session.
How It Works
┌──────────────┐ TCP :24800 ┌──────────────────┐
│ SERVER │◄──────────────►│ CLIENT │
│ (Host PC) │ Key Exchange │ (Controlled PC) │
│ │ │ │
│ Captures │ UDP :24801 │ Simulates │
│ keyboard + │───────────────►│ keyboard + │
│ mouse │ Encrypted │ mouse │
└──────────────┘ └──────────────────┘
Session flow:
- Server starts → generates random 6-char code (e.g.
ABC123) - Client enters code + server IP → TCP handshake
- X25519 ECDH → derive ChaCha20-Poly1305 session key
- Combined nonce exchange (prevents replay attacks)
- Input forwarding begins over UDP
- Press ScrollLock or click Capture toggle to switch control
Downloads
| Platform | File |
|---|---|
| Linux (Ubuntu 22.04+, Debian 12+) | InputSync_1.0.0_amd64.deb |
| Windows (10/11 x64) | InputSync_1.0.0_x64-setup.exe |
Installation
Linux (.deb):
sudo dpkg -i InputSync_1.0.0_amd64.deb
sudo apt-get install -f # fix deps if neededWindows:
Run InputSync_1.0.0_x64-setup.exe. If Windows SmartScreen appears, click More info → Run anyway.
Quick Start
- Server machine — Open InputSync → click Start Server → note your 6-char code + IP
- Client machine — Open InputSync → enter code + IP → click Connect
- Back on server — click Capture: ON (or press ScrollLock) to begin forwarding input
- Press ScrollLock again to switch back to local control
Security
| Layer | Implementation |
|---|---|
| Key exchange | X25519 ECDH via x25519-dalek |
| Encryption | ChaCha20-Poly1305 via chacha20poly1305 |
| Key derivation | HKDF-SHA256 (session code as salt) |
| Nonce | Per-packet counter XOR combined server+client nonces |
| Session scope | Keys never stored; fresh exchange every connection |
System Requirements
Linux: Ubuntu 22.04+ / Debian 12+ · X11 display server · libwebkit2gtk-4.1-0, libgtk-3-0, libxtst6, libx11-6
Windows: Windows 10 (build 1903+) or Windows 11 · 64-bit · WebView2 Runtime (bundled in installer)
Network: Both machines on the same LAN · Firewall must allow TCP :24800 and UDP :24801–24802
Checksums
SHA256 checksums are included alongside each download file.
# Linux verification
sha256sum -c SHA256SUMS.txt
# Windows verification (PowerShell)
Get-FileHash InputSync_1.0.0_x64-setup.exe -Algorithm SHA256Known Limitations (v1.0.0)
- Linux Wayland not yet supported (X11 required)
- No screen-edge auto-switching (toggle via ScrollLock or UI button)
- Windows installer is not code-signed (SmartScreen warning expected)
- macOS not yet supported
- Clipboard sync coming in v1.1
Whats Coming in v1.1
- 📋 Clipboard sync across machines
- 🖥️ Linux Wayland support
- 🔍 mDNS auto-discovery (no manual IP entry)
- ⌨️ Configurable hotkey (not just ScrollLock)
- 📦 RPM + Arch AUR packages
- 🍎 macOS support
Built with Rust 🦀 · Tauri 2 · React · ChaCha20-Poly1305 · X25519
MIT License · Copyright © 2025 KaiCreates