6 points par GN⁺ 2023-12-28 | 1 commentaires | Partager sur WhatsApp
  • DeskHop est un projet matériel open source qui permet, lorsque deux ordinateurs partagent un même clavier/souris, de basculer rapidement la cible d’entrée via des raccourcis clavier et le déplacement du pointeur, au lieu d’utiliser un commutateur USB à bouton
  • L’appareil agit comme USB Host/Device entre le clavier/la souris et les deux ordinateurs, maintient simultanément les deux connexions, puis transmet les mouvements de souris et les frappes vers la sortie sélectionnée
  • La bascule de la souris repose sur la conversion du descripteur de rapport HID en coordonnées absolues et sur l’accumulation interne des déplacements relatifs, afin que le curseur apparaisse à la même hauteur sur l’écran de l’autre ordinateur lorsqu’il franchit le bord de l’écran
  • Principales caractéristiques : aucune latence perceptible, aucune installation logicielle, prise en charge de Linux/macOS/Windows, composants à moins de 15 €, boîtier imprimable en 3D, isolation galvanique entre les sorties
  • Les limites sont aussi claires : problème de coordonnées absolues en multi-écran sous Windows 10 après KB5003637, contournement expérimental nécessaire pour le multi-écran sur macOS, et compatibilité non garantie avec les claviers avancés, les souris à nombreux boutons et divers périphériques

Un commutateur matériel pour passer rapidement d’un ordinateur à l’autre

  • DeskHop est né d’un cas d’usage : utiliser quotidiennement deux ordinateurs tout en partageant un seul clavier/souris
  • Le projet vise à résoudre les limites des boîtiers de commutation USB classiques, trop lents au changement et peu pratiques lorsqu’il faut chercher le bouton
  • Deux comportements sont recherchés
    • basculer la sortie via un raccourci clavier
    • basculer automatiquement en faisant glisser le pointeur de la souris d’un moniteur à l’autre
  • Il est conçu pour fonctionner entre des ordinateurs utilisant des systèmes d’exploitation différents
  • Un User Manual est fourni

Principales fonctionnalités

  • Entièrement gratuit et open source, avec une certification Open Source Hardware
  • Aucun délai perceptible lors du basculement
  • Possibilité de faire glisser le pointeur de la souris d’un ordinateur à l’autre
  • Aucune installation de logiciel supplémentaire sur les ordinateurs
  • Coût des composants annoncé à moins de 15 €
  • Utilise un boîtier encliquetable imprimable en 3D
  • Offre une isolation galvanique complète entre les sorties
  • Fonctionne sous Linux, macOS et Windows

Fonctionnement

  • L’appareil fonctionne comme un intermédiaire entre le clavier/la souris et les ordinateurs
  • Il établit et maintient simultanément les connexions avec les deux ordinateurs
  • Selon l’état sélectionné, il décide vers quel ordinateur transmettre les mouvements de souris et les frappes clavier
  • Le clavier suit la souris, et la souris suit aussi l’état de bascule du clavier
    • si la souris est déplacée vers l’autre bureau, la cible des entrées clavier bascule également

Mise en œuvre de la bascule de la souris

  • Pour donner l’impression que le curseur passe d’un écran à l’autre, le descripteur de rapport HID est converti en mode coordonnées absolues
  • Les rapports réels de la souris restent en déplacements relatifs, qui sont cumulés à l’intérieur de l’appareil afin de suivre la position actuelle
  • Lorsqu’on tente de sortir de la zone de l’écran courant en direction de l’autre moniteur, la coordonnée Y est conservée, la coordonnée X est placée sur la bordure opposée, puis la sortie est basculée
  • De cette manière, le curseur apparaît à la même hauteur sur l’écran de l’autre ordinateur, ce qui rend la transition naturelle
  • Le basculement réel se produit au moment où la flèche d’un côté s’arrête et où celle de l’autre commence à bouger

