6 Punkte von GN⁺ 2023-12-28 | 1 Kommentare | Auf WhatsApp teilen

DeskHop - schnelle Desktop-Umschaltung

  • Kostenlos und Open Source
  • Beim Umschalten nahezu keine Verzögerung
  • Wechsel durch Ziehen des Mauszeigers zwischen Computern möglich
  • Keine Software-Installation erforderlich
  • Günstige und leicht erhältliche Bauteile (unter 15 Euro)
  • Snap-Fit-Gehäuse, das mit einem 3D-Drucker hergestellt werden kann
  • Vollständige galvanische Trennung zwischen den Ausgängen
  • Funktioniert unter Linux, macOS und Windows

Funktionsweise

  • Das Gerät fungiert als Vermittler zwischen Tastatur/Maus und den Computern und hält gleichzeitig Verbindungen zu zwei Computern aufrecht
  • Je nach Auswahl des Nutzers entscheidet es, an welchen Computer Maus- und Tastatureingaben weitergeleitet werden
  • Wenn die Maus auf den anderen Desktop gezogen wird, wechselt die Tastatur automatisch mit

Maus

  • Der Maus-HID-Report-Descriptor wird so geändert, dass absolute Koordinaten verwendet werden, und die Maus-Reports (relative Bewegung) werden intern akkumuliert, um eine genaue Position beizubehalten
  • Wenn versucht wird, den Monitorbereich in Richtung des anderen Monitors zu verlassen, bleibt die Y-Koordinate erhalten, das maximale X wird durch das minimale X ersetzt und anschließend wird der Ausgang umgeschaltet
  • Der Cursor erscheint auf dem anderen Monitor auf derselben Höhe, wodurch der Wechsel nahtlos wahrgenommen wird

Tastatur

  • Als USB-Host fragt das System die Tastatur regelmäßig ab, sucht nach vordefinierten Tastenkombinationen (z. B. Caps Lock) und leitet Zeichen an den anderen Ausgang weiter
  • Es verwendet die Tastatur-LEDs erneut für Feedback, damit visuell erkennbar ist, welcher Ausgang gerade aktiv ist
  • Der LED-Status jedes Computers wird gespeichert, sodass die Arbeit im vorherigen Zustand fortgesetzt werden kann

Verwendung vorgefertigter Images

  • Vorgefertigte Images können verwendet werden
  • Wenn das Pico-Board in Slot A der PCB gesteckt wird und beim Anschließen des Kabels die Taste auf dem Board gedrückt gehalten wird, erscheint es im System als USB-Laufwerk
  • Die entsprechende Datei board_A.uf2 kopieren und den Vorgang für B wiederholen

Firmware-Upgrade

  • Option 1: Das Gehäuse öffnen und bei gedrückter Taste während des Anschließens jedes Pico die richtige UF2-Datei kopieren
  • Option 2: Mit einer bestimmten Tastenkombination (Right Shift, P, H, X, Left Shift) in den BOOTSEL-Modus wechseln, um die Picos in den Bootloader-Upgrade-Modus zu versetzen

Weitere Funktionen

  • Wenn die Maus feinjustiert werden muss, kann die Maus bei gedrückter Right ALT-Taste bewegt werden; die Mausgeschwindigkeit wird dann deutlich reduziert, um präzise Arbeiten zu ermöglichen

Hardware

  • Die Schaltung ist günstig (4,10 Euro pro Stück), von Hand lötbar und basiert auf zwei Raspberry Pi Pico-Boards, die bei den meisten Anbietern auf Lager sind
  • Die Picos sind über UART verbunden, wobei ein ADuM1201-Digitalisolator mit zwei Kanälen von Analog Devices (~3 Euro) verwendet wird
  • Dank eines bemerkenswerten Projekts, das USB mithilfe der programmierbaren IO-Magie des RP2040 implementiert, kann das System als USB-Host und -Gerät arbeiten

PCB

  • Um den DIY-Bau so einfach wie möglich zu halten, verlaufen die Leiterbahnen nur auf einer Seite und die Anzahl der Bauteile wurde minimal gehalten
  • Die differentiellen USB-D+/D--Leitungen müssen gleich lang sein, sind aber absichtlich leicht asymmetrisch, um den entsprechenden Unterschied der GPIO-Leiterbahnlängen auf der PICO-PCB selbst auszugleichen und so die Gesamtlänge anzugleichen

