An open-source DIY distraction-free writing device that reimagines the typewriter, with build guides across multiple hardware revisions.
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:Synergy
Universal 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
Update the apt package index on Debian/Ubuntu
apt update - 2
Install the build dependencies on Debian/Ubuntu
apt install build-essential cmake gcc-arm-none-eabi libnewlib-arm-none-eabi python3 - 3
Configure the build directory with CMake
cmake -S . -B build - 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
Open-source board that replaces the circuit board in a classic Casio F-91W watch, letting you run your own programs on your wrist.
A compact, pocket-sized digital camera built on a Raspberry Pi Zero, designed to be 3D printed and assembled from off-the-shelf parts.
Low-cost, Raspberry Pi-based camera device that detects green plants in images to trigger spot spraying of weeds.
Open source SDKs and firmware for building your own Muse gadgets on ESP32 boards and Linux devices like Raspberry Pi.
A minimal C11 LLM inference engine that runs 1B-class LLaMA-architecture GGUF models on low-cost boards with about 45MB RAM, with no dependencies.