6 Punkte von GN⁺ 2023-12-28 | 1 Kommentare | Auf WhatsApp teilen
  • DeskHop ist ein Open-Source-Hardwareprojekt, das beim Teilen von Tastatur und Maus zwischen zwei Computern das Eingabeziel schnell per Tastenkürzel und Mauszeigerbewegung statt über einen USB-Schalter mit Knopf umschaltet
  • Das Gerät fungiert zwischen Tastatur/Maus und den beiden Computern als USB Host/Device, hält beide Verbindungen gleichzeitig aktiv und leitet Mausbewegungen sowie Tastatureingaben an den ausgewählten Ausgang weiter
  • Die Mausumschaltung setzt den HID-Report-Descriptor auf absolute Koordinaten um und akkumuliert intern weiterhin relative Bewegungen, sodass der Cursor beim Überschreiten des Bildschirmrands auf dem anderen Computer auf derselben Höhe erscheint
  • Zu den Hauptmerkmalen gehören keine spürbare Latenz, keine Softwareinstallation, Unterstützung für Linux/macOS/Windows, Bauteile für unter 15 €, ein 3D-druckbares Gehäuse und galvanische Trennung zwischen den Ausgängen
  • Die Einschränkungen sind ebenfalls klar: Seit Windows 10 KB5003637 gibt es Probleme mit absoluten Koordinaten bei mehreren Bildschirmen, bei macOS ist für Multi-Monitor-Setups ein experimenteller Workaround nötig, und die Kompatibilität mit High-End-Tastaturen, Mäusen mit vielen Tasten und verschiedenen Geräten ist nicht garantiert

Ein Hardware-Switch für den schnellen Wechsel zwischen zwei Computern

  • DeskHop entstand aus dem Anwendungsfall, täglich zwei Computer zu nutzen und dabei eine Tastatur/Maus gemeinsam zu verwenden
  • Herkömmliche USB-Switching-Boxen brauchen Zeit zum Umschalten, und das Suchen nach dem Knopf ist unpraktisch – dieses Problem soll gelöst werden
  • Das gewünschte Verhalten ist zweierlei
    • Umschalten des Ausgangs per Tastenkürzel
    • automatisches Umschalten, wenn der Mauszeiger zwischen den Monitoren hinübergezogen wird
  • Das System ist so entworfen, dass es auch zwischen Computern mit unterschiedlichen Betriebssystemen funktioniert
  • Ein User Manual ist verfügbar

Hauptfunktionen

  • Vollständig kostenlos und Open Source und mit Open-Source-Hardware-Zertifizierung
  • Keine wahrnehmbare Verzögerung beim Umschalten
  • Der Mauszeiger kann zwischen den Computern hinübergezogen werden
  • Es muss keine zusätzliche Software auf den Computern installiert werden
  • Die Bauteilkosten werden mit unter 15 € angegeben
  • Verwendet ein 3D-druckbares Snap-Fit-Gehäuse
  • Bietet vollständige galvanische Trennung zwischen den Ausgängen
  • Läuft unter Linux, macOS und Windows

Funktionsweise

  • Das Gerät arbeitet als Zwischengerät zwischen Tastatur/Maus und den Computern
  • Die Verbindungen zu beiden Computern werden gleichzeitig aufgebaut und aufrechterhalten
  • Je nach aktuellem Auswahlstatus entscheidet es, an welchen Computer Mausbewegungen und Tastatureingaben weitergeleitet werden
  • Die Tastatur folgt der Maus, und die Maus folgt auch dem Umschaltstatus der Tastatur
    • Wird die Maus auf den anderen Desktop gezogen, wechselt auch das Ziel der Tastatureingaben

Umsetzung der Mausumschaltung

  • Um das Gefühl zu erzeugen, dass sich der Mauszeiger zwischen Bildschirmen bewegt, wird der HID-Report-Descriptor auf absolute Koordinaten umgestellt
  • Die eigentlichen Maus-Reports kommen weiterhin als relative Bewegungen an, die im Gerät akkumuliert werden, um die aktuelle Position zu verwalten
  • Soll der aktuelle Bildschirmbereich in Richtung des anderen Monitors verlassen werden, bleibt die Y-Koordinate erhalten, die X-Koordinate wird auf den gegenüberliegenden Rand gesetzt und dann der Ausgang umgeschaltet
  • Dadurch erscheint der Cursor auf dem Bildschirm des anderen Computers auf derselben Höhe, was den Wechsel natürlich wirken lässt
  • Der eigentliche Wechsel erfolgt in dem Moment, in dem der Pfeil auf einer Seite stoppt und der auf der anderen Seite zu laufen beginnt

