6 points par GN⁺ 2023-12-28 | 1 commentaires | Partager sur WhatsApp

DeskHop - bascule rapide entre bureaux

  • Gratuit et open source
  • Presque aucune latence lors du basculement
  • Possibilité de basculer en faisant glisser le pointeur de la souris d’un ordinateur à l’autre
  • Aucune installation logicielle nécessaire
  • Utilise des composants bon marché et faciles à trouver (moins de 15 euros)
  • Boîtier à clips imprimable en 3D
  • Isolation galvanique complète entre les sorties
  • Fonctionne sur Linux, macOS et Windows

Principe de fonctionnement

  • L’appareil sert d’intermédiaire entre le clavier/la souris et les ordinateurs, tout en maintenant simultanément la connexion avec les deux machines
  • Il décide vers quel ordinateur transmettre la souris et les frappes au clavier selon le choix de l’utilisateur
  • Lorsque la souris est glissée vers un autre bureau, le clavier bascule automatiquement lui aussi

Souris

  • Modifie le descripteur de rapport HID de la souris pour utiliser des coordonnées absolues, et accumule en interne les rapports de souris (déplacements relatifs) afin de conserver une position précise
  • Lorsqu’on tente de sortir de la zone de l’écran dans la direction d’un autre moniteur, il conserve la coordonnée Y, remplace le X maximal par le X minimal, puis bascule la sortie
  • Le curseur apparaît à la même hauteur sur l’autre moniteur, ce qui rend la transition fluide et intuitive

Clavier

  • En tant qu’hôte USB, il interroge périodiquement le clavier et recherche des raccourcis prédéfinis (comme Caps Lock) afin d’envoyer les caractères vers l’autre sortie
  • Il réutilise les LED du clavier pour fournir un retour visuel indiquant quelle sortie est active
  • Il mémorise l’état des LED de chaque ordinateur afin de reprendre le travail exactement dans l’état précédent

Utilisation d’images précompilées

  • Des images précompilées sont disponibles
  • Branchez la carte Pico dans l’emplacement A du PCB et maintenez le bouton de la carte enfoncé pendant le branchement du câble : elle apparaîtra alors comme un lecteur USB sur le système
  • Copiez le fichier board_A.uf2 correspondant, puis répétez l’opération pour B

Mise à niveau du firmware

  • Option 1 : ouvrez le boîtier, maintenez le bouton de chaque Pico enfoncé pendant son branchement, puis copiez le bon fichier uf2
  • Option 2 : utilisez une combinaison de touches spécifique (Right Shift, P, H, X, Left Shift) pour passer en mode BOOTSEL et faire basculer les Pico en mode de mise à niveau du bootloader

Autres fonctionnalités

  • Quand un ajustement très fin de la souris est nécessaire, déplacer la souris en maintenant Right ALT ralentit fortement sa vitesse, ce qui permet un travail de précision

Matériel

  • Le circuit est peu coûteux (4,10 euros par unité), peut être soudé à la main et repose sur deux cartes Raspberry Pi Pico, généralement en stock chez la plupart des fournisseurs
  • Les Pico sont reliés en UART à l’aide d’un isolateur numérique double canal Analog Devices ADuM1201 (~3 euros)
  • Grâce à un projet remarquable qui implémente l’USB en utilisant la magie des programmable I/O du RP2040, l’appareil peut fonctionner à la fois comme hôte USB et comme périphérique USB

PCB

  • Pour garder le montage DIY aussi simple que possible, les pistes sont placées sur une seule face et le nombre de composants est réduit au minimum
  • Les lignes différentielles USB D+/D- doivent avoir la même longueur, mais elles sont volontairement légèrement asymétriques afin de compenser sur le PCB du PICO lui-même la différence de longueur des pistes GPIO correspondantes et d’obtenir une longueur totale identique

Boîtier

  • N’étant pas expert en modélisation 3D, le boîtier reste simple et basique, mais il remplit son rôle
  • Il est facile à imprimer, utilise environ 33 g de filament et peut être terminé en quelques heures
  • Le mouvement horizontal du PCB est bloqué par des broches traversant les trous, et le mouvement vertical par des ergots à clips sur les côtés, ce qui évite d’avoir besoin de vis
  • Le connecteur micro USB dépasse sur le côté du boîtier, donc un trou légèrement plus grand permet d’y faire passer le câble
  • Le couvercle adopte un design à clips, avec une fente pour tournevis permettant de l’ouvrir
  • Les marquages sur le dessus sont en creux, ce qui permet d’améliorer le contraste avec un crayon cire ou autre finition similaire (ou de les laisser tels quels)

