Skip to content

Releases: KaiCreates/InputSync

InputSync v1.2.0 — Native Rust KVM Switch

08 Mar 14:15

Choose a tag to compare

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 Server now 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

  1. Server (keyboard/mouse machine): Run InputSync → Start Server → note the 6-character code + IP
  2. Client (machine to control): Run InputSync → Enter code + IP → Connect
  3. Switch control: Move cursor to a configured screen edge, or press ScrollLock, or click the Forwarding toggle
  4. 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.txt

Built with Rust + egui — no WebView2, no Electron, no Node.js

InputSync v1.1.2 — Native Rust KVM Switch

08 Mar 13:55

Choose a tag to compare

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 Server now 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

  1. Server (keyboard/mouse machine): Run InputSync → Start Server → note the 6-character code + IP
  2. Client (machine to control): Run InputSync → Enter code + IP → Connect
  3. Switch control: Move cursor to a configured screen edge, or press ScrollLock, or click the Forwarding toggle
  4. 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.txt

Built with Rust + egui — no WebView2, no Electron, no Node.js

InputSync v1.1.1 — Native Rust KVM Switch

08 Mar 13:47

Choose a tag to compare

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 Server now 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

  1. Server (keyboard/mouse machine): Run InputSync → Start Server → note the 6-character code + IP
  2. Client (machine to control): Run InputSync → Enter code + IP → Connect
  3. Switch control: Move cursor to a configured screen edge, or press ScrollLock, or click the Forwarding toggle
  4. 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.txt

Built with Rust + egui — no WebView2, no Electron, no Node.js

InputSync v1.1.0 — Native Rust KVM Switch

07 Mar 21:03

Choose a tag to compare

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_count properly incremented/decremented
  • 10-second handshake timeout prevents resource exhaustion
  • UDP port OS-assigned — no more hardcoded port clashes
  • TLS ServerName handles 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:
inputsync

Verify

sha256sum -c SHA256SUMS-v1.1.0-linux.txt

System 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

07 Mar 17:15

Choose a tag to compare

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 -f

Windows:
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 SHA256

Quick Start

  1. Server (your keyboard/mouse machine): Open InputSync → Start Server → note the 6-character code + IP
  2. Client (machine to control): Open InputSync → Enter code + IP → Connect
  3. Switch control: Press ScrollLock or click the Capture toggle to start/stop forwarding input
  4. 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

07 Mar 16:32

Choose a tag to compare

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 -f

Windows:
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 SHA256

Quick Start

  1. Server (your keyboard/mouse machine): Open InputSync → Start Server → note the 6-character code + IP
  2. Client (machine to control): Open InputSync → Enter code + IP → Connect
  3. Switch control: Press ScrollLock to toggle input forwarding
  4. All events are encrypted end-to-end (X25519 + ChaCha20-Poly1305)

Built with Rust + Tauri 2 + React

InputSync v1.0.0 — Initial Release

07 Mar 15:09

Choose a tag to compare

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:

  1. Server starts → generates random 6-char code (e.g. ABC123)
  2. Client enters code + server IP → TCP handshake
  3. X25519 ECDH → derive ChaCha20-Poly1305 session key
  4. Combined nonce exchange (prevents replay attacks)
  5. Input forwarding begins over UDP
  6. 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 needed

Windows:
Run InputSync_1.0.0_x64-setup.exe. If Windows SmartScreen appears, click More info → Run anyway.


Quick Start

  1. Server machine — Open InputSync → click Start Server → note your 6-char code + IP
  2. Client machine — Open InputSync → enter code + IP → click Connect
  3. Back on server — click Capture: ON (or press ScrollLock) to begin forwarding input
  4. 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 SHA256

Known 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