Repolode
hrvach

hrvach/deskhop

Hardware KVM switch built on two Raspberry Pi Pico boards that shares one keyboard and mouse across two computers, with mouse-edge switching.

Open-source alternative to:SynergyUniversal Control

Stars
7,948
Forks
312
Open issues
113
Last commit
last month

What is it?

DeskHop is a DIY hardware device that lets one keyboard and mouse control two computers. It sits between the peripherals and the computers, and forwards input to whichever machine is active. Switching happens either with a keyboard hotkey or by dragging the mouse pointer off the edge of one screen onto the other, and the keyboard follows the mouse.

The device is built from two Raspberry Pi Pico boards connected over UART and separated by a digital isolator, with optional PCB and 3D-printed snap-fit case. The firmware is written in C and built with CMake, and it includes a local web configuration page that is loaded through a USB drive mode and uses WebHID. Each computer needs no extra software, and the project states it works with Linux, macOS and Windows.

The project also includes several extras: a slow-mouse mode, switch and screen locks, a gaming mode that uses relative mouse input, a screensaver, and keyboard LED feedback that shows the active output. Known limitations include Windows multi-monitor support and untested compatibility with many devices.

Key features

  • 01Switches keyboard and mouse between two computers via a hotkey or by moving the mouse across screens.
  • 02Requires no software on the connected computers.
  • 03Works with Linux, macOS and Windows, including mixed setups.
  • 04Uses galvanic isolation between the two outputs.
  • 05Stores LED state per computer and provides a web-based configuration page.
  • 06Includes a 3D-printable snap-fit case and open-source hardware design.

Use cases

  • Sharing one keyboard and mouse between a work and personal computer on the same desk.
  • Controlling a Linux machine and a Mac or Windows PC with one set of peripherals.
  • Building a low-cost DIY KVM switch from Raspberry Pi Pico boards.

Quick start

  1. 1

    Update the apt package index on Debian/Ubuntu

    apt update
  2. 2

    Install the build dependencies on Debian/Ubuntu

    apt install build-essential cmake gcc-arm-none-eabi libnewlib-arm-none-eabi python3
  3. 3

    Configure the build directory with CMake

    cmake -S . -B build
  4. 4

    Build the firmware with CMake

    cmake --build build

Things to know

  • Requires two Raspberry Pi Pico boards and a hand-soldered circuit or a 3D-printed case, so it is hardware work, not just software.
  • The README's install instructions only cover Debian/Ubuntu; other systems need their own toolchain setup.
  • Licensed under GPL-3.0, a copyleft license that requires derivative works to remain open source.

In collections

Topics

FAQ

What is deskhop?
Hardware KVM switch built on two Raspberry Pi Pico boards that shares one keyboard and mouse across two computers, with mouse-edge switching. DeskHop is a DIY hardware device that lets one keyboard and mouse control two computers. It sits between the peripherals and the computers, and forwards input to whichever machine is active. Switching happens either with a keyboard hotkey or by dragging the mouse pointer off the edge of one screen onto the other, and the keyboard follows the mouse.
Is deskhop free to use? What license does it have?
deskhop is open source under the GPL-3.0 license. Check the license terms before using it in commercial products.
Is deskhop still maintained?
Updated within 6 months. The last commit to deskhop was on Sep 28, 2026.
What can I use deskhop for?
Sharing one keyboard and mouse between a work and personal computer on the same desk. Controlling a Linux machine and a Mac or Windows PC with one set of peripherals. Building a low-cost DIY KVM switch from Raspberry Pi Pico boards.
How do I install deskhop?
Update the apt package index on Debian/Ubuntu: apt update Install the build dependencies on Debian/Ubuntu: apt install build-essential cmake gcc-arm-none-eabi libnewlib-arm-none-eabi python3 Configure the build directory with CMake: cmake -S . -B build Build the firmware with CMake: cmake --build build
Where can I get deskhop?
The source code and installation instructions are on GitHub: https://github.com/hrvach/deskhop

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects