284 comments

[ 3.4 ms ] story [ 273 ms ] thread
Love the intro of the readme.

Also, it may be niche but I had the same thought in the past about this way being the solution for slow switching. Awesome to see someone did all of the work already. Now I just need to find someone selling it on AliExpress so that I won’t even have to lift a finger to have one :D

Synergy works well for this purely in software. Unfortunately it's not free or open source, but it's relatively inexpensive.

https://symless.com/synergy

Prior to Synergy going to closed source, it was forked into Barrier[0], which then was forked into input-leap[1]. Both open source.

[0] https://github.com/debauchee/barrier

[1] https://github.com/input-leap/input-leap

Unfortunately there is no simple way of makeing this work on a Chromebook
Input leap was forked two years ago and the Readme still says "we hope to have a release ready very soon", which doesn't sound very hopeful. Too bad, Synergy was always a very useful project.
I haven’t tried Synergy. barrier and input-leap were useless for me as they don’t capture “ctrl-alt” so my crucial “open a terminal” shortcut always opens it on the primary computer. Maybe Wayland is to blame?
Didn't have any problems with X11 and various computers - so maybe it really is Wayland-specific?
You might have to change the modifier keys on the server config. I have a Linux server and MacOS client, a few minutes trial and error fiddling those settings until I got it all working.
Thanks! I had thought I remembered Synergy being open source. I haven't used it in a while, so it's good to know there's alternatives.
And its new version has been rewritten so that it’s no longer a native app but an Electron web app.
Synergy has some bugs they just don't seem to care about. For instance, if you use a macOS host, the calculation of where your cursor on a Windows/Linux client uses the macOS acceleration curve, but the actual movement of cursors does not. So you end up switching back unintentionally trying to do things on the third of the windows screen closest to your host.
I have a saying “nothing sucks like synergy but they all do”. Not a single one of these technologies is reliable. But synergy is the one that has multiple times made even the connected keyboard stop working to the point where the machine needs to be power cycled to become responsive.
Thing is, I used the old OSS Synergy some 15-20 years ago, across Linux, Windows and I believe OSX as well (although I am not 100% certain about the latter). It worked absolutely flawlessly for several years while I used it and I loved it dearly. Fast forward (I had no need for a software kvm until last year) and I use Barrier now and it barely works. Autostart on Windows doesn't work at all, the installer failed to create certificates so nothing worked until I created them manually and sometimes the keyboard dies completely or exhibits frustrating bugs which only a reboot can solve. It's baffling how this used to work so well and is barely usable 15+ years later.
Totally agree. Back in 2004 I used it daily to bridge between two PCs running on one network, behind a firewall with one running the synergy server and the other the client, and a laptop running the client. Both PCs were under my desk with my laptop and two screens from the PCs on top. I had one keyboard and mouse across three screens powered by three computers and could seamlessly not only move my mouse across all 3, but also copy paste text across too. I believe a newer version (which may never have materialized before it went closed source) was going to have drag n drop across too. It was so easy to work with and remember it very fondly. It was magic stuff.
Turn off clipboard sharing, use a config file, and barrier works well on most systems.

Way too much BS to get it running though.

It works until it doesn't. And clipboard sharing is "essential" to me. Wrt/ clipboard sharing, yes, I could work around not having it available but that's 50% of why I use it in the first place and as I said everything worked absolutely as expected in the olden days. Yet another tech that has only gotten worse over the last decate, similar to the shit show that instant messaging has become. I miss the times where I could run a well-integrated multi-protocol chat client on all of my computers regardless of OS which required basically no RAM or CPU usage to chat with all my contacts regardless of what protocol they used. Now it's mostly Electron crap eye candy taking too much resources by a factor of >100 and way too much screen estate. It's simply not practical anymore. "Things were better before" is in 99% of cases a factually untrue, romanticized view on the past, but sometimes it's objectively true, and in rare cases like IM there are serious negative effects on my personal quality of life that I cannot fix on my end because the system itself is broken.
Any suggestions for Windows & Android (tablet)? All the solutions seem to only work with desktop OSes.
(comment deleted)
The fact that TLS connection encryption is gated behind the $60 edition (vs the $30 personal edition) completely turned me off it. Not a fan of basic security being paywalled.
Does Synergy work with multi monitor setups? I've enjoyed Barrier but it doesn't work when any of the machines have multiple displays so I've ditched it for now.
Synergy works with multi-monitor (for me at least). I've been using it for close to two decades. Outside of the Linux kernel, it is probably the single piece of software I've used the longest.
I use barrier across 4 monitors and three devices, works fine.

