mykvm

XxMinorMIT活跃维护

跨平台软件 KVM,在可信局域网内用一套键鼠和剪贴板同时控制 Windows、macOS、Linux 多台电脑,底层用 Rust 和 QUIC 传输。

Open-source cross-platform software KVM for sharing keyboard, mouse, and clipboard across Windows, macOS, and Linux on trusted LANs.

v0.9.15发布于 2026-10-30 13:16 UTC734star +1 / 7 天56fork同步于 2026-11-10 11:56 UTC

怎么上手

由 README 提炼,执行前请确认
从 GitHub Releases 下载对应系统安装包安装;源码开发需 Node.js 22+ 与 Rust stable,执行 npm install 后运行 npm run tauri:dev
硬件要求按 README 说明

README 未说明显存或 GPU 要求;支持 Windows、macOS、Linux 桌面,但 Linux 的键鼠捕获与注入尚未实现,实际可用平台为 Windows 和 macOS。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

跨平台软件 KVM,在可信局域网内用一套键鼠和剪贴板控制多台电脑

跨平台软件 KVM,在可信局域网内用一套键鼠和剪贴板同时控制 Windows、macOS、Linux 多台电脑,底层用 Rust 和 QUIC 传输。

核心能力

  • 光标移出屏幕边缘即切换到另一台机器
  • 键盘输入跟随光标跨机切换
  • 通过加密 QUIC 连接同步文本、图片和富文本剪贴板
  • 自动发现局域网内设备,也支持手动输入 IP 连接
  • 可拖拽排列多显示器布局,匹配桌面实际摆放

容易踩的坑