Tastaturumschaltung und LED-Status

  • Das Gerät arbeitet als USB Host und fragt die Tastatur periodisch ab
  • Wenn im HID-Report ein vorkonfiguriertes Tastenkürzel gefunden wird, werden nachfolgende Zeichen an den anderen Ausgang gesendet
    • Ein Beispiel ist Ctrl + Caps Lock
  • Um anzuzeigen, welcher Ausgang verwendet wird, können die Tastatur-LEDs zweckentfremdet werden
  • Da der LED-Status für jeden Computer gespeichert wird, kann der vorherige Zustand unverändert fortgeführt werden

Build und Firmware-Updates

  • Um Versionskonflikte und Pfadprobleme zu verringern und große SDK-Downloads zu vermeiden, sind minimales pico sdk und tinyusb mit enthalten
  • Unter Debian/Ubuntu müssen build-essential, cmake, gcc-arm-none-eabi, libnewlib-arm-none-eabi, python3 installiert werden
  • Der Standard-Build erfolgt mit folgenden Befehlen
    • cmake -S . -B build
    • cmake --build build
  • Es gibt auch einen reproduzierbaren Build mit Docker
    • docker-compose -f misc/docker.yml run --rm build_container
  • Alternativ können pre-built images verwendet werden
    • Ab Version 0.6 wird ein einziges universelles Image bereitgestellt
    • Die .uf2-Datei wird auf das Gerät kopiert

Firmware-Upgrade

  • Option 1: Ab Firmware 0.6 gelangt man mit left ctrl + right shift + c + o in den config mode
    • Das Gerät auf der Seite mit angeschlossener Tastatur startet neu und erscheint als USB-Laufwerk mit dem Namen DESKHOP
    • Nach dem Kopieren der .uf2-Datei werden Image-Prüfung, Flashen und Neustart durchgeführt; anschließend folgt auch das Upgrade des anderen Boards
    • Dieses Laufwerk ist kein normales USB-Speichergerät und kann nicht zum Kopieren beliebiger Dateien verwendet werden
  • Option 2: Mit dem ROM-Bootloader verbindet man jedes Pico bei gedrückter Board-Taste und kopiert die .uf2 auf das erscheinende Flash-Laufwerk
  • Option 3: In Debug-Builds, die mit DH_DEBUG_CDC_FLASH=ON gebaut wurden, kann per CDC-Seriellbefehl in den Bootloader-Modus gewechselt werden
    • echo -n 'flash' > /dev/tty.usbmodem11104

Zusatzfunktionen

  • Mouse slowdown

    • Mit right CTRL + right ALT wird der langsame Mausmodus umgeschaltet
    • Die Zeigergeschwindigkeit wird stark reduziert, wenn eine präzise Positionierung nötig ist
  • Switch Lock

    • Mit RIGHT CTRL + K wird auf dem aktuellen Bildschirm fixiert
    • Verhindert versehentliches Wechseln auf einen anderen Bildschirm
  • Lock Both Screens

    • Mit RIGHT CTRL + L können beide Computer gleichzeitig gesperrt werden
    • Dafür muss das Betriebssystem jedes Ausgangs konfiguriert werden
  • Gaming Mode

    • Umschalten mit LEFT CTRL + RIGHT SHIFT + G
    • Das System bleibt auf dem aktuellen Bildschirm fixiert, und die Maus verhält sich wie eine Standardmaus mit relativen Koordinaten
    • Dieser Modus ist für Spiele, virtuelle Maschinen und derzeit nicht unterstützte Betriebssysteme gedacht, die nicht gut mit dem absoluten Mausmodus funktionieren
  • Screensaver

    • Standardmäßig deaktiviert
    • Wenn aktiviert, springt der Mauszeiger nach einer Zeit ohne Aktivität wie ein Pong-Ball über den Bildschirm
    • Sobald Eingaben an diesen Bildschirm gesendet werden, wird die Funktion automatisch deaktiviert

Hardwareaufbau

  • Die Schaltung basiert auf zwei Raspberry Pi Pico-Boards
    • Der Pico wurde gewählt, weil er mit 4,10 € pro Stück günstig, von Hand lötbar und leicht verfügbar ist
  • Die beiden Picos sind per UART verbunden
  • Beide Seiten sind durch digitale Isolatoren getrennt
    • Analog Devices ADuM1201 kostet etwa 3 €
    • TI ISO7721DR kostet etwa 1,5 € und wird bevorzugt, weil er günstiger, schneller und pinkompatibel ist
  • Der RP2040 unterstützt von Haus aus kein Dual-USB, aber mit Pico-PIO-USB wird USB per PIO umgesetzt, sodass sowohl USB Host als auch Device möglich sind