Nowadays you have to look at the logs and search through a pile of github issues to find the right solution to make it work, but once it's up it's pretty trouble free.

Only real pain point is clipboard sharing, which works for small clipboards, but, copy too much text and it takes forever to switch.

I bought 4 USB hubs just to switch the keyboard and mouse, it's just so annoying how most devices are so terrible. Randomly you have to physically detach the hub several times a day. If you plug webcams and/or USB mics, it only gets even worse.

I'm using Synergy software and it works well, but I still want a proper KVM that can allow for webcams, mics, audio, etc. Features like moving only a group of plugged devices via keyboard shortcuts.

KVM users are underserved for sure.

> KVM users are underserved for sure.

100%

I want to share keyboard, mouse and monitor between a PC and a MacBook. A KVM with DP+USB on one side and Thunderbolt on the other doesn’t seem to exist.. I feel like this has to be a common use case :(

I know I could break out on a dock first, but I have a particularly high-res monitor which most of the docks baulk at, or only support at 30Hz

I know it's suboptimal, but can't you do the split on the macbook? The TB port should output pure DP, so you plug that on the DP-in on the KVM. You plug a second USB-only cable that goes to the KVM USB in.
Closest I’ve found is manually switching the machine plugged into a TB 4/USB 4 dock (CalDigit TS4), with the cables for each computer being managed when unplugged by a magnetic cable pad[0].

It’s a bit clunky but not too bad once you have a feel for swapping cables and is less flaky than the more affordable KVMs I’ve tried. Gets me a nicer port loadout to share between machines too, and can be expanded to support as many computers as you’ve got space and patience for.

This does however assume all machines involved can handle outputting a display signal via Thunderbolt or USB C. Not too much of an issue with laptops but it’s still unusual for desktop PCs to have their GPUs hooked up to support TB/USB alt modes.

[0]: https://www.amazon.com/dp/B08XYZFM7D

I even got TB4 signal through one of those USB-C "magnetic" adapters [0], I figured that this would shift wear from repeated plugging from the expensive device to a cheap adapter.

Super annoying when you accidentally disconnect and then the entire device tree has to reboot, but on the hub side, accidental disconnect might be much less of a problem (I use it at the laptop side, to dock with different screen setups)

[0] like this, https://www.amazon.com/dp/B0BV7BPVCL/ but ordered from the Chinese site

I'm in the same boat as you. After trying and returning a few KVMs, I found a decent USB-only KVM switch [0] that works with 4K HDR + PD devices (I think it just electronically connects and disconnects cables), it works amazingly with switching between Macs, but my PC GPU doesn't have USB output, just DP. I have bought a Thunderbolt PCI-E card (ASUS ThunderboltEX 4), it worked, but only turned on once Windows has fully booted, so I returned it too. I'm considering buying an USB-C signal muxer [1] but they are a bit too expensive for my liking. I guess there isn't enough market to produce them and sell them at reasonable price - most people, including myself, just accept having to switch video input separately from USB KVM.

[0] https://www.amazon.co.uk/dp/B0BN5D2NXX

[1] https://www.amazon.co.uk/dp/B0732W9DG8

I have a compromise setup but it seems to work ok. Two MacBooks, one pro, both M1.

One is plugged into a TS3+. The other is plugged into a USB-C dock to get Ethernet and a USB-A input, but I don't use the video out. Instead, I run a Thunderbolt to DP cable from a second TB port to the KVM switch.

I use this KVM ordered on Amazon: Cable Matters USB 3.0 KVM Switch DisplayPort 1.4 for 2 Computers with 8K@60Hz

Pros: preserves 5K@60Hz for both machines, switches keyboard, mouse, and a webcam just fine.

Cons: no hot key switching, another remote to lose, no EDID emulation so the computers fall asleep when they're not active, switching takes a bit. Sometimes a machine doesn't wake up when I switch back to it so I have to fiddle with cables, but that's been pretty rare.

I share a mouse and keyboard between pc and mac with a usb switcher.

Two monitors. Both the mac and pc are connected to each monitor. I just switch inputs as needed.

It’s not as good as one button press but heck i can monitor something in both systems if I want

Most monitors have 2-3 inputs. Mine has a desktop, a laptop, and occasionally my phone attached to it, using HDMI, DP, and another DP / USB-C respectively.

Unless you switch really often and want subsecond switching time, three's no need to even use a KVM to switch the monitor.

Even at twice per day switching using monitor controls would drive me nuts. The buttons, the menu, the delays, blanking and disconnects. By then I already forgot why I was even switching
Most of the time the reason for a KVM is wanting to switch the monitor, mouse and keyboard, and possibly other devices (e.g. I want to use the same webcam that remains in the same position) at the same time.

Switching just the monitor isn't really the use case they address.

If you want a proper kvm, see the offering from level1techs/wendell (not affiliated, just a satisfied customer) at https://www.store.level1techs.com/products/hardware

I used one with 4x dual dp switching at home to run desktop with linux, pcie passthrough gaming vm on same machine and my work laptop via a dell thunderbolt dock connected to it.

Works extremely well, with modern features tested for (gsync, high refresh etc etc).

edit: one thing to note is that you need really good quality cables, so don't cheap out

I get how the Linux desktop and the Work Laptop would work in this setup.

But how does the KVM come into play for the Gaming VM when it is on the same host?

It was pci passthrough so the vm had a dedicated gpu, usb controller and nvme drive which I wired to the hardware KVM as extra inputs.

There are other options like https://looking-glass.io/ , but I preferred having this option, which is like having 2 computers if there's enough resources to share to the gaming guest (cpu pinning + huge pages).

(comment deleted)
(comment deleted)
I share two monitors and audio equipment between a desktop and a windows laptop (dell XPS) using a "dumb kvm" that wrangles a few USB outputs and two DisplayPort inputs. the laptop only has USB-C output so it connects to a fancy thunderbolt dock borrowed from a friend which then goes to the KVM. I have a third monitor only connected to the desktop with a laptop stand in front of it for a third screen

It takes a couple seconds to switch but otherwise works flawlessly unlike my previous solution of shitty dongles, switching dual input monitors, and moving a usb hub input cable between machines. I also considered rebuilding the desktop to have a thunderbolt output and buying a thunderbolt switching KVM but I couldnt make it work

desktop - kvm - fancy dock - laptop Full diagram: https://imgur.com/a/ah54fjd

> I want to share keyboard, mouse and monitor between a PC and a MacBook. A KVM with DP+USB on one side and Thunderbolt on the other doesn’t seem to exist.

It does if you use the built-in KVM in a recent Dell Ultrasharp display, and change Thunderbolt to USB-C.

My setup is a MacBook Air plugged into the USB-C port, a Windows PC plugged into the Displayport/USB port. Mouse and keyboard are plugged into the display.

I switch inputs via a StreamDeck. The StreamDeck just sends a key command; on macOS, BetterDisplay handles input switching, and on Windows, the Dell Display Manager app does the job.

Switching is a touch slower than I'd like, but beyond that, it's flawless.

Check out https://www.store.level1techs.com/products/p/kvm-switch-usbc... paired with https://www.store.level1techs.com/products/p/dp-repeater-hdm... for one of your computers - it may do the trick for you. There are other models if you want more monitors or computers (or different set of inputs).

No affiliation with them except that I've got one their KVMs (not an USB-C version, though) myself and it's been quite reliable (only infrequent accidental hiccups, nothing unplugging the power for a second can't solve), much better than my previous pile of hacks juggling monitor inputs via DCI and using USB switches for the peripherals.

The best setup I've found is what I lucked into at work. It's a Benq monitor (32", 4k) that does the KVM itself. There's a couple of Displayport inputs, each if which has a couple of USBs with it, as well as a USB C which is both peripheral and display input (and decent power output). Then there's a little pick on the desk for switching.

The nice thing is that it continually presents a monitor to all the inputs even when they're not being displayed. Means you don't get the flickering as Windows sorts itself out and so a much faster and more seamless switch.

I've been very happy with my tesmart dual DP 4 port KVM. The only limitation I have is that it's only usb 2 host controller, so a lot of higher speed devices like some webcams can't get switched using it.

LAlso if you need Apple products in the mix, you have to use two physical usb3 cables from the mac just to distinguish the two display channels because apple hates MST for reasons (another reason to hate their arbitrary bs).

I have a TESmart and the other problem is that the autoswitch doesn't work with custom keyboards, as the KVM needs to emulate the HID and doesn't like a keyboard that shows as a hub.
I have an ATEN usb KVM that allows anything to be plugged in. I have an USB drive to quickly transfer files but works with anything USB powered. It's expensive if you go for USB 3+, DP, etc but cheaper ones work also just for USB stuff. One big drawback, at least for me, some mice and keyboards that have special keys, do not work 100%.
I recently bought the 32" 6k monitor from Dell. It has its own thunderbolt 4 hub and kvm and it works flawlessly! It gets upstream from my Mac from a single thunderbolt 4 cable and from my PC from an HDMI 2.1 and usb3 10gbps. On the monitor I have connected the Ethernet cable and my keyboard/mouse that switch to the correct machine with a keyboard shortcut or from the monitor osd.

I can even see both machines on my monitor simultaneously using the PiP capability.

Level1Techs does the same thing for DisplayPort if you want fast monitor switching. Just be prepared for the price: https://www.store.level1techs.com/products/p/14-kvm-switch-d...
This doesn’t seem to do the mouse position-triggered switching?
I'm referring to the fact that it maintains an independent connection to each monitor in order to facilitate fast switching. Almost no other DP switches do this.
Is there some documentation about this somewhere? I actually own both level1techs DP 1.4 KVM 4-computer/1 monitor switch and that new USB KM switch, so I'm familiar with their products.. but I'm not aware that their KVM does anything special other than support high response rates (where most KVM's only do 60hz) and passthrough USB properly.
I'm pretty sure I heard it in either an LTT or Gamer's Nexus video - most cheap switches simulate unplugging the cable from one computer and then plugging it into the other, so the monitor has to detect the new computer and negotiate and etc, usually takes a couple seconds for your desktop to appear. The Level1Techs one maintains an independent signal to each computer so that the monitor can start receiving a video stream immediately.
The video in the Readme is well worth watching. I expected some kind of clicking to enable the kvm and switch devices. This is moving your mouse and keypresses across devices instantly. While I like Synergy, a hardware solution would work without much software and potentially much configuration.
I recently had the idea of making similar hardware with ESP32 (some of them has USB hardware). You may lose mouse acceleration, but many do not like this to begin with, so it's fine.

Does absolute mouse work correctly when two systems have very different (total) resolution? For example, one is a laptop with a single screen, and another one is a desktop with three screens.

How does absolute mouse work? The mouse hw just reports delta x/y and has no idea how the corners of your screen map to your desk surface. So it sounds like special hw. or very frequent recalibration of “corners” after moving mouse when machine is off or lifting+moving (which would essentially be what would happen when using it on machine 2)
It is not putting your mouse itself in absolute mode (only graphics tablets really operate in absolute mouse mode). It's just outputting absolute mode reports to the host.

Absolute mouse HID report has a logical/physical min/max, not just delta. Regardless of size of screen, min/max correspond to the boundaries in absolute mode.

So it's just keeping track internally of the incremental relative accumulation of your mouse as you move it, and i assume, when you hit the min/max, swapping screens.

I assume it's reporting a high enough min/max resolution to make this not happen crappily.

The polling rate on mice is usually only 125hz (8ms), so it has plenty of time to handle the input.

Even "gaming" mice are usually only 1000hz (1ms).

I would guess, looking at it, that it takes a few microseconds to handle the mouse moves, max.

As I understand GPIO speed is limited and below usb 2.0 speed if I am not mistaken. So what is the maximum speed of this setup? How ‘gaming” gaming mouse can be?
From a quick google search (to make sure I'm not just stating my memories, but actual facts) the RP2040 can toggle a GPIO at about 66MHz (via its PIOs. Otherwise a bit slower, and using more CPU). USB 1 is 1.5 or 12Mbps, so you should have no issues even if you bit bang it.

Despite the USB protocol overhead, it is plenty even for a gaming mouse. Pretty sure there's no point polling it at above 1 kilohertz or so.

You are talking transfer rate but these are polling in most cases. The gpio can easily handle 1000hz. It can 66 thousand times that speed in fact. The amount of processing they do is negligible and probably amounts to a few microseconds delay at most.

Even with a non polling mouse there would be no point in reading the result more than a thousand times per second. If you move the mouse 3 inches per second (quite fast) and you only process 1000 reports a second you would still achieve a resolution of 0.003 inches.

Absolute mouse "works" in any situation. You are responsible for reporting the physical and logical min/max values for the mouse. The host translates these into screen coordinates.

So if you report the max x/y as 32767, and the current x/y as 32767, the host will translate it to the corner, regardless of size of screen.

> Ever tried to move that YT video slider to a specific position but your mouse moves too jumpy and suddenly you are moving your hand super-carefully like you're 5 and playing "Operation" all over again?

On YouTube specifically, you can scrub through a video frame-by-frame using the , (comma) and . (period) keys, no custom hardware required. :-)

Anything between 30 seconds and 1 frame is impossible.
The J and L keys will skip back and forth 10 seconds.
And left and right 5 secs.
Control left and right for chapters.
I wonder when they added that, I remember wanting it and it not existing when they first rolled out the chapters feature around 2020.
Wow, did not know that. TIL. Thank you!
That's nice. Btw, I'm curious, what kinda mouse do you guys use that makes you hold your breath while you scroll? I believe mice these days are super precise and works pretty well.
Because it's not necessarily the mouse, but us :P
The mouse ain't the problem.

Once I was fast and precise, with sharp close vision. Now I'm not.

Enjoy your capabilities while you have them. Decline awaits us all.

I wish there was a solution for Android. Sliders for fine grained selections are horrible in touch interfaces.
Same on iOS.
At least in Android you can pull the slider up for finer control, though every now and then they tweak how well this works so YMMV
Same on iOS
I doubt there's any Android exclusive feature to apps developed by Google. Sometimes feels like they even prioritise iOS over Android.
"fine grained" is relative, but you can go forwards/backwards 10 seconds in YouTube Android by doubletapping to the left/right of center on a video. If it's paused, doubletap to the left/right of the play button. It should also work on iOS, but I don't have an iPhone so can't confirm.

https://www.majorgeeks.com/content/page/youtube_double_tap.h...

I use iOS and can confirm that double tap on left or right side works to jump forward backward there too. I often use it when I watch a video and I miss what was said so I jump back a bit and watch again.
You can also set the skipping jumps to 5 seconds in the settings
You can pull the slider up for finer control, though every now and then they tweak how well this works so YMMV
I wish we had standardized on “the longer you leave your finger, the finer the control”, but it seems like no one even adds that modality.
Its swipe up while moving the trackbar to go into fine control and down again for coarse.

YT also has Premium Controls whcih is a widget but I think it's experimental and not on mobile yet.

Swipe up only works when:

1. There is enough room. Works fine for media controls where the bar is near the bottom of the screen, but not for sliders in most other places

2. The control is not close enough to the bottom of the screen for swipe up to trigger the multitasking action

There are many other reasons to have fine-grain control for sliders and imo “hold longer for finer control” works in more places than “slide up for finer control”

When is the slider not at the bottom when you want fine-seeking? In cases when its not fullscreen, I don't ever need fine seeking.

It's not really "slide up" its just a very tiny motion, maybe less than 1cm of travel to enable it.

We already have long press and 3D Touch events via the "hold longer" action, which might work, but I've had no real issues with the YT solution.

> When is the slider not at the bottom when you want fine-seeking?

When your slider is not controlling video playback

I'd consider that a different UI component completely.

YT implementation turns the fine-tuning seekbar into a series of thumbnails to help find where you are.

Stuff like this obviously doesn't make sense for controlling something that is not a video.

I do like some tools which let you fine-control slider once you have click-and-held by scrolling the mouse wheel, but no solution here for mobile.

Can't you double click the left or right edges of the video to scroll 5 seconds to the past or future?

This works in my modded old version of the YouTube app; Alphabet might have removed it in newer versions.

Those are the same hotkeys that mpv uses. I don't know who was first, but I knew it from mpv and tried it by accident on YouTube and it worked :D
Seriously, if any VC is reading this, get this man some funding to make it a real project. Even at double or triple what it costs, it's still cheaper than any other commercial competitor.
Not every cool project needs to be a startup.
This. So much this. It's also really cool as a 'niche' project, and felt even approachable to someone like me who hasn't ever done more soldering than his first PS1 and a modchip.
I read some months ago that tinypilotkvm.com is doing JUST fine.

So yeah, sometimes niche markets can be profitable. And it doesn't have to be millions of dollars in VC money obviously to be invested.

If it gets really popular here on hacker news won't be long before chinese devices based on it start appearing. Or if someone is willing to invest $10-20k they could have devices ready to sell in less than 2-3 weeks.
With built-in networking so they can send your keylogs ;-)
> Or if someone is willing to invest $10-20k they could have devices ready to sell in less than 2-3 weeks.

Can you elaborate on this for someone unfamiliar with production? How one come up with the number and such time estimation?

Better make a Kickstarter or similar out of it. Don’t tie yourself to VC money if you can help it.
> All I wanted was a way to use a keyboard shortcut to quickly switch outputs, paired with the ability to do the same by magically moving the mouse pointer between monitors.

Most KVM switches have a keyboard shortcut (mine is scroll lock, scroll lock, 1/2). Mine also supports the mouse based switching but it's unusable because to work it needs to emulate a mouse with zero acceleration. Also this doesn't switch video.

I've had the same idea tbh but the inability to switch video and the software complexity put me off. A KVM switch is better (except the cost).

with all the people switching USB-devices collected here: I also have an USB-switch to handle work/private machines (as well as the odd usually headless VM).

Oddly, there is no delay on switching with Windows. Devices are registered instantly and I can type. Linux needs 1-2 seconds... and I just don't know why. Anyone has an idea what to tune?

Why not use Remote Desktop? I work on multiple computers on one laptop and if your network is fast enough it’s silky smooth. For linux I use VNC and it works well but isn’t as nice as RDP.
In many cases remote desktop is a great solution. However, a hardware based KVM can be preferable for several reasons.

Security: remote desktop requires the machines to be on the same network.

Performance and compatibility: hardware accelerated rendering often does not play nice with remote desktop.

I have used Remote Desktop through private VPNs and have been able to connect to my workstation from cities away and performance has been good enough to do video editing and some 3D work.
Because that doesn't do the same thing. The point is to have two monitors connected to separate machines, and use the same mouse and keyboard to control both of them.
RDP still still like it would be a better solution, one mouse and keyboard for both PCs and not only that you could have both PCs dual screened.
The point is you don't always want both PCs dual screened. I have my setup prepared for both (using Synergy and a KVM switch): Sometimes I need the screens to show each separate machines desktops, but want to be able to quickly switch keyboard/mouse between them. Sometimes I want one machine to occupy both.

For the latter a hardware KVM switch is vastly superior to RDP. For the former, no RDP server/client I know of provides a solution.

I'm still not sold. RDP does all the configs you've mentioned, dual screen, single screen, being able to see both screens at the same time plus there is the very nice feature of being able to copy paste between computers and peripheral passthrough.
I've not seen an RDP client that provides the capabilities you're describing without e.g. having one of the machines control both screens and putting an RDP client full-screened on one of them, and because of the stutter and CPU overhead I get even with a hardwired network connection that's not a viable option.

I'd be overjoyed if there was a reliable way to do this, but it will need to have each machine controlling it's own screen and pass mouse events between them, similar to how synergy does - having one or both of them rendering desktop of the other is way too laggy, even hard-wired.

I also need a solution where I can disconnected either machine at any time without disrupting anything, which rules out a solution where one machine controls both screens, or where the keyboard and mouse is only physically connected to a single machine.

If there are any RDP clients which can work together to pass mouse events between them the way Synergy or this hardware hack does, I'd be overjoyed (but neither will replace my KVM switch for the occasions I want one machine to control both screens)

> plus there is the very nice feature of being able to copy paste between computers and peripheral passthrough.

Synergy also provides the copy-paste (though I'd actually prefer not to be able to, as I use it between a personal and work machine I don't want to pass more than the bare minimum of data between), and the KVM switch provides the peripheral passthrough.

RDP is really great compared to other solutions like VNC or Xserver. Im really sad there is nothing similar for Linux. Anyone?
Good to note that it doesn't require client software to detect edges.

> To get the mouse cursor to magically jump across, the mouse hid report descriptor was changed to use absolute coordinates and then the mouse reports (that still come in relative movements) accumulate internally, keeping the accurate tally on the position.

So it works like synergykm / barrier, without clipboard features and without client software.

Very nice.

Very nice to not require the computers to connect over the network.
This was a concern for me, that is why i've used Synergy over VPN and it worked quite well. It also works on networks where you can't reach the other pc's that way.
I initially used synergy at work between two computers and a coworker teased me about the security implications, so I found it very little effort to pipe over an SSH tunnel
Can you share some info about that? How is it different from synergy business/enterprise where it encrypts your data? (aside from owning the encryption)
I don't know how the business edition works, but how to set up SSH tunnels is easily found on Google search, and you'd just forward the port the server listens on, and connect to localhost on the client on the same port. Very simple, and at least as secure as SSH is proven encryption.
tailscale makes the VPN easy these days.
I doubt the reason for avoiding connection is a technical barrier but rather a security one. For example, I prefer to keep my personal and work laptops completely airgapped.
Yes this is so clever and beautiful. Projects like these are my favorite thing to discover on HN.
Would that completely break down if your cursor is moved by something other than the mouse? (An automation script, a game that locks the cursor to the middle of the screen, etc.)
Is that a common practice in games? What is its purpose? To stop botting?
I think that's to prevent the cursor from hitting the edge of the screen and the player being unable to turn further (though I'm not certian if every game does it this way)
Wow!! Very cool! I tried to use a KVM to switch from my personal macbook, work macbook, and gaming computer.... the hardware was awful, I had just ended up manually switching. The gaming computer had its own keyboard&mouse, so it was just switching the monitor (and there would be horrendous latency).

Anyway, I think this space has tons of low hanging fruit for improvement. And so many KVM products are insanely priced, and they're not even good.

Also how the ADuM1201 works is very cool!

When I worked at Virtu we had all the desks on wheels, pull the plug and roll away. Even better than switching. We moved them around all the time.
Wow. This looks just like what I been wanting for a while.
One of the coolest hack projects I've seen in some time. Looking at the schematics took me back to my electronics technology class, learning the value of heat syncs and accidentally setting amps on fire :,)

Having an accompanying explainer article or video is something I'd pay/donate for, just out of sheer curiosity of the work involved.

Thank you so much for the kind words. I'm hardly an expert but I will try to write something when I find some extra cycles. It was done to fix a problem I was seeing on a daily basis, but then I figured out it might help others (also gave me an excuse to practice kicad and 3d modelling).
This been one of my biggest frustrations - I also use a USB 3.0 switch to toggle mouse & keyboard input between two PCs. I'll be on a teams call meeting where I don't have a lot to say and then someone mentions my name or messages me. I'm suddenly fiddling around looking to find the button to switch inputs back to the PC running teams. I thought about wiring up a ESP32 or Rpi Pico W with couple of optoisolators to the button pins on the USB switch. Then expose a http endpoint to simply toggle inputs between two machines via autohotkey script + keyboard shortcut. Only problem was that I couldn't come up with a way to determine which input is active. So gave up on the idea. But I like this solution.
Have you looked into a headset compatible with Teams that has a mute button? My work provided a Logitech branded headset that has volume, hang up, and mute buttons on the cord, which makes it much easier to unmute myself while multitasking.
Just responding to the clunky and slow switching that is available. I have this wireless DELL mouse+keyboard set that switches quite easily and fast. Supports up to three devices (dongle + 2x BT). Dedicated key for tge switch, wirelss is instant, BT takes roughly 2 seconds.

I can't recommend it though, as the mouse scroll wheel broke pretty quickly, and it's apparently a common problem. Can't "warranty it" individually. I do like the keyboard so far.

Some dell monitors also allow switching video input via keyboard + mouse using the Dell Display Manager utility. You can set custom hotkeys for each input. I have a dell monitor as my daily driver and its my central monitor in a multi display setup simply because of the display input switching capability. Beats having to buy a expensive DisplayPort KVM.
That's pretty interesting, how long does the switch take?
Its about 2 seconds. Although, there is slightly longer delay when switching from a dell laptop connected to the monitor's HDMI input than the PC connected to the displayport input. I suspect it has something to do with the dell laptop going through a thunderbolt4 dock and outputting via HDMI.
I have a similar project inspired by another similar project (https://github.com/jfedor2/screen-hopper).

My own version of this consists of two programs.

One program runs on a Linux desktop and listens to input events from the Linux input subsystem (evdev). When you press a specific key, it will start consuming all events and sending them over USB serial to a RPI Pico. Pressing the key again will toggle back into passive listening mode.

The RPI Pico is programmed to receive Linux evdev events over serial, translate them into USB HID events and send them to another Windows PC.

The end result is a KM switch that switches instantly between a Linux PC and a PC running an OS of your choice.

Epic wiring photo: https://ibb.co/m0zhzgz. I used another Pico as a USB serial adapter.

As a hardware noob, needing only 2 wires was a huge relief and I think this is a great starter project for other hardware noobs.

Both programs were < 100 LOC. There are tons of Rust crates and python packages to listen to Linux evdev. The program on the Pico was quite simple too, basically just a loop with a big switch statement and there are Rust crates to send USB HID events. You can use COBS to send stuff over serial without worrying about framing.

Ultimately I never ended up open sourcing it because of some USB serial bugs (it would not reconnect properly to the Linux desktop after getting disconnected). Not sure if it was because of Linux or the Pico. I still use it, the bugs aren't a problem because I never disconnect the wires.

I also specifically left out the absolute mouse feature since I play a lot of FPS games and it wouldn't work with those. I have the switch key bound to a button on the side of my mouse anyway so I can switch systems without even touching my keyboard.

That's an awesome idea, man. I wish I thought of that.

I learned about about that screen hopper project only yesterday, and it just confirmed my theory - whatever I try to do, somebody smarter than me already made, only better, smoother running and with nicer features :)

I play no games whatsoever so absolute coords would be perfectly fine, but one of the items on the to-do list is to make it configurable.

IMO the hardest part of open source is documentation and packaging so hats off to people like you who take that final step from tinkerer's project to open source! Also props to you for the galvanic isolation and actually designing a circuit lol.

I'm sure there's even more keyboard/mouse switching projects out there, there's just no good acronym or search query to find them. You could search for "KVM" but it's just dominated by PiKVM. We should really standardize on something for the SEO.

Your project is practically an example for Teensy boards. I made this exact gadget 10 years ago :)

Ultimately my friend was explaining his 'mouse jiggler' vbscript and I thought 'how can I make this a hardware version' this led to a design and once you have a design it is easy to query google for design hints at the component level "usb hid microcontroller" "usb passthrough [teensy|arduino]" "usb init host controller [teensy|arduino]" "mouse path [teensy|arduino]" etc etc

I’m trying to grok the absolute coordinate issue.

Does this mean your solution would break if someone was playing a FPS/game?

And is the solution to use relative coordinates but lose the auto transition feature? Meaning that you would have to manually switch?

Many FPS games move the camera by listening to relative mouse movements and moving your camera a corresponding amount, while keeping your cursor hidden and in the center of the screen. Absolute movements cause different issues depending on the particular game.

I am not familiar with HID but I assume there is a way for the computer to provide feedback to the input device about the cursor’s current position. If that’s correct, it could probably be done with relative movements just fine.

I'm not very versed in gaming, so have very little knowledge about what games want. It should be possible to implement a relative mode too and some way to switch between the modes so when working use absolute, when playing use relative.
(comment deleted)
I'm sure people would be interested in seeing it even if it still has bugs
> Ultimately I never ended up open sourcing it because of some USB serial bugs

Shouldn't that be a reason to open source it? Nerdsnipe someone else into figuring out the sublety that's causing the bug!

Would you be willing to throw it into a repo with a warning that it is user-beware with no support?
(comment deleted)
anyway to have this work on a mac and android tablet?
At first glance I thought this was going to be a reinvented Sun Ray!
On Windows, you have the option of using a tool named Mouse Without Borders, which was developed by Microsoft Garage and is now part of Windows PowerToys.

Links:

  - https://www.microsoft.com/en-us/garage/profiles/mouse-without-borders  
  - https://github.com/microsoft/PowerToys
Glad to see it mentioned here. I used it a few years ago and it worked really well.

It makes it especially easy to drag and drop file copies across computers.

How do modern KVMs address OSes thinking an HDMI or USB device is unplugged when switching? I’ve never found a solution that actually works because of this issue.

It seems this only addresses KB/Mouse by keeping them enumerated on the host PCs at all times and just sending no inputs to one. So that feels fairly solved. But what about monitors?

I've found this really depends on the monitor. My Samsung gaming monitor hates this, while the plain Dell ones I have will switch around decently.
Wow this is awesome. I use a KVM switch currently and it takes a solid 2-3 seconds and for that reason I find myself usually just SSH'ing into the other computer and having a tmux session instead.

Excellent work.

I've been using Synergy with my mac and windows desktop, and in the past I've used Input Director between two windows machines. It was good enough to game on LAN parties.