Liste du matériel

  • 2 Raspberry Pi Pico, 1 ADuM1201BRZ, 2 condensateurs SMD 1206 100nF, 2 connecteurs USB-A pour PCB, 2 headers 2.54 1x03
  • Prix total : 11,53 euros
  • Pour les connecteurs USB-A, vous pouvez utiliser le Molex MX-67643-0910 ou une alternative moins chère partageant les mêmes dimensions
  • Étapes supplémentaires : fabrication du PCB (Gerber fourni, JLC peut le produire pour quelques dollars, choisir une épaisseur de 1,6 mm), impression 3D du boîtier (fichiers stl fournis, environ 33 g de filament nécessaires)

FAQ

  1. Est-ce que ça fonctionne avec seulement deux Pico, sans PCB ni isolateur ?
    • L’isolateur est recommandé, mais cela peut fonctionner sans.
  2. Que se passe-t-il si les moniteurs ont des résolutions différentes ?
    • Le déplacement de la souris s’effectue dans un espace de coordonnées abstrait, et c’est l’ordinateur qui calcule la correspondance avec l’écran physique, donc cela devrait fonctionner sans problème.
  3. Où peut-on acheter ce produit ?
    • Il n’est pas commercialisé ; c’est un projet personnel non commercial réalisé comme loisir.
  4. Quand l’écran actif change avec la souris, le clavier suit-il aussi (et inversement) ?
    • Oui, il a été conçu pour fonctionner comme s’il s’agissait d’un seul ordinateur.
  5. Est-ce que cela fonctionne avec un dongle combo clavier/souris comme le récepteur Logitech Unifying ?
    • Dans la version actuelle, non, car elle suppose que la souris est branchée sur un port différent. Il faudrait étudier le fonctionnement du récepteur Logitech Unifying et implémenter une prise en charge.
  6. Est-ce que cela fonctionne avec une souris et un clavier sans fil disposant chacun de leur propre récepteur ?
    • Ce cas n’a pas été testé, donc des problèmes inattendus peuvent survenir, mais en théorie cela devrait fonctionner directement.

Inconvénients

  • Attention : pour utiliser cette fonctionnalité, les deux ordinateurs doivent être connectés et allumés (chaque carte est alimentée par l’ordinateur auquel elle est connectée).
  • Le code a besoin de nettoyage, de refactorisation, etc.
  • Des bugs et comportements étranges surviennent parfois.
  • Le projet n’a pas été testé avec une grande variété de périphériques, donc il est difficile de savoir comment il se comportera avec votre matériel.
  • Pico-PIO-USB a été patché pour prendre en charge le contrôle des LED du clavier, alors que cela est normalement géré par TinyUSB en mode hôte.

Clause de non-responsabilité

  • Toute personne qui tente ce projet doit comprendre et reconnaître qu’elle est seule responsable de toute blessure, tout dommage ou toute autre conséquence.
  • La sécurité est importante ; il est donc essentiel de prendre les précautions nécessaires et d’assumer la responsabilité de son propre bien-être tout au long du projet.
  • Évitez les décharges électriques, les brûlures, le stress ou la colère, et prenez plaisir à fabriquer et à utiliser ce projet.

Avis de GN⁺ :

  • Cet article peut être très utile pour les personnes qui utilisent deux ordinateurs. Il est particulièrement attractif pour ceux qui veulent partager un seul clavier et une seule souris tout en améliorant leur efficacité de travail.
  • Le fait que ce soit open source et basé sur une approche DIY en fait un projet intéressant pour les personnes attirées par la technique. Les utilisateurs peuvent adapter et améliorer le système selon leurs besoins.
  • Ce projet illustre l’esprit d’innovation d’une communauté qui cherche à résoudre des problèmes techniques. En partageant leur solution et leur démarche, les utilisateurs permettent aussi à d’autres d’en bénéficier.