PCB und Gehäuse

  • Um DIY-Fertigung zu erleichtern, liegen die PCB-Traces auf einer Seite und die Zahl der Bauteile wurde minimiert
  • USB-D+/D--Differenzleitungen sollten grundsätzlich gleich lang sein; hier wurden sie jedoch absichtlich leicht asymmetrisch ausgelegt, um die unterschiedlichen GPIO-Trace-Längen auf dem Pico-PCB zu kompensieren
  • Das Ziel für die differentielle Impedanz liegt bei 90 Ω, tatsächlich wurden etwa 107 Ω erreicht
  • Die PCB-Dicke wurde passend zum Snap-Fit-Gehäuse auf 1,6 mm ausgelegt
  • PCB v1.1 ergänzt gegenüber v1.0 Folgendes
    • ESD-Schutz TPD4E1U06DBVR
    • VBUS-Kondensatoren für Tastatur-/Mausanschlüsse
    • Richtungshinweise im Silkscreen
    • Bohrungen und verbesserte Ausrichtung für Klon-Boards mit vorgelöteten Headern
    • USB-27-Ω-Widerstände
  • v1.1 ist wegen des kleinen TVS-ICs und der 0805-Widerstände per Hand etwas schwieriger zu löten
  • Das Gehäuse ist unter case verfügbar, benötigt etwa 33 g Filament und lässt sich in wenigen Stunden drucken
  • Es wird ohne Schrauben per Snap-Fit geschlossen; der Deckel hat einen Schlitz, der sich mit einem Schraubendreher öffnen lässt

Kosten und Bauteile

  • Die Gesamtsumme der PCB-v1.1-BOM wird mit 11,22 € angegeben
  • Die wichtigsten Teile sind
    • 2× Raspberry Pi Pico: 8,20 €
    • 2× USB-A-PCB-Steckverbinder: 0,40 €
    • 1× TI ISO7721DR: 1,40 €
    • 2× 100-nF-Kondensator: 0,18 €
    • 4× 27-Ω-Widerstand: 0,12 €
    • 2× TPD4E1U06DBVR: 0,62 €
    • 2× 4.7uF-Kondensator: 0,14 €
    • 2× 2.54mm-1x03-Header: 0,16 €
  • Zusätzlich ist eine PCB-Fertigung erforderlich; Gerber wird bereitgestellt
  • Auch STL-Dateien für den 3D-Druck sind verfügbar

Tastenkürzel und Konfiguration

  • Die wichtigsten Tastenkürzel ab Firmware 0.68 sind
    • Left Ctrl + Right Shift + C + O: config mode starten
    • Right Shift + F12 + D: Flash-Konfiguration löschen
    • Right Shift + F12 + Y: Offset für die Bildschirmumschaltung speichern
    • Right CTRL + Right ALT: langsamen Mausmodus umschalten
    • Right CTRL + K: Wechsel des Maus-Desktops sperren/entsperren
    • Right CTRL + L: beide Ausgänge gleichzeitig sperren
    • Left CTRL + Right Shift + G: gaming mode umschalten
    • Left CTRL + Right Shift + S: Screensaver aktivieren
    • Left CTRL + Right Shift + X: Screensaver deaktivieren
    • Left CTRL + Caps Lock: Ausgang umschalten
  • Da einige Tastaturen gleichzeitige Eingaben beider Shift-Tasten nicht korrekt senden, wurden die Tastenkürzel geändert

Web-Konfigurationsmodus

  • Ab Firmware 0.6 wurde ein verbesserter configuration mode eingeführt
  • Mit Left Ctrl + Right Shift + C + O startet das Gerät neu und wechselt in den Konfigurationsmodus
  • Ein USB-Laufwerk namens DESKHOP erscheint; darin befindet sich genau eine Datei: config.htm
  • Diese Datei muss in Chromium oder Chrome geöffnet werden
    • Firefox wird derzeit nicht unterstützt, da dort WebHID bewusst nicht implementiert wird
  • Nach Erteilen der Verbindungsfreigabe können Optionen gesetzt und gespeichert werden; sie werden dann auf das Gerät geschrieben
  • Statt einer Online-Konfigurationsseite wird bewusst ein lokaler Datei-Ansatz verwendet, weil das Laden von JavaScript zur Interaktion mit Eingabegeräten von einer beliebigen Online-Quelle ein potenzielles Sicherheitsrisiko darstellt
  • Die Konfigurations-Webseite nutzt wegen begrenzten Speicherplatzes ein Verfahren zur Selbstentpackung; der vollständige Quellcode ist im Repository enthalten