Bascule clavier et état des LED

  • L’appareil fonctionne en USB Host et interroge périodiquement le clavier
  • Lorsqu’il détecte dans le rapport HID un raccourci prédéfini, il envoie ensuite les caractères vers l’autre sortie
    • exemple d’usage : Ctrl + Caps Lock
  • Les LED du clavier peuvent être réutilisées pour indiquer quelle sortie est active
  • Comme l’état des LED est mémorisé pour chaque ordinateur, il peut être restauré tel quel

Build et mise à jour du firmware

  • Pour réduire les problèmes de versions et de chemins, et éviter de gros téléchargements de SDK, un minimum de pico sdk et tinyusb est inclus
  • Sous Debian/Ubuntu, il faut installer build-essential, cmake, gcc-arm-none-eabi, libnewlib-arm-none-eabi, python3
  • Le build par défaut s’effectue avec les commandes suivantes
    • cmake -S . -B build
    • cmake --build build
  • Un build reproductible via Docker est également proposé
    • docker-compose -f misc/docker.yml run --rm build_container
  • Il est aussi possible d’utiliser des pre-built images
    • à partir de la version 0.6, une image universelle unique est fournie
    • il suffit de copier le fichier .uf2 sur l’appareil

Méthodes de mise à niveau du firmware

  • Option 1 : avec le firmware 0.6 ou supérieur, entrer en mode configuration avec left ctrl + right shift + c + o
    • l’appareil auquel le clavier est connecté redémarre et apparaît comme un lecteur USB nommé DESKHOP
    • en copiant le fichier .uf2, l’image est validée, flashée puis l’appareil redémarre ; la mise à niveau de l’autre carte suit ensuite
    • ce lecteur n’est pas un périphérique de stockage USB classique et ne peut pas être utilisé pour copier des fichiers ordinaires
  • Option 2 : utiliser le bootloader ROM en branchant chaque Pico tout en maintenant son bouton de carte enfoncé, puis copier le .uf2 sur le lecteur flash qui apparaît
  • Option 3 : dans un build debug compilé avec DH_DEBUG_CDC_FLASH=ON, il est possible d’entrer en mode bootloader via une commande série CDC
    • echo -n 'flash' > /dev/tty.usbmodem11104

Fonctions supplémentaires

  • Mouse slowdown

    • active/désactive le mode souris lente avec right CTRL + right ALT
    • réduit fortement la vitesse du pointeur pour un positionnement précis
  • Switch Lock

    • verrouille sur l’écran actuel avec RIGHT CTRL + K
    • évite de passer accidentellement sur l’autre écran
  • Lock Both Screens

    • permet de verrouiller simultanément les deux ordinateurs avec RIGHT CTRL + L
    • nécessite de configurer le système d’exploitation de chaque sortie
  • Gaming Mode

    • active/désactive avec LEFT CTRL + RIGHT SHIFT + G
    • verrouille sur l’écran actuel et fait fonctionner la souris comme une souris standard en coordonnées relatives
    • ce mode sert pour les jeux, les machines virtuelles ou les systèmes d’exploitation non encore pris en charge qui ne s’accordent pas avec le mode souris absolu
  • Screensaver

    • désactivé par défaut
    • une fois activé, après une période d’inactivité, le pointeur rebondit sur l’écran comme une balle de Pong
    • il se désactive automatiquement dès qu’une entrée est envoyée vers cet écran

Configuration matérielle

  • Le schéma est basé sur deux cartes Raspberry Pi Pico
    • les Pico ont été choisis parce qu’ils coûtent 4,10 € pièce, se soudent à la main et sont faciles à obtenir
  • Les deux Pico sont reliés par UART
  • Les deux côtés sont séparés par des isolateurs numériques
    • Analog Devices ADuM1201 coûte environ 3 €
    • TI ISO7721DR coûte environ 1,5 €, et il est préféré car moins cher, plus rapide et compatible broche à broche
  • Le RP2040 ne prend pas en charge nativement le dual USB, mais Pico-PIO-USB permet d’implémenter l’USB via PIO pour assurer à la fois les rôles USB Host et Device