Gehäuse

  • Da keine besondere Erfahrung mit 3D-Modellierung vorhanden war, ist das Gehäuse schlicht und einfach, erfüllt aber seinen Zweck
  • Es lässt sich leicht drucken, verbraucht etwa 33 g Filament und ist in wenigen Stunden fertig
  • Die horizontale Bewegung der PCB wird durch Pins verhindert, die durch Löcher geführt werden; die vertikale Bewegung wird durch seitliche Snap-Fit-Nasen verhindert, sodass keine Schrauben nötig sind
  • Der Micro-USB-Stecker ragt an der Seite aus dem Gehäuse heraus; bei einer etwas größeren Öffnung passt das Kabel hindurch
  • Der Deckel hat ein Snap-Fit-Design und kann über einen Schraubendreher-Schlitz geöffnet werden
  • Die Markierung auf der Oberseite ist vertieft und kann z. B. mit Wachsmalstiften ausgefüllt werden, um den Kontrast zu erhöhen (oder unverändert bleiben)

Stückliste

  • 2 Raspberry Pi Pico, 1 ADuM1201BRZ, 2 Cap 1206 SMD 100nF, 2 USB-A-PCB-Steckverbinder, 2 Headers 2.54 1x03
  • Gesamtpreis: 11,53 Euro
  • Für den USB-A-Steckverbinder kann der Molex MX-67643-0910 oder eine günstigere Alternative mit denselben Abmessungen verwendet werden
  • Zusätzliche Schritte: PCB-Fertigung (Gerber wird bereitgestellt, JLC fertigt für ein paar Dollar, 1,6 mm Dicke wählen), 3D-Druck des Gehäuses (STL-Datei wird bereitgestellt, etwa 33 g Filament erforderlich)

FAQ

  1. Funktioniert es auch nur mit zwei Pico-Boards ohne PCB und Isolator?
    • Der Isolator wird empfohlen, aber es kann auch ohne funktionieren.
  2. Was passiert, wenn die Monitore unterschiedliche Auflösungen haben?
    • Die Mausbewegung erfolgt in einem abstrakten Koordinatenraum, und der Computer berechnet die Zuordnung zum physischen Bildschirm, daher sollte es problemlos funktionieren.
  3. Wo kann man dieses Produkt kaufen?
    • Es wird nicht verkauft; es handelt sich um ein persönliches, nicht kommerzielles Hobbyprojekt.
  4. Folgt die Tastatur dem per Maus aktivierten Bildschirmwechsel (und umgekehrt)?
    • Ja, es wurde so gebaut, dass es sich wie ein einzelner Computer verhält.
  5. Funktioniert es mit Tastatur-/Maus-Kombidongles wie dem Logitech-Unifying-Receiver?
    • In der aktuellen Version funktioniert das nicht, da angenommen wird, dass die Maus an einem anderen Port angeschlossen ist. Das Verhalten des Logitech-Unifying-Receivers müsste untersucht und Unterstützung implementiert werden.
  6. Funktioniert es mit kabellosen Mäusen und Tastaturen, die jeweils einen eigenen Funkempfänger haben?
    • Das wurde für solche Fälle nicht getestet, daher kann es zu unerwarteten Problemen kommen, theoretisch sollte es aber direkt funktionieren.

Nachteile

  • Achtung: Um diese Funktion zu nutzen, müssen beide Computer angeschlossen und eingeschaltet sein (jedes Board wird vom jeweils angeschlossenen Computer mit Strom versorgt).
  • Der Code muss noch aufgeräumt und refaktoriert werden.
  • Gelegentlich treten Bugs und seltsame Verhaltensweisen auf.
  • Es wurde nicht mit vielen verschiedenen Geräten getestet, daher ist unklar, wie es auf der Hardware der Nutzer funktionieren wird.
  • Pico-PIO-USB wurde gepatcht, um die Steuerung der Tastatur-LEDs zu unterstützen; normalerweise wird das im Host-Modus von TinyUSB verarbeitet.

Haftungsausschluss

  • Wer dieses Projekt ausprobiert, muss verstehen und anerkennen, dass die Verantwortung für alle Verletzungen, Schäden oder sonstigen Folgen bei der eigenen Person liegt.
  • Sicherheit ist wichtig; daher sollten die notwendigen Vorsichtsmaßnahmen getroffen und während des gesamten Projekts Verantwortung für das eigene Wohlergehen übernommen werden.
  • Keinen Stromschlag, keine Verbrennungen, keinen Stress und keinen Ärger riskieren – lieber mit Freude daran arbeiten und Spaß haben.

GN⁺-Meinung:

  • Dieser Artikel kann für Menschen, die zwei Computer verwenden, sehr nützlich sein. Besonders attraktiv ist er für Nutzer, die eine Tastatur und Maus gemeinsam verwenden und dabei ihre Arbeitseffizienz steigern möchten.
  • Der Open-Source- und DIY-Ansatz kann für technikinteressierte Menschen ein spannendes Projekt sein. Nutzer können das System an ihre eigenen Anforderungen anpassen und verbessern.
  • Dieses Projekt zeigt den innovativen Geist einer Community, die technische Probleme lösen will. Indem Nutzer Probleme selbst lösen und den Prozess teilen, können auch andere davon profitieren.

1 Kommentare

 
GN⁺ 2023-12-28
Hacker-News-Kommentare
  • Bemerkenswert ist, dass die Randerkennung auch ohne Client-Software möglich ist.

    • Damit sich der Mauszeiger wie von Zauberhand zwischen den Bildschirmen bewegt, wird der Mouse-HID-Report-Descriptor so geändert, dass absolute Koordinaten verwendet werden; eingehende Maus-Reports mit relativer Bewegung werden intern aufsummiert, um die exakte Position beizubehalten.
    • Funktioniert ähnlich wie SynergyKM/Barrier, benötigt aber weder Clipboard-Funktion noch Client-Software.
  • Ich nutze seit weit über zehn Jahren die Softwarelösung Synergy. Der Wechsel erfolgt sofort über Wi‑Fi und funktioniert auch zwischen Windows/Mac/Linux.

  • Wenn man auf YouTube versucht, den Slider exakt an eine bestimmte Stelle zu bewegen, ist die Maus manchmal so empfindlich, dass man die Hand extrem vorsichtig bewegen muss.

    • Auf YouTube kann man auch ohne spezielle Hardware mit den Tasten Komma (,) und Punkt (.) framegenau durch das Video scrubben.
  • Unter Windows kann man ein Tool namens Mouse Without Borders verwenden, das bei Microsoft Garage entwickelt wurde und inzwischen Teil von Windows PowerToys ist.

  • Inspiriert von anderen ähnlichen Projekten habe ich meine eigene Version gebaut.

    • Ein Programm läuft auf einem Linux-Desktop und empfängt Eingabeereignisse vom Linux-Input-Subsystem (evdev). Wenn eine bestimmte Taste gedrückt wird, verarbeitet es alle Events selbst und sendet sie per USB-Seriell an einen RPI Pico. Wird die Taste erneut gedrückt, wechselt es in einen passiven Listening-Modus.
    • Der RPI Pico ist so programmiert, dass er Linux-evdev-Events in USB-HID-Events umwandelt und an einen anderen Windows-PC sendet.
    • Das Ergebnis ist ein KM-Switch, mit dem man sofort zwischen einem Linux-PC und einem PC mit dem OS seiner Wahl wechseln kann.
    • Als Hardware-Anfänger fand ich dieses Projekt einen guten Einstieg für andere Hardware-Anfänger, weil nur 2 Kabel nötig waren.
  • Ich habe 4 USB-Hubs gekauft, um Tastatur und Maus umzuschalten, aber die meisten Geräte waren so schrecklich, dass ich den Hub mehrmals täglich physisch abziehen musste.

    • Ich nutze Synergy-Software, und sie funktioniert gut, aber ich hätte gern einen vernünftigen KVM, der auch Webcam, Mikrofon, Audio usw. unterstützt.
    • KVM-Nutzer verdienen eindeutig besseren Service.
  • Eine meiner größten Frustrationen ist es, mit einem USB-3.0-Switch Maus- und Tastatureingaben zwischen zwei PCs umzuschalten.

    • Wenn in einem Teams-Call mein Name fällt oder ich eine Nachricht bekomme, suche ich plötzlich hektisch nach dem Knopf, um die Eingabe auf den PC umzuschalten, auf dem Teams läuft.
    • Ich hatte die Idee, einen ESP32 oder Rpi Pico W an den Button-Pin des USB-Switches zu hängen und die Eingabe zwischen zwei Maschinen über einen HTTP-Endpunkt umzuschalten, habe das aber aufgegeben, weil ich keinen Weg gefunden habe festzustellen, welcher Eingang gerade aktiv ist.
  • Ich nutze derzeit einen KVM-Switch, und da das Umschalten 2–3 Sekunden dauert, verbinde ich mich meist per SSH mit dem anderen Rechner und verwende eine tmux-Session.

  • Das ist eine erstaunliche Entwicklung.

    • Als jemand, der lange eine Desktop-Konfiguration mit Lin-Mac-Win-Boxen von links nach rechts genutzt hat, wird so ein Setup dadurch einfacher, dass sich SoC-Designs in den letzten Jahren verbreitet haben.
    • Mein aktuelles Setup besteht aus 2x 250-$-Ryzen-SoC-Mac-mini-Klonen direkt aus Shenzhen und einem M1 MBP.
    • Es ist schade, dass die einst florierende Welt der Open-Source-KVM-Lösungen zu einem rekursiven Albtraum von Forks verkommen ist, in dem es schwer ist, ein kostenloses, plattformübergreifendes Open-Source-Software-KVM zu finden, das einfach funktioniert.
    • Mein aktuelles Setup verwendet einen guten „Oldschool“-KVM-Switch, aber das Drücken des Knopfs stört.
  • Synergy löst dieses Problem softwareseitig sehr gut. Es ist weder kostenlos noch Open Source, aber relativ günstig.