Sicherheits- und Schutzdesign

  • Es gibt keine Funktion für Copy/Paste oder Informationsaustausch zwischen den Systemen
    • Das ist eine absichtliche Einschränkung, um Datenabfluss zu verhindern
  • Es gibt keine eingehenden Verbindungen von den Ausgaberechnern
    • Die einzige Ausnahme sind standardmäßige Tastatur-LED-Ein/Aus-Nachrichten, begrenzt auf 1 Byte Daten
  • Ein Firmware-Upgrade kann nicht von den Ausgaberechnern ausgelöst werden
    • Erlaubt ist nur eine explizite Benutzeraktion per speziellem Tastenkürzel
  • Benutzerdefinierte Endpunkte angeschlossener Tastaturen/Mäuse werden nicht offengelegt und Informationen daraus nicht an das Gerät weitergereicht
  • Es werden keine Eingabeprotokolle gespeichert
  • Das Gerät erzeugt nicht eigenständig Tastendrücke
    • Ausgegeben wird nur, was der Benutzer eingibt oder explizit auslöst
  • Die Ausgänge sind physisch getrennt und nutzen galvanische Trennung mit mindestens 2 kV Isolationsspannung
  • Pakete zwischen den Geräten haben feste Länge, und die übertragenen Konfigurationsoptionen sind auf eine kurze Liste begrenzt
  • Es gibt kein Bluetooth, kein Wi‑Fi, kein Netzwerk und keinen Internetzugang
  • Verbundene Computer werden unter keinen Umständen als vertrauenswürdig angesehen
  • Der Konfigurationsmodus wird nach einer Zeit ohne Aktivität automatisch beendet
  • Der Code wird Open Source und ohne Binary Blobs bereitgestellt

FAQ und Kompatibilität

  • Das System kann auch nur mit zwei Picos ohne PCB und Isolatoren funktionieren, empfohlen wird jedoch die Verwendung von Isolatoren
  • Auch bei unterschiedlichen Monitorauflösungen sollte die Mausbewegung funktionieren, da sie in einem abstrakten Koordinatenraum verarbeitet und dann vom Computer dem physischen Bildschirm zugeordnet wird
  • Es handelt sich nicht um ein Verkaufsprodukt, sondern um ein privates, nicht kommerzielles Hobbyprojekt
  • Es gibt ein Update, dass bei Elecrow PCB, bestückte PCB und komplette Geräte ab Stückzahl 1 bestellt werden können
    • Laut Nutzerberichten kommen die Boards leer an und die Firmware muss selbst aufgespielt werden
  • Tastatur-/Maus-Kombodongles wie Logitech Unifying werden nach jüngsten Firmware-Updates besser unterstützt
  • Drahtlose Maus und Tastatur mit separatem Funkempfänger funktionieren; eine Anker-Funkmaus wurde erfolgreich getestet
  • Bei Build-Problemen hilft das Troubleshooting Wiki

Software-Alternativen

Bekannte Einschränkungen und Pläne

  • Seit Windows 10 KB5003637 ist das Verhalten von HID-Absolutkoordinaten gestört, sodass unter Windows nicht mehr als ein Bildschirm genutzt werden kann
    • Die Maus bleibt auf dem Hauptbildschirm; ein experimenteller Workaround existiert, und an einem besseren wird gearbeitet
  • Der Code braucht Aufräumen und Refactoring
  • Es wurde nicht ausreichend auf einer Vielzahl von Geräten getestet, daher ist nicht garantiert, dass die Hardware sofort überall funktioniert
  • Bei High-End-Tastaturen mit Drehreglern, Zusatztasten oder Slidern kann diese zusätzliche Hardware möglicherweise nicht funktionieren
  • Bei modernen Mäusen mit sehr vielen Tasten verhalten sich einige Tasten möglicherweise nicht wie erwartet
  • Das System funktioniert nur, wenn beide Computer verbunden sind und USB-Strom liefern
    • Jedes Board wird vom jeweils angeschlossenen Computer versorgt
  • macOS hat Probleme mit zwei oder mehr Bildschirmen; die neueste Firmware bietet dafür einen experimentellen Workaround
  • Geplante Funktionen sind bessere Workarounds für Multi-Monitor unter Windows/macOS, transparent/gaming mode, Unterstützung für mehr als zwei Ausgänge und Verbesserungen der Konfigurations-UI
  • Außerdem ist eine Lite-Version in Arbeit, die die Grundfunktionen nur mit einem einzelnen Pico W bietet
  • Das Maus-Polling kann derzeit mit 1000 Hz laufen