PCB et boîtier

  • Pour faciliter la fabrication DIY, les pistes du PCB sont placées sur une seule face et le nombre de composants est minimisé
  • En principe, les lignes différentielles USB D+/D- doivent avoir la même longueur, mais le design est volontairement légèrement asymétrique pour compenser la différence de longueur des pistes GPIO sur le PCB du Pico
  • L’impédance différentielle visée est de 90Ω ; en pratique, elle atteint environ 107Ω
  • L’épaisseur du PCB est conçue à 1,6 mm pour correspondre au boîtier encliquetable
  • Le PCB v1.1 ajoute par rapport à la v1.0
    • protection ESD TPD4E1U06DBVR
    • condensateurs VBUS pour les connecteurs clavier/souris
    • indication d’orientation en sérigraphie
    • trous et alignement améliorés pour les cartes clones avec headers déjà soudés
    • résistances USB 27Ω
  • La v1.1 est un peu plus difficile à souder à la main à cause du petit circuit TVS et des résistances 0805
  • Le boîtier est fourni dans case, utilise environ 33 g de filament et peut être imprimé en quelques heures
  • Il se fixe sans vis grâce à une structure encliquetable, et le couvercle comporte une fente permettant de l’ouvrir avec un tournevis

Coût et composants

  • Le total du BOM du PCB v1.1 est annoncé à 11,22 €
  • Les principaux composants sont les suivants
    • 2 Raspberry Pi Pico : 8,20 €
    • 2 connecteurs USB-A PCB : 0,40 €
    • 1 TI ISO7721DR : 1,40 €
    • 2 condensateurs 100nF : 0,18 €
    • 4 résistances 27Ω : 0,12 €
    • 2 TPD4E1U06DBVR : 0,62 €
    • 2 condensateurs 4.7uF : 0,14 €
    • 2 headers 2.54mm 1x03 : 0,16 €
  • La fabrication du PCB reste nécessaire, et les Gerber sont fournis
  • Des fichiers STL pour l’impression 3D sont également disponibles

Raccourcis et configuration

  • Pour le firmware 0.68 et supérieur, les principaux raccourcis sont les suivants
    • Left Ctrl + Right Shift + C + O : entrer en mode configuration
    • Right Shift + F12 + D : supprimer les réglages en flash
    • Right Shift + F12 + Y : enregistrer l’offset de bascule d’écran
    • Right CTRL + Right ALT : activer/désactiver le mode souris lente
    • Right CTRL + K : verrouiller/déverrouiller le changement de bureau à la souris
    • Right CTRL + L : verrouiller simultanément les deux sorties
    • Left CTRL + Right Shift + G : activer/désactiver le gaming mode
    • Left CTRL + Right Shift + S : activer le screensaver
    • Left CTRL + Right Shift + X : désactiver le screensaver
    • Left CTRL + Caps Lock : changer de sortie
  • Le raccourci a été modifié car certains claviers n’envoient pas correctement l’appui simultané sur les deux touches Shift

Mode de configuration web

  • À partir du firmware 0.6, un configuration mode amélioré a été introduit
  • En appuyant sur Left Ctrl + Right Shift + C + O, l’appareil redémarre et entre en mode configuration
  • Un lecteur USB nommé DESKHOP apparaît, contenant un seul fichier config.htm
  • Ce fichier doit être ouvert dans Chromium ou Chrome
    • Firefox n’est pas pris en charge actuellement, car il évite d’implémenter WebHID
  • Après avoir autorisé la connexion, il est possible de modifier les options puis de les enregistrer sur l’appareil
  • Le choix d’un fichier local plutôt qu’une page de configuration en ligne vise à éviter le risque de sécurité potentiel qu’impliquerait le chargement, depuis un emplacement en ligne arbitraire, de JavaScript interagissant avec un périphérique d’entrée
  • En raison des contraintes d’espace de stockage, la page web de configuration utilise une méthode d’auto-décompression ; l’ensemble du code source est inclus dans le dépôt