仅限可信局域网使用,发现通道为明文且未认证,切勿将 UDP 47833/47834 暴露到公网;macOS 需在系统设置中授予辅助功能与输入监控权限,且构建为自签名未公证,首次打开需右键选择打开;文件与文件夹传输上限为 2 GiB,且两端都需更新到新版本。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v0.9.15
  1. v0.9.15MyKVM v0.9.15最新正式版2026-10-30 · 2026-10-30 13:16 UTC

    What's new

    Fixed

    • A controlled device whose IP address changed (for example macOS rotating its private Wi-Fi address) no longer ignores mouse, keyboard, clipboard, file, and diagnostic requests from its paired controller.

    Known limitations

    • Linux keyboard/mouse capture and injection are not implemented; Linux packages do not provide input sharing.
    • Native multi-finger touchpad gestures are not supported. Native cross-screen file dragging remains experimental.
    • Reports of intermittent continuous scrolling have not been confirmed resolved in every scenario.

    Downloads

    • macOS: use the universal .dmg. The .app.tar.gz is for automatic updates.
    • Windows: use the x64 .exe installer.
    • Linux: AppImage, .deb and .rpm packages are available with the input limitation above.

    Update every controlled device to receive this fix.

    Full changelog: https://github.com/XxMinor/mykvm/compare/v0.9.14...v0.9.15

  2. v0.9.14MyKVM v0.9.142026-10-22 · 2026-10-22 03:59 UTC
    查看更新说明

    What's new

    Added

    • App Updates offers Stable and Beta (bate) channels. The selected channel is saved and also applies to remote client update requests.
    • Per-device reverse scrolling: Devices → Device settings → Reverse scroll direction changes both scroll axes for that remote device, independently of macOS natural scrolling or MOS (discussion #29).

    Fixed

    • Windows: cursor recentering counts as a live mouse-hook callback, preventing unnecessary hook reinstalls while controlling an idle remote screen.
    • Success banners such as remote client update requests close automatically after five seconds and include a Close button.
    • Windows: input-service actions have the same spacing below the local information grid as other settings controls and wrap on narrower windows.
    • macOS: screen entry uses a valid, cached transparent cursor; paired connections are prepared before crossing, and reconnecting peers keep the local cursor until input can be sent.
    • macOS: received mouse, keyboard, and scroll input releases native temporary data after each command instead of retaining it on long-lived network workers.
    • The latest-version label shows the selected channel's published version, including when the installed local test build is newer.
    • macOS: repeated remote scrolling reuses one private input-state table, preventing shared-memory growth during long sessions. Scroll events keep explicit discrete and momentum-free settings.
    • macOS: remote drags keep matching press/move/release events on macOS 27. Returning to the controller keeps the actual drag position until handoff, and stopping sharing releases held buttons. Ordered snapshots recover lost presses without replaying stale drag state.
    • macOS: a disabled input tap releases remote keys and buttons before recovery. Cursor suppression is checked before forwarding pending movement (#45).
    • Clipboard acknowledgements allow Windows clipboard retries to finish; slow clipboard operations keep the keyboard/mouse connection intact. Windows clipboard access is serialized within MyKVM, and busy errors identify the holding process.
    • Windows: elevated service installation returns its actual failure to the UI, records a diagnostic result, validates the helper executable before installation, and reports readiness timeouts (#46).
    • Clipboard images from chat apps fall back to available bitmap data when their private temporary file cannot be read.
    • Windows: installing or repairing the unattended-control service waits for its startup pipe and for old workers to exit. A briefly locked helper executable is retried; failures show the backend's specific error instead of a generic runtime message (#27, #40).
    • Windows: refused clicks, keys, and scroll events retry through the input service even when Windows supplies no error code. This covers elevated prompts on the normal desktop, including UAC without dimming (#28).

    Known limitations

    • Linux keyboard/mouse capture and injection are not implemented; Linux packages do not provide input sharing.
    • Native multi-finger touchpad gestures are not supported. Native cross-screen file dragging remains experimental.
    • Reports of intermittent continuous scrolling have not been confirmed resolved in every scenario.

    Downloads

    • macOS: use the universal .dmg. The .app.tar.gz is for automatic updates.
    • Windows: use the x64 .exe installer.
    • Linux: AppImage, .deb and .rpm packages are available with the input limitation above.

    Update both devices to receive the latest input and clipboard corrections.

    Full changelog: https://github.com/XxMinor/mykvm/compare/v0.9.13...v0.9.14

  3. v0.9.13MyKVM v0.9.132026-10-05 · 2026-10-05 09:37 UTC
    查看更新说明

    What's new

    Added

    • Device settings use a modal form. Pointer and scroll speeds are saved together; pairing and removal actions are grouped inside the form.
    • Folder transfers preserve nested directories and empty folders. Windows native drags include directory descriptors; ordinary transfers unpack into the receiving folder. New folder and file-clipboard protocols require both peers to be updated.
    • Rich clipboard sharing includes HTML and RTF with a plain-text fallback.
    • File clipboard paste transfers selected files/folders without requiring network file shares. Active transfer toasts have a Cancel button.
    • Manually added peers keep their selected connection IP, including after pairing, rediscovery, and address changes (#26).
    • Drag-and-drop files across machines (ShareMouse-style, experimental): drag files on the machine that owns the keyboard and mouse onto a controlled machine. Controlling Windows → Mac: drag files toward the screen edge that borders the Mac — a document icon follows the cursor onto the Mac, and releasing over an open Finder folder drops the files there (otherwise the Desktop). Controlling Mac → Windows client is also in. Requires file transfer to be enabled in Settings, and both sides on this version or newer.
    • Drag files the other way too — from a controlled machine back to the controller. While controlling a Mac from Windows, grab a file on the Mac and drag it back across the edge onto Windows: it becomes a real native drag on Windows that you can drop into any folder, app, or field. Requires both sides on this version or newer.
    • Fetch the other machine's log from Settings → Diagnostics: a server pulls its online clients' logs ("Fetch Client Log"), a client pulls its server's ("Fetch Server Log"). The log lands in Downloads/MyKVM Remote Logs, so troubleshooting no longer means copying files between machines. Requires both sides on this version or newer.
    • Update a client from the controller: in Devices, a client running an older version shows "Update available" and an Update button. The client installs the release its own updater finds (still verified against its update key) and restarts, so a machine without its own keyboard and mouse never needs one for an update. Requires the client on this version or newer.
    • Media keys — volume up/down, mute, play/pause, next and previous — reach the machine you are controlling, in both directions.
    • Per-device pointer and scroll speed: on the controller, each added device in Devices has its own pointer (0.5×–2×) and scroll (0.5×–3×) speed.
    • Lock sync (Settings, off by default): locking the controller locks its online clients too. Only locking is synced; each computer unlocks with its own password.
    • Windows clients offer the unattended-control service once when it is not installed; it is what keeps a client controllable before sign-in and while MyKVM restarts for an update.

    Fixed

    • Screen-switch shortcuts restore the cursor position used before leaving each device and screen. Only a first visit without a remembered position lands at the center; hidden client parking does not overwrite the remembered position.
    • MyKVM shortcuts release logical keys on both devices while tracking physically held modifiers separately. Holding Alt for repeated screen switches remains possible; releasing Alt stops plain arrow keys from switching screens.
    • macOS: leaving a controlled Mac requests cursor hiding until the next movement. Re-entry, local mouse movement, and stopping sharing restore it; ordered cursor messages prevent delayed parking from overriding re-entry.
    • macOS: remote wheel events use independent input state and explicit discrete scrolling flags. Rate-limited scroll logs help distinguish repeated remote events from continued scrolling inside an application.
    • Windows: startup requests administrator privileges through the normal UAC prompt, so elevated desktop programs do not require a separate trip to Settings.
    • Settings and Devices pages drop r
  4. v0.9.12MyKVM v0.9.122026-07-16 · 2026-07-16 09:16 UTC
    查看更新说明

    What's new

    Fixed

    • Keyboard, mouse, and clipboard could fail to connect between machines — the QUIC handshake rejected the peer with invalid peer certificate: BadSignature. The transport now pins the device's advertised certificate directly instead of running brittle chain validation over a self-signed certificate, which fixes cross-platform (macOS ↔ Windows) handshakes.

    Downloads

    • macOS: download the .dmg, then drag MyKVM to Applications. The .app.tar.gz file is for automatic updates only.
    • Windows: download the .exe installer.
    • Linux: download the AppImage, .deb, or .rpm package.
  5. betaMyKVM batepre-release2026-07-04 · 2026-07-04 09:12 UTC
    查看更新说明

    Current build: v0.9.15-beta.116 Source: https://github.com/XxMinor/mykvm/commit/f55cb8239e064bda7ca4e8061556fc1b60584038

    What's new

    Added

    • App Updates offers Stable and Beta (bate) channels. The selected channel is saved and also applies to remote client update requests.
    • Per-device reverse scrolling: Devices → Device settings → Reverse scroll direction changes both scroll axes for that remote device, independently of macOS natural scrolling or MOS (discussion #29).
    • Device settings use a modal form. Pointer and scroll speeds are saved together; pairing and removal actions are grouped inside the form.
    • Folder transfers preserve nested directories and empty folders. Windows native drags include directory descriptors; ordinary transfers unpack into the receiving folder. New folder and file-clipboard protocols require both peers to be updated.
    • Rich clipboard sharing includes HTML and RTF with a plain-text fallback.
    • File clipboard paste transfers selected files/folders without requiring network file shares. Active transfer toasts have a Cancel button.
    • Manually added peers keep their selected connection IP, including after pairing, rediscovery, and address changes (#26).
    • Drag-and-drop files across machines (ShareMouse-style, experimental): drag files on the machine that owns the keyboard and mouse onto a controlled machine. Controlling Windows → Mac: drag files toward the screen edge that borders the Mac — a document icon follows the cursor onto the Mac, and releasing over an open Finder folder drops the files there (otherwise the Desktop). Controlling Mac → Windows client is also in. Requires file transfer to be enabled in Settings, and both sides on this version or newer.
    • Drag files the other way too — from a controlled machine back to the controller. While controlling a Mac from Windows, grab a file on the Mac and drag it back across the edge onto Windows: it becomes a real native drag on Windows that you can drop into any folder, app, or field. Requires both sides on this version or newer.
    • Fetch the other machine's log from Settings → Diagnostics: a server pulls its online clients' logs ("Fetch Client Log"), a client pulls its server's ("Fetch Server Log"). The log lands in Downloads/MyKVM Remote Logs, so troubleshooting no longer means copying files between machines. Requires both sides on this version or newer.
    • Update a client from the controller: in Devices, a client running an older version shows "Update available" and an Update button. The client installs the release its own updater finds (still verified against its update key) and restarts, so a machine without its own keyboard and mouse never needs one for an update. Requires the client on this version or newer.
    • Media keys — volume up/down, mute, play/pause, next and previous — reach the machine you are controlling, in both directions.
    • Per-device pointer and scroll speed: on the controller, each added device in Devices has its own pointer (0.5×–2×) and scroll (0.5×–3×) speed.
    • Lock sync (Settings, off by default): locking the controller locks its online clients too. Only locking is synced; each computer unlocks with its own password.
    • Windows clients offer the unattended-control service once when it is not installed; it is what keeps a client controllable before sign-in and while MyKVM restarts for an update.

    Fixed

    • A controlled device whose IP address changed (for example macOS rotating its private Wi-Fi address) no longer ignores mouse, keyboard, clipboard, file, and diagnostic requests from its paired controller.
    • Windows: cursor recentering counts as a live mouse-hook callback, preventing unnecessary hook reinstalls while controlling an idle remote screen.
    • Success banners such as remote client update requests close automatically after five seconds and include a Close button.
    • Windows: input-service actions have the same spacing below the local information grid as other settings controls and wrap on narrower windows.
    • mac

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    MyKVM

    One keyboard, one mouse, one clipboard — shared across your Mac and Windows machines on the same LAN.

    Move your cursor off the edge of one screen and it lands on the next machine. Your keyboard follows, and the clipboard (text and images) syncs automatically. No KVM hardware, no cables.

    Linux builds are available, but Linux keyboard/mouse capture and injection are not implemented yet (#11, #31).

    Download Stars Forks Platforms License: MIT LINUX DO XQAPI

    中文说明

    MyKVM tour

    Screenshots

    Display layoutDevicesSettings
    LayoutDevicesSettings

    Quick Start

    1. Install on both machines. Download the installer for each OS from the latest release.
    2. Pick roles. On the machine whose keyboard and mouse you want to share, open MyKVM and keep Server mode (the default). On the other machine, open MyKVM and switch to Client mode in Settings.
    3. Connect. On the same LAN the two find each other automatically. Otherwise open Devices, type the other machine's IP (optionally IP:port), and click Add. Only devices that report their screen info join the layout.
    4. Arrange screens. Open Layout and drag the monitors so their touching edges match how they sit on your desk.
    5. Cross over. Push the cursor past a shared edge — it moves to the other machine. The keyboard follows, and copy/paste works in both directions.

    Permissions

    • macOS (server). Grant MyKVM both Accessibility and Input Monitoring under System Settings → Privacy & Security. These are required to capture and inject keyboard/mouse input. Signed builds keep the grant across updates; if it ever drops, toggle it off and on.
    • macOS first launch. Builds are free self-signed (not Apple-notarized), so Gatekeeper warns the first time. Right-click the app → Open → Open to allow it once.
    • Windows. No special permission for normal use. Run as Administrator only if you need to control elevated/admin windows.
    • Linux. If you use the AppImage, mark it executable (chmod +x).

    Limitations

    • Trusted LAN only. Pairing codes and paired certificate binding are supported; discovery remains plaintext. Do not expose the ports to public or untrusted networks.
    • Input and clipboard ride an encrypted QUIC/TLS connection pinned to the peer's advertised certificate, but MyKVM is a prototype and is not hardened for hostile networks.
    • Clipboard sharing supports text, images, HTML and RTF through one sync switch. File/folder transfers are limited to 2 GiB.
    • macOS builds are self-signed, not notarized — expect a Gatekeeper prompt on first open.
    • Experimental software: the protocol and behavior may change between versions.

    Features

    • Runs in Server or Client mode.
    • Windows installed builds request administrator permission at startup. Approve the UAC prompt to start sharing; login launches preserve their tray-only behavior.
    • Windows shortcut handling keeps physical modifiers separate from device key state. Start/stop and screen switches release logical keys, so holding Alt permits repeated switches and releasing it restores ordinary arrow input. Existing bindings pause during shortcut recording.
    • Discovers nearby peers on the LAN.
    • Supports manual peer connection by host or IP.
    • Detects local displays and lets you arrange multi-monitor layouts.
    • Shares keyboard and mouse input over an encrypted QUIC connection.
    • Syncs text, images and rich clipboard formats over the same encrypted connection.
    • With Clipboard Sync and File Transfer enabled on both Windows/macOS peers, copied files and folders transfer automatically. Wait for the transfer to finish, then paste normally in Explorer or Finder (up to 64 selections; 2 GiB per file/folder).
    • Device pointer speed, scroll speed, and reverse scrolling are configured in Devices → Device settings. The existing quick start/stop shortcut remains the way to pause sharing; separate input protection and lock shortcuts have been removed.
    • Clipboard sync automatically shares copied content; it has no separate mode or paste-shortcut controls.
    • Folder transfers keep nested and empty directories and can be cancelled. Both peers must be updated. Linux native X11/Wayland input is not implemented yet.
    • Provides light, dark, and system theme modes.
    • Includes English and Simplified Chinese UI.
    • Supports tray behavior for hiding and restoring the main window.
    • Checks GitHub Releases and updates itself in place.

    Current Status

    MyKVM is an experimental early release. It is useful for local testing and iteration, but it is not hardened for untrusted networks. See the Releases page for the current version and installers.

    • License: MIT
    • Default ports: UDP 47833 (discovery) and UDP 47834 (QUIC transport)
    • Clipboard payload caps: 256 KB text, 32 MB image
    • Transport security: input and clipboard run over a TLS 1.3 (QUIC) connection pinned to the peer's advertised certificate
    • Security model: trusted LAN prototype
    • Not yet included: fully authenticated discovery and production transport hardening for untrusted networks

    Do not expose the transport ports to public or untrusted networks.

    Protocol

    MyKVM runs two channels. LAN discovery uses a plain UDP port; input and clipboard run over an encrypted QUIC connection on a second UDP port.

    ChannelDefault portTransportMarkerPurpose
    DiscoveryUDP 47833UDP datagramsmykvm.discovery.v1LAN discovery, peer probe/reply, host info, and display metadata
    InputUDP 47834QUIC datagramsmykvm.input.v1Mouse movement, mouse buttons, scroll, and keyboard events (low latency, loss tolerant)
    ClipboardUDP 47834QUIC streamsmykvm.clipboard.v1Clipboard text and image sync (reliable, ordered)

    The discovery port is configurable in Settings (default UDP 47833); the QUIC transport port defaults to the discovery port + 1 (UDP 47834). Both auto-fall-back through nearby ports if a port is taken, and can use a system-selected port if needed. Peers advertise their active discovery port, QUIC port, transport public key, and protocol version, so discovered and manually added devices connect to the right port and pin the right certificate.

    The QUIC connection is TLS 1.3 encrypted: each peer generates a self-signed certificate at startup and advertises it during discovery, and the connecting side pins that certificate, so input and clipboard traffic is encrypted and bound to the advertised peer. Discovery itself is still plaintext and unauthenticated, so keep MyKVM on a trusted LAN.

    Requirements

    • Node.js 22+
    • Rust stable
    • Platform desktop toolchain:
      • Windows: Microsoft C++ Build Tools
      • macOS: Xcode Command Line Tools
      • Linux: WebKitGTK and appindicator development packages

    Development

    Install dependencies:

    npm install
    

    Run the web UI:

    npm run dev
    

    Run the Tauri desktop app:

    npm run tauri:dev
    

    Build without bundling installers:

    npm run tauri:build
    

    Build desktop bundles:

    npm run tauri:bundle
    

    Platform Helpers

    Windows:

    powershell -ExecutionPolicy Bypass -File .\scripts\check-dev-env.ps1
    powershell -ExecutionPolicy Bypass -File .\scripts\run-tauri-dev.ps1
    

    macOS and Linux:

    sh scripts/check-dev-env.sh
    sh scripts/run-tauri-dev.sh
    

    macOS input capture and injection require Accessibility and Input Monitoring permissions in System Settings.

    Verification

    Run these before opening a pull request or cutting a release:

    npm run build
    npm run lint
    cargo check --manifest-path src-tauri/Cargo.toml
    

    Release

    Git itself only stores and pushes source history. GitHub Actions does the actual packaging on GitHub-hosted runners.

    The release workflow watches pushes to main:

    • feat: publishes the next minor version, such as v0.1.0 to v0.2.0.
    • fix: publishes the next patch version, such as v0.1.0 to v0.1.1.
    • Other prefixes run normal checks but do not publish a release.
    • If no release tag exists yet, the first feat: or fix: push publishes v0.1.0.

    Release notes come from the ## [Unreleased] section of CHANGELOG.md (user-facing wording), falling back to filtered commit subjects. Keep that section up to date as you land changes.

    Example:

    git commit -m "feat: initial desktop release"
    git push origin main
    

    The workflow creates the git tag, builds macOS, Windows, and Linux bundles, then publishes a GitHub Release with the generated installers.

    Project Layout

    PathPurpose
    src/App.tsxMain React desktop console
    src/desktopApi.tsFrontend bridge to Tauri commands
    src/layout.tsDisplay layout transforms and adjacency logic
    src/runtime.tsRuntime status types
    src-tauri/src/lib.rsTauri commands, UDP discovery, clipboard sync, app state, and performance sampling
    src-tauri/src/input.rsInput capture, forwarding, and injection runtime
    src-tauri/src/quic_transport.rsEncrypted QUIC transport (input datagrams, clipboard streams) with certificate pinning
    scripts/Development and build helper scripts

    Contributing

    Issues and pull requests are welcome. Keep changes focused, document behavior that affects the protocol, and verify both the web build and the Tauri backend when touching shared runtime code.

    See CONTRIBUTING.md for commit prefixes and versioning notes.

    License

    MIT. See LICENSE.