1 Kommentare

 
GN⁺ 2023-12-28
Hacker-News-Kommentare
  • Gut ist, dass sich der Bildschirmrand ohne Client-Software erkennen lässt
    Dafür wird der Maus-HID-Report-Descriptor auf absolute Koordinaten umgestellt, damit der Mauszeiger natürlich auf den anderen Bildschirm übergehen kann, während die tatsächlich als relative Bewegung eingehenden Maus-Reports intern aufsummiert werden, um die exakte Position beizubehalten
    Dadurch verhält es sich wie synergykm / Barrier ohne Clipboard-Funktion und ohne Client-Software

    • Besonders gut ist, dass die Computer nicht per Netzwerk verbunden sein müssen
    • Ich frage mich, ob es komplett kaputtgeht, wenn der Cursor nicht von der Maus, sondern durch etwas anderes bewegt wird
      Zum Beispiel durch Automatisierungs-Skripte oder durch Spiele, die den Cursor in der Bildschirmmitte festhalten
  • Auf YouTube kann man Videos auch ohne zusätzliche Hardware mit den Tasten , und . framegenau bewegen

    • Schön wäre, wenn es auch für Android eine Lösung gäbe
      Auf Touch-Oberflächen präzise Auswahl über einen Slider zu machen, ist wirklich miserabel
    • Bewegungen zwischen 30 Sekunden und 1 Frame sind nicht möglich
    • Ich halte heutige Mäuse für sehr präzise und zuverlässig, deshalb frage ich mich, welche Maus jemand benutzt, wenn er beim Scrollen die Luft anhalten muss
    • mpv verwendet dieselben Shortcuts
      Ich weiß nicht, wer zuerst da war, aber ich habe es in mpv kennengelernt und dann auf YouTube zufällig ausprobiert, wo es ebenfalls funktioniert hat
  • Unter Windows kann man Mouse Without Borders verwenden, entwickelt von Microsoft Garage und inzwischen Teil von Windows PowerToys
    Links:
    https://www.microsoft.com/en-us/garage/profiles/mouse-without-borders
    https://github.com/microsoft/PowerToys

    • Barrier ist ein von Synergy abgespaltenes plattformübergreifendes Open-Source-Projekt und funktioniert auch ohne zusätzliche Hardware ziemlich gut
      Wie ich gerade sehe, wird es allerdings nicht mehr gepflegt; der Nachfolger ist Input Leap
      https://github.com/debauchee/barrier
      https://github.com/input-leap/input-leap
    • Ich habe es früher benutzt, und es hat wirklich gut funktioniert
      Besonders das Kopieren per Drag-and-drop von Dateien zwischen Computern wurde dadurch einfacher
  • Ich habe gleich vier USB-Hubs gekauft, um Tastatur und Maus umzuschalten, aber die meisten Geräte sind so schlecht, dass sie nur nerven
    Mehrmals am Tag muss ich den Hub physisch ab- und wieder anstecken, und mit angeschlossener Webcam oder USB-Mikrofon wird es noch schlimmer
    Ich nutze Synergy zwar gern, brauche aber ein richtiges KVM, das auch Webcam, Mikrofon und Audio ordentlich handhaben kann und per Tastatur-Shortcut nur das Bündel verbundener Geräte umschaltet
    KVM-Nutzer werden eindeutig nicht ausreichend bedient

    • Die beste Konfiguration war bei der Arbeit eher zufällig ein im BenQ-32-Zoll-4K-Monitor integriertes KVM
      Jedem DisplayPort-Eingang ist ein USB-Port zugeordnet, und USB-C übernimmt Peripherie, Display-Eingang und sogar eine ziemlich ordentliche Stromversorgung
      Umgeschaltet wird mit einem kleinen Schalter auf dem Schreibtisch; selbst bei nicht ausgewähltem Eingang wirkt es für den Monitor so, als bestünde die Verbindung weiter, sodass Windows nicht neu arrangieren muss und es nicht zum Flackern kommt, wodurch das Umschalten deutlich schneller und flüssiger ist
    • Ich würde gern Tastatur, Maus und Monitor zwischen einem PC und einem MacBook teilen, aber ein KVM für DP+USB auf der einen und Thunderbolt auf der anderen Seite scheint es nicht zu geben
      Das wirkt wie ein häufiger Anwendungsfall, daher ist es schade
      Man könnte es zwar zuerst über ein Dock herausführen, aber ich nutze einen Monitor mit hoher Auflösung, sodass die meisten Docks überfordert sind oder nur 30 Hz unterstützen
    • Ich habe kürzlich Dells 32-Zoll-6K-Monitor gekauft; dort sind ein Thunderbolt-4-Hub und ein KVM integriert, und es funktioniert perfekt
      Der Mac wird über ein einziges Thunderbolt-4-Kabel angeschlossen, der PC per HDMI 2.1 und USB3 10Gbps als Upstream
      Am Monitor hängen Ethernet sowie Tastatur und Maus, und per Shortcut oder Monitor-OSD wird auf das richtige Gerät umgeschaltet
      Mit der PIP-Funktion lassen sich beide Geräte auch gleichzeitig anzeigen
    • Ich bin mit dem tesmart Dual-DP-4-Port-KVM sehr zufrieden
      Die Einschränkung ist, dass es nur einen USB-2-Host-Controller gibt, weshalb sich manche schnellen Geräte wie bestimmte Webcams nur schwer umschalten lassen
      Wenn man Apple-Geräte einbinden muss, braucht man am Mac zwei physische USB3-Kabel, um zwei Display-Kanäle zu unterscheiden, weil Apple MST nicht mag
    • Das ATEN USB-KVM nimmt praktisch alles an
      Ich stecke dort auch USB-Laufwerke an, um Dateien schnell zu übertragen; wenn ein Gerät per USB-Strom läuft, funktioniert es im Allgemeinen
      Modelle mit USB 3+, DP usw. sind zwar teuer, aber es gibt auch günstige Varianten, die nur USB umschalten
      Ein großer Nachteil ist allerdings, dass einige Mäuse und Tastaturen mit Spezialtasten nicht zu 100 % funktionieren
  • Ich nutze dafür seit über 10 Jahren Synergy
    https://symless.com/synergy und es ist schnell, schaltet selbst über Wi‑Fi sofort um und unterstützt Windows/Mac/Linux

    • Synergy, Barrier und Input Leap sind ziemlich gute Software-Lösungen mit gemeinsamer Herkunft
      Die letzten beiden sind kostenlos und Open Source, und bei Synergy gefällt mir die Art, wie sich die Grenzen zwischen den Geräten konfigurieren lassen
      Allerdings wäre es schön, wenn irgendeine Lösung benutzerdefinierte Monitoranordnungen wirklich gut unterstützen würde
      In meiner Umgebung stehen die Monitore nicht in einer Reihe, und jeder Monitor kann unabhängig auf ein anderes Gerät umschalten, daher wäre es großartig, Grenzen pro Monitor und pro Gerät festlegen zu können, aber so etwas scheint es weder in Software noch in Hardware zu geben
      Ich habe Synergy kürzlich danach gefragt, und man sagte mir, es stehe als beliebte Funktionsanfrage auf der Roadmap; hoffentlich kommt es bald
    • Wenn man auf mehreren Computern unterschiedliche VPNs nutzt, funktioniert Synergy nicht besonders gut, deshalb habe ich ein kommerzielles Gerät gekauft, ähnlich wie das DIY hier, und es funktioniert sehr gut
      Man muss sich nicht erst am Computer anmelden und kann durch Überqueren des Bildschirmrands oder per Tastenkombination umschalten
      Angeschlossene USB-Geräte lassen sich auch unabhängig von Tastatur und Maus umschalten
      Solche Produkte werden auch boundless, borderless oder roaming KM switch genannt
      https://www.cdw.com/product/siig-4-port-roaming-km-switch-wi...
    • ShareMouse ist ebenfalls erwähnenswert: https://www.sharemouse.com/
      Bei mir funktionierte es persönlich deutlich besser als Synergy
      Ich bin umgestiegen, nachdem die Synergy-Entwickler auf jahrealte Bugs nicht reagiert hatten und ich es deshalb nicht mehr nutzen konnte
      Zum Beispiel: https://github.com/symless/synergy-core/issues/5992
      Der Nachteil ist, dass man nach einem Jahr eine „Wartungsverlängerung“ braucht, um weiter Updates zu erhalten, aber auch ohne Verlängerung nutze ich es bisher problemlos
    • Vor ein paar Monaten blieb die Maus auf dem zweiten Computer stehen, und ich brauchte ein paar Minuten, um das zu beheben, weil ich schlicht vergessen hatte, dass Synergy überhaupt läuft
      Als ich nachgesehen habe, stellte sich heraus, dass das Setup seit 4–5 Jahren problemlos funktioniert hatte, und es gehört zu den lohnenderen Fällen von Bezahlsoftware
    • Sieht gut aus, aber es ist schade, dass TLS als Premium-Funktion oberhalb der kostenpflichtigen Standard-SKU eingeordnet ist
      Sicherheit sollte überall Standard und kostenlos sein; sie ist kein Luxus, sondern eine Mindestanforderung
      Wenn ich es aber ausprobiert habe und es gut ist, würde ich wegen der Copy-und-Paste-Funktion trotzdem eine Premium-Lizenz kaufen
  • Es gibt ein Projekt, das von einem ähnlichen Projekt https://github.com/jfedor2/screen-hopper inspiriert wurde
    Meine selbst gebaute Version besteht aus zwei Programmen
    Eines läuft auf einem Linux-Desktop, lauscht auf Eingabeereignisse von evdev, dem Linux-Input-Subsystem, und wenn eine bestimmte Taste gedrückt wird, verbraucht es alle Ereignisse und sendet sie per USB-Seriell an einen RPI Pico
    Drückt man die Taste erneut, kehrt es in den passiven Lauschmodus zurück
    Der RPI Pico wandelt die seriell empfangenen Linux-evdev-Ereignisse in USB-HID-Ereignisse um und sendet sie an einen anderen Windows-PC
    Im Ergebnis ist das ein KM-Switch, der sofort zwischen einem Linux-PC und einem PC mit beliebigem Betriebssystem umschaltet
    Foto der Verkabelung: https://ibb.co/m0zhzgz
    Ich habe noch einen weiteren Pico als USB-Seriell-Adapter verwendet, und als Hardware-Anfänger war es eine große Erleichterung, dass nur 2 Drähte nötig waren
    Beide Programme waren unter 100 Zeilen lang, und es gibt viele Rust-Crates und Python-Pakete, die Linux-evdev belauschen
    Auch die Pico-Seite ist im Wesentlichen eine Schleife mit einem großen switch-Statement, und es gibt ein Rust-Crate zum Senden von USB-HID-Ereignissen
    Mit COBS kann man über die serielle Verbindung senden, ohne sich um Framing kümmern zu müssen
    Wegen eines USB-Seriell-Bugs habe ich es am Ende nicht als Open Source veröffentlicht; nach einem Verbindungsabbruch verband es sich nicht sauber wieder mit dem Linux-Desktop
    Ich weiß nicht, ob es an Linux oder am Pico liegt, und weil ich das Kabel nicht abziehe, nutze ich es bis heute ohne Probleme
    Ich spiele viele FPS-Spiele, deshalb habe ich die Funktion für absolute Koordinaten bewusst weggelassen, und ich habe die Umschalttaste auf eine Seitentaste der Maus gelegt, damit ich das System wechseln kann, ohne die Hand von der Tastatur zu nehmen

    • Wirklich eine großartige Idee
      Ich habe erst gestern vom screen-hopper-Projekt erfahren, und es fühlte sich an wie die Bestätigung der Theorie, dass, egal was man bauen will, es schon jemand Schlaueres gibt, der es bereits besser gebaut hat
      Ich spiele überhaupt nicht, daher wären absolute Koordinaten für mich in Ordnung, aber auf meiner To-do-Liste steht, das konfigurierbar zu machen
    • Der USB-Seriell-Bug könnte sogar ein Grund für die Veröffentlichung sein
      Vielleicht kann man jemanden dazu nerd snipen, sich in die subtilen Details einzugraben, die den Bug verursachen
    • Ich habe viele Vorschläge bekommen, es trotz des Bugs zu veröffentlichen, und an dieser Logik ist etwas dran
      Der Quellcode, so wie er ist, liegt hier: https://github.com/null-dev/picokvm
    • Es wäre schön, wenn du es mit einem Hinweis wie kein Support, Nutzung auf eigene Verantwortung ins Repository stellen könntest
    • Ich denke, es gibt viele, die es selbst mit dem verbleibenden Bug sehen wollen
  • Das Umschalten von Maus- und Tastatureingaben zwischen zwei PCs mit einem USB-3.0-Switch war eine meiner größten Frustrationen
    Wenn in einem Teams-Meeting nicht viel von mir verlangt wurde und dann plötzlich jemand meinen Namen rief oder eine Nachricht schickte, fing ich hektisch an, den Knopf zu suchen, um die Eingabe auf den PC mit Teams zurückzuschalten
    Ich hatte die Idee, ein ESP32 oder Rpi Pico W mit ein paar Optokopplern an die Taster-Pins des USB-Switches zu hängen, einen HTTP-Endpunkt bereitzustellen und die Eingaben per AutoHotkey-Skript und Hotkey zwischen den beiden Geräten umzuschalten
    Ich habe es aber aufgegeben, weil mir keine Methode eingefallen ist, den aktuell aktiven Eingang festzustellen, und diese Lösung gefällt mir

    • Du solltest dir Teams-kompatible Headsets mit Mute-Taste ansehen
      Das Logitech-Headset, das ich von der Firma bekommen habe, hat am Kabel Tasten für Lautstärke, Anruf beenden und Stummschalten, wodurch das Aufheben der Stummschaltung beim Multitasking viel einfacher ist
  • Synergy deckt diesen Anwendungsfall rein softwarebasiert gut ab
    Es ist zwar nicht kostenlos oder Open Source, aber vergleichsweise günstig
    https://symless.com/synergy

    • Bevor Synergy Closed Source wurde, wurde es zu Barrier[0] geforkt, und daraus wiederum zu input-leap[1]
      Beide sind Open Source
      [0] https://github.com/debauchee/barrier
      [1] https://github.com/input-leap/input-leap
    • Synergy hat einen Open-Core-Ansatz, und diese Teile sind unter GPL lizenziert: https://github.com/symless/synergy-core/#License-1-ov-file
      Es gibt auch einen Open-Source-Fork, der von Version 1.9 abgespalten wurde: https://github.com/debauchee/barrier#what-is-it
    • Synergy scheint Bugs zu haben, um die man sich nicht kümmert
      Wenn man zum Beispiel einen macOS-Host nutzt, wird auf Windows-/Linux-Clients für die Berechnung der Cursorposition die macOS-Beschleunigungskurve verwendet, für die tatsächliche Cursorbewegung aber nicht
      Deshalb springt man unbeabsichtigt wieder zurück, wenn man im hostnahen Drittel des Windows-Bildschirms arbeiten will
    • Ich frage mich, ob es brauchbare Vorschläge für die Kombination aus Windows und Android-Tablet gibt
      Es scheint, als würden alle Lösungen nur auf Desktop-Betriebssystemen funktionieren
    • Man sagt: „Nichts ist so nervig wie Synergy, aber alle sind so“
      Keine dieser Technologien ist stabil, und Synergy hat schon mehrfach sogar angeschlossene Tastaturen zum Stillstand gebracht, sodass die Computer erst nach einem Aus- und Einschalten wieder reagierten
  • Wirklich beeindruckend
    Das empfinde ich besonders so, weil ich seit mindestens 20 Jahren ein Desktop-Setup mit Linux-, Mac- und Windows-Boxen von links nach rechts nutze
    Wenn es bei Programmiersprachen Mehrsprachigkeit gibt, dann gibt es bei Hardware ein Multiplattform-Setup
    Zum Glück ist das in den letzten Jahren mit dem Aufkommen von System-on-Chip-(SoC)-Designs einfacher geworden
    Mein aktuelles Setup besteht aus zwei 250-Dollar-Ryzen-SoC-Mac-mini-Klonen aus Shenzhen und einem M1 MBP
    Schade ist, dass die Welt der Open-Source-KVM-Lösungen wie Synergy, die früher robust waren, zu einem rekursiven Albtraum aus Forks geworden ist, sodass es schwer geworden ist, kostenlose, funktionierende plattformübergreifende Open-Source-Software-KVMs zu finden
    Im Moment nutze ich am Ende doch einen klassischen KVM-Switch, aber das Knopfdrücken lenkt ab
    Irgendwann würde ich so etwas gern noch einmal ausprobieren

  • Falls jemand mitmachen will, um daraus ein kommerzielles Produkt zu machen, wäre ich bereit, Kunststoffspritzguss, Marketing, Massenmontage und andere nötige Dinge auf eigene Kosten zu übernehmen
    Meine E-Mail steht im Profil

    • Falls es kommerzialisiert wird, sollte unbedingt der Nachteil gelöst werden, dass es nur funktioniert, wenn beide Computer angeschlossen und eingeschaltet sind
      Für mich wäre das ein Ausschlusskriterium
    • Es gibt bereits kommerzielle Produkte
      Man muss nur nach boundless, borderless oder roaming KM switch suchen