Conception sécurité et sûreté

  • Il n’existe aucune fonction de copier/coller ni de partage d’informations entre systèmes
    • il s’agit d’une limitation volontaire pour éviter les fuites d’informations
  • Aucune connexion n’entre depuis les ordinateurs de sortie
    • à l’exception des messages standard d’activation/désactivation des LED du clavier, limités à 1 octet de données
  • Il n’est pas possible de déclencher une mise à jour du firmware depuis les ordinateurs de sortie
    • seule une action explicite de l’utilisateur via un raccourci clavier spécial est autorisée
  • Les endpoints personnalisés du clavier/de la souris connectés ne sont pas exposés et aucune information n’est transmise vers l’appareil
  • Aucun historique de saisie n’est stocké
  • L’appareil ne génère pas de frappes arbitraires
    • seules les entrées effectuées ou déclenchées par l’utilisateur sont envoyées en sortie
  • Les sorties sont physiquement séparées et utilisent une isolation galvanique d’au moins 2 kV
  • Les paquets entre appareils ont une longueur fixe et les options de configuration transmises sont limitées à une courte liste
  • Aucun Bluetooth, Wi-Fi, réseau ou accès à Internet
  • Les ordinateurs connectés ne sont considérés comme dignes de confiance en aucune circonstance
  • Le mode configuration se désactive automatiquement après une période d’inactivité
  • Le code est fourni en open source, sans blob binaire

FAQ et compatibilité

  • Il est possible d’utiliser seulement deux Pico, sans PCB ni isolateur, mais l’usage d’isolateurs est recommandé
  • Même avec des résolutions d’écran différentes, cela devrait fonctionner, car le mouvement de la souris est traité dans un espace de coordonnées abstrait puis mappé par chaque ordinateur sur son écran physique
  • Ce n’est pas un produit commercial mais un projet hobby personnel non commercial
  • Une mise à jour indique qu’il est possible de commander PCB, PCB assemblés et appareils complets à l’unité chez Elecrow
    • d’après les retours d’utilisateurs, les cartes arrivent vides et il faut flasher soi-même le firmware
  • Les dongles combo clavier/souris comme Logitech Unifying seraient mieux pris en charge depuis une récente mise à jour du firmware
  • Les claviers et souris sans fil utilisant des récepteurs distincts fonctionnent ; une souris sans fil Anker a été testée avec succès
  • En cas de problème de build, consulter le Troubleshooting Wiki

Alternatives logicielles

Limites connues et feuille de route

  • Depuis Windows 10 KB5003637, le fonctionnement HID en coordonnées absolues est cassé, ce qui empêche l’utilisation de plus d’un écran sous Windows
    • la souris reste sur l’écran principal ; un contournement expérimental existe et un meilleur est en cours de développement
  • Le code a besoin de nettoyage et de refactoring
  • Le projet n’a pas été suffisamment testé avec une grande variété de périphériques, donc il est possible qu’il ne fonctionne pas immédiatement selon le matériel
  • Sur les claviers avancés avec molettes, boutons supplémentaires ou curseurs, ces éléments additionnels peuvent ne pas fonctionner
  • Sur les souris modernes avec un très grand nombre de boutons, certains peuvent ne pas se comporter comme attendu
  • Les deux ordinateurs doivent être connectés et fournir l’alimentation USB pour que cela fonctionne
    • chaque carte est alimentée par l’ordinateur auquel elle est connectée
  • macOS présente des problèmes avec deux écrans ou plus ; les firmwares récents proposent un contournement expérimental
  • Les fonctionnalités prévues incluent l’amélioration des contournements multi-écrans Windows/macOS, le mode transparent/gaming mode, la prise en charge de plus de deux sorties et une meilleure interface de configuration
  • Une version lite offrant les fonctions de base avec une seule carte Pico W est également en préparation
  • Le polling de la souris peut actuellement atteindre 1000Hz