1 commentaires

 
GN⁺ 2023-12-28
Avis Hacker News
  • Il est remarquable que la détection des bords fonctionne sans logiciel client.

    • Pour faire passer le curseur de la souris d’un écran à l’autre comme par magie, le descripteur de rapport HID de la souris est modifié pour utiliser des coordonnées absolues, et les rapports de mouvement relatifs reçus de la souris sont accumulés en interne afin de conserver une position précise.
    • Cela fonctionne de manière similaire à SynergyKM/Barrier, mais sans nécessiter de fonction presse-papiers ni de logiciel client.
  • J’utilise la solution logicielle Synergy depuis plus d’une dizaine d’années. Le basculement est instantané via le Wi‑Fi, et cela fonctionne aussi entre Windows/Mac/Linux.

  • Il m’arrive d’essayer de déplacer précisément le curseur à un endroit donné sur YouTube, mais la souris est tellement sensible que je dois bouger la main avec énormément de précaution.

    • Sur YouTube, même sans matériel personnalisé, on peut avancer image par image dans la vidéo avec les touches virgule (,) et point (.).
  • Sous Windows, on peut utiliser un outil appelé Mouse Without Borders, développé par Microsoft Garage et désormais intégré à Windows PowerToys.

  • Inspiré par d’autres projets similaires, quelqu’un a créé sa propre version.

    • Un programme s’exécute sur un bureau Linux et reçoit les événements d’entrée via le sous-système d’entrée Linux (evdev). Lorsqu’une touche spécifique est pressée, il consomme tous les événements et les envoie à un RPI Pico via USB série. En appuyant à nouveau sur la touche, il repasse en mode d’écoute passive.
    • Le RPI Pico est programmé pour convertir les événements Linux evdev en événements USB HID et les envoyer à un autre PC Windows.
    • Le résultat est un commutateur KM permettant de basculer instantanément entre un PC Linux et un PC exécutant l’OS de son choix.
    • En tant que débutant en matériel, cette personne pense que c’est un bon projet d’initiation pour d’autres débutants, puisqu’il ne nécessite que 2 fils.
  • J’ai acheté 4 hubs USB pour basculer le clavier et la souris, mais la plupart des appareils étaient tellement mauvais que je devais physiquement débrancher le hub plusieurs fois par jour.

    • J’utilise le logiciel Synergy et il fonctionne bien, mais je voudrais un vrai KVM qui gère aussi la webcam, le micro, l’audio, etc.
    • Les utilisateurs de KVM méritent clairement mieux.
  • L’un des gros inconvénients de l’utilisation d’un switch USB 3.0 pour basculer les entrées souris et clavier entre deux PC.

    • Pendant une réunion Teams, si mon nom est mentionné ou si je reçois un message, je me retrouve soudain à chercher le bouton pour renvoyer les entrées vers le PC où Teams est en cours d’exécution.
    • J’avais envisagé de connecter un ESP32 ou un Rpi Pico W à la broche du bouton du switch USB et de basculer les entrées entre les deux machines via un endpoint HTTP, mais j’ai abandonné faute de trouver un moyen de déterminer quelle entrée était active.
  • J’utilise actuellement un switch KVM, et comme le basculement prend 2 à 3 secondes, je me connecte le plus souvent à l’autre ordinateur en SSH pour utiliser une session tmux.

  • C’est une avancée impressionnante.

    • En tant qu’utilisateur ayant depuis longtemps une configuration de bureau avec des machines Lin-Mac-Win disposées de gauche à droite, ce type d’installation est devenu plus simple à mesure que les designs SoC se sont répandus ces dernières années.
    • La configuration actuelle se compose de deux clones de Mac mini Ryzen SoC à 250 $ pièce venus directement de Shenzhen, ainsi que d’un MBP M1.
    • Il est regrettable de voir l’univers autrefois florissant des solutions KVM open source dégénérer en cauchemar récursif de forks, au point qu’il est devenu difficile d’obtenir un KVM logiciel open source multiplateforme fonctionnel et gratuit.
    • La configuration actuelle utilise un bon vieux switch KVM, mais devoir appuyer sur un bouton reste pénible.
  • Synergy résout bien ce problème par logiciel seul. Ce n’est ni gratuit ni open source, mais c’est relativement abordable.