1 commentaires

 
GN⁺ 2023-12-28
Commentaires sur Hacker News
  • C’est appréciable de pouvoir détecter les bords de l’écran sans logiciel client
    Pour que le curseur de la souris passe naturellement d’un écran à l’autre, le descripteur de rapport HID de la souris est changé en coordonnées absolues, et les rapports de souris qui arrivent en réalité sous forme de déplacements relatifs sont cumulés en interne afin de conserver une position exacte
    Cela fonctionne donc comme synergykm / Barrier, avec la fonction presse-papiers et sans logiciel client

    • Le fait que les ordinateurs n’aient pas besoin d’être connectés en réseau est particulièrement appréciable
    • Je me demande si tout se casse complètement si le curseur est déplacé par autre chose que la souris
      Par exemple un script d’automatisation, ou un jeu qui verrouille le curseur au centre de l’écran
  • Sur YouTube, on peut aussi avancer ou reculer dans une vidéo image par image avec les touches , et ., sans matériel séparé

    • Ce serait bien qu’il existe aussi une solution sur Android
      Faire une sélection fine avec un curseur dans une interface tactile, c’est vraiment épouvantable
    • Il est impossible de se déplacer de quelque chose entre 30 secondes et 1 image
    • Je trouve que les souris actuelles sont très précises et fonctionnent bien ; je me demande quelle souris il faut utiliser pour devoir retenir son souffle en faisant défiler
    • mpv utilise les mêmes raccourcis
      Je ne sais pas qui les a eus en premier, mais je les ai découverts dans mpv, puis j’ai essayé par hasard sur YouTube et ça a fonctionné
  • Sous Windows, on peut utiliser Mouse Without Borders, développé par Microsoft Garage et désormais inclus dans Windows PowerToys
    Liens :
    https://www.microsoft.com/en-us/garage/profiles/mouse-without-borders
    https://github.com/microsoft/PowerToys

    • Barrier est un projet open source multiplateforme issu d’un fork de Synergy, et il fonctionne plutôt bien sans matériel supplémentaire
      Cela dit, en regardant maintenant, il n’est plus maintenu ; son successeur est Input Leap
      https://github.com/debauchee/barrier
      https://github.com/input-leap/input-leap
    • Je l’ai utilisé par le passé et il fonctionnait vraiment bien
      Cela rend notamment facile la copie de fichiers par glisser-déposer entre ordinateurs
  • J’ai acheté pas moins de quatre hubs USB pour basculer clavier et souris, mais la plupart des appareils sont tellement mauvais que c’en est agaçant
    Il arrive plusieurs fois par jour que je doive débrancher et rebrancher physiquement le hub, et c’est encore pire si j’y connecte aussi une webcam ou un micro USB
    J’utilise Synergy avec satisfaction, mais il me faut un vrai KVM capable de gérer correctement webcam, micro et audio, et de déplacer seulement un groupe de périphériques connectés via un raccourci clavier
    Les utilisateurs de KVM sont clairement insuffisamment servis

    • La meilleure configuration que j’aie eue est un KVM intégré à un moniteur BenQ 32 pouces 4K, que j’ai découvert par hasard au travail
      Chaque entrée DisplayPort est associée à des ports USB, et l’USB-C gère à la fois les périphériques, l’entrée vidéo et une alimentation plutôt correcte
      La bascule se fait avec un petit interrupteur sur le bureau ; le moniteur fait comme s’il restait connecté même aux entrées qui ne sont pas affichées, ce qui évite à Windows de clignoter en réorganisant tout, et rend la commutation beaucoup plus rapide et fluide
    • J’aimerais partager clavier, souris et moniteur entre un PC et un MacBook, mais il ne semble pas exister de KVM où un côté est en DP+USB et l’autre en Thunderbolt
      Cela me paraît pourtant être un cas d’usage courant, c’est dommage
      On peut aussi passer d’abord par un dock, mais la résolution du moniteur que j’utilise est élevée, si bien que la plupart des docks peinent ou ne prennent en charge que le 30 Hz
    • J’ai récemment acheté le moniteur 32 pouces 6K de Dell, avec hub Thunderbolt 4 et KVM intégrés, et tout fonctionne parfaitement
      Le Mac est connecté avec un seul câble Thunderbolt 4, et le PC en amont via HDMI 2.1 et USB3 10 Gbit/s
      J’ai branché l’Ethernet ainsi que le clavier et la souris au moniteur, et la bascule vers le bon appareil se fait via un raccourci clavier ou l’OSD du moniteur
      La fonction PIP permet aussi de voir les deux appareils en même temps
    • Je suis très satisfait du KVM tesmart double DP 4 ports
      Sa limite est qu’il n’a qu’un contrôleur hôte USB 2, ce qui rend difficile la commutation de certains périphériques haut débit comme certaines webcams
      Si vous devez intégrer des produits Apple, comme Apple n’aime pas le MST, il faut utiliser deux câbles USB3 physiques côté Mac pour distinguer les deux canaux d’affichage
    • Les KVM USB d’ATEN permettent de brancher à peu près n’importe quoi
      J’y branche des clés USB pour transférer rapidement des fichiers, et en général tout appareil alimenté par USB fonctionne
      Si l’on choisit USB 3+, DP, etc., c’est cher, mais il existe aussi des modèles abordables qui ne commutent que l’USB
      En revanche, gros inconvénient : certaines souris et certains claviers avec touches spéciales ne fonctionnent pas à 100 %
  • J’utilise Synergy pour cet usage depuis plus de 10 ans
    https://symless.com/synergy ; c’est rapide, le basculement est instantané même en Wi‑Fi, et Windows/Mac/Linux sont tous pris en charge

    • Synergy, Barrier et Input Leap sont des solutions logicielles assez correctes issues du même ancêtre
      Les deux derniers sont gratuits et open source, et Synergy a une bonne façon de configurer les frontières entre les appareils
      Cela dit, quelle que soit la solution, j’aimerais qu’elle prenne correctement en charge une disposition personnalisée des moniteurs
      Dans mon environnement, les moniteurs ne sont pas alignés, et chaque moniteur peut basculer indépendamment vers chaque appareil ; ce serait donc formidable de pouvoir définir des frontières par moniteur et par appareil, mais cela ne semble exister ni côté logiciel ni côté matériel
      J’ai récemment demandé à Synergy, qui m’a répondu que c’était sur la feuille de route en tant que demande de fonctionnalité populaire ; j’espère que cela arrivera bientôt
    • Quand on utilise différents VPN sur plusieurs ordinateurs, Synergy ne fonctionne pas très bien, alors j’ai acheté un appareil commercial similaire à ce DIY, et il marche très bien
      Il n’est pas nécessaire de se connecter d’abord à l’ordinateur, et l’on peut basculer en dépassant le bord de l’écran ou avec une combinaison de touches
      Les périphériques USB connectés peuvent aussi être basculés indépendamment du clavier et de la souris
      Ce type de produit est parfois appelé boundless, borderless ou roaming KM switch
      https://www.cdw.com/product/siig-4-port-roaming-km-switch-wi...
    • ShareMouse mérite aussi d’être mentionné : https://www.sharemouse.com/
      Personnellement, il a beaucoup mieux fonctionné que Synergy
      J’y suis passé après que les développeurs de Synergy n’ont pas réagi à des bugs vieux de plusieurs années, au point que je ne pouvais plus l’utiliser
      Exemple : https://github.com/symless/synergy-core/issues/5992
      L’inconvénient est qu’au bout d’un an, il faut faire un « renouvellement de maintenance » pour continuer à recevoir les mises à jour, mais je l’utilise toujours très bien sans avoir encore renouvelé
    • Il y a quelques mois, la souris s’est figée sur mon deuxième ordinateur, et comme j’avais tout simplement oublié que Synergy tournait, il m’a fallu quelques minutes pour corriger le problème
      En vérifiant, je me suis rendu compte que la configuration fonctionnait sans problème depuis 4 à 5 ans, et cela fait partie des logiciels payants qui valent vraiment leur prix
    • Ça a l’air bien, mais c’est dommage que TLS soit réservé à une fonctionnalité premium au-dessus de la SKU payante de base
      La sécurité devrait être incluse par défaut et gratuite partout ; ce n’est pas un luxe, mais un minimum
      Cela dit, si je l’essaie et que c’est convaincant, j’envisage d’acheter la licence premium pour la fonction copier-coller
  • J’ai un projet inspiré d’un projet similaire, https://github.com/jfedor2/screen-hopper
    Ma version maison se compose de deux programmes
    L’un tourne sur un bureau Linux et écoute les événements d’entrée d’evdev, le sous-système d’entrée de Linux ; quand on appuie sur une touche donnée, il consomme tous les événements et les envoie à un RPI Pico via USB série
    En appuyant de nouveau, il revient en mode d’écoute manuel
    Le RPI Pico convertit les événements Linux evdev reçus en série en événements USB HID et les envoie à un autre PC Windows
    Au final, cela donne un switch KM permettant de basculer instantanément entre un PC Linux et un PC sous n’importe quel OS
    Photo du câblage : https://ibb.co/m0zhzgz
    J’ai utilisé un autre Pico comme adaptateur USB-série, et pour un débutant en matériel comme moi, le fait de n’avoir besoin que de deux fils était un vrai soulagement
    Les deux programmes faisaient moins de 100 lignes chacun, et il existe beaucoup de crates Rust et de packages Python pour écouter Linux evdev
    Côté Pico aussi, cela ressemble surtout à une boucle avec un gros switch, et il existe des crates Rust pour envoyer des événements USB HID
    Avec COBS, on peut envoyer en série sans se soucier du framing
    À cause d’un bug USB série, je n’ai finalement pas publié le tout en open source : après une déconnexion, il ne se reconnectait pas correctement au bureau Linux
    Je ne sais pas si cela venait de Linux ou du Pico, et comme je ne débranche pas le câble, je l’utilise encore sans problème
    Comme je joue beaucoup aux FPS, j’ai volontairement laissé de côté les coordonnées absolues, et j’ai assigné la touche de bascule à un bouton latéral de la souris pour pouvoir changer de système sans toucher au clavier

    • C’est une idée vraiment géniale
      Je n’ai découvert le projet screen-hopper qu’hier, et j’ai eu l’impression de confirmer la théorie selon laquelle, quoi que l’on essaie de construire, quelqu’un de plus malin l’a déjà mieux fait
      Comme je ne joue pas du tout, les coordonnées absolues me conviennent aussi, mais j’ai dans ma todo list de rendre cela configurable
    • Le bug USB série pourrait justement être une raison de le publier
      Tu pourrais faire du nerd sniping pour pousser quelqu’un à creuser le détail subtil qui provoque le bug
    • On m’a souvent suggéré de le publier malgré les bugs, et l’argument se tient
      Les sources sont fournies telles quelles ici : https://github.com/null-dev/picokvm
    • Ce serait bien de pouvoir le mettre dans un dépôt avec un avertissement du type pas de support, à vos risques et périls
    • Même s’il reste des bugs, je pense que beaucoup de gens aimeraient le voir
  • L’un de mes gros sujets d’agacement était de basculer la souris et le clavier entre deux PC avec un switch USB 3.0
    Quand je n’ai pas grand-chose à dire pendant une réunion Teams et que quelqu’un prononce mon nom ou m’envoie un message, je me retrouve à chercher fébrilement le bouton pour renvoyer les entrées vers le PC où Teams est ouvert
    J’avais envisagé de connecter un ESP32 ou un Rpi Pico W et quelques optocoupleurs aux broches du bouton du switch USB, puis d’exposer un endpoint HTTP pour basculer les entrées entre les deux machines via un script AutoHotkey et un raccourci clavier
    Mais j’ai abandonné parce que je n’ai pas trouvé comment déterminer l’entrée actuellement active ; cette solution me plaît bien

    • Ça vaut le coup de regarder les casques compatibles Teams qui ont un bouton de sourdine
      Le casque Logitech fourni par mon entreprise a des boutons de volume, de fin d’appel et de sourdine sur le câble, ce qui rend la sortie de sourdine bien plus facile quand on fait plusieurs choses à la fois
  • Synergy gère très bien cet usage en pur logiciel
    Ce n’est ni gratuit ni open source, mais c’est relativement abordable
    https://symless.com/synergy

    • Avant que Synergy ne devienne propriétaire, il a été forké en Barrier[0], puis à nouveau en input-leap[1]
      Les deux sont open source
      [0] https://github.com/debauchee/barrier
      [1] https://github.com/input-leap/input-leap
    • Synergy est open core, et ces parties sont sous licence GPL : https://github.com/symless/synergy-core/#License-1-ov-file
      Il existe aussi un fork open source issu de la version 1.9 : https://github.com/debauchee/barrier#what-is-it
    • Synergy a des bugs dont il ne semble pas vraiment se soucier
      Par exemple, avec un hôte macOS, sur les clients Windows/Linux il utilise la courbe d’accélération de macOS pour calculer la position du curseur, mais pas pour le déplacement réel du curseur
      Résultat, quand on essaie de travailler dans le tiers de l’écran Windows le plus proche de l’hôte, on repasse involontairement de l’autre côté
    • Je me demande s’il existe de bonnes suggestions pour une combinaison Windows et tablette Android
      Toutes les solutions semblent ne fonctionner que sur des OS de bureau
    • On dit que « rien n’est aussi agaçant que Synergy, mais tout le reste l’est aussi »
      Aucune de ces technologies n’est stable, et Synergy m’a même déjà bloqué des claviers connectés à plusieurs reprises, au point que l’ordinateur ne réagissait plus tant qu’il n’était pas éteint puis rallumé
  • Vraiment impressionnant
    Je le ressens d’autant plus que j’utilise depuis au moins 20 ans une configuration de bureau avec, de gauche à droite, des machines Linux-Mac-Windows
    Si les langages de programmation ont le multilinguisme, le matériel a les configurations multiplateformes
    Heureusement, ces dernières années, la multiplication des conceptions de systèmes sur puce (SoC) a rendu les choses plus faciles
    Ma configuration actuelle se compose de deux clones de Mac mini à SoC Ryzen à 250 dollars venus de Shenzhen, et d’un MBP M1
    C’est dommage que l’écosystème autrefois robuste des solutions KVM open source comme Synergy se soit transformé en cauchemar récursif de forks, au point qu’il soit devenu difficile de trouver un KVM logiciel open source multiplateforme gratuit qui fonctionne
    Pour l’instant, j’ai fini par utiliser un commutateur KVM classique, mais devoir appuyer sur un bouton me déconcentre
    J’aimerais un jour réessayer quelque chose comme ça

  • S’il y a quelqu’un avec qui commercialiser cela, je suis prêt à prendre en charge et à financer l’injection plastique, le marketing, l’assemblage en volume et les autres tâches nécessaires
    Mon e-mail est dans mon profil

    • En cas de commercialisation, j’aimerais vraiment que l’inconvénient « les deux ordinateurs doivent être connectés et allumés pour que cela fonctionne » soit résolu
      Pour moi, c’est rédhibitoire
    • Il existe déjà des produits commerciaux
      Il suffit de chercher boundless, borderless ou roaming KM switch