À propos du projet

DeskHop est un projet matériel permettant de partager un seul clavier et une seule souris entre deux ordinateurs. Au lieu d'un commutateur USB, il se place entre les périphériques et les deux machines, maintenant les connexions à chacune en même temps et transmettant les entrées vers la sortie sélectionnée. Fonctionnement : l'appareil agit comme hôte USB pour le clavier/la souris et comme périphérique USB vers chaque ordinateur. Le descripteur de rapport HID de la souris est modifié pour utiliser des coordonnées absolues, tandis que les mouvements relatifs entrants sont accumulés en interne pour suivre la position. Lorsque le pointeur atteint le bord d'un écran, la coordonnée Y est conservée et la plage X est permutée, de sorte que le curseur apparaît à la même hauteur sur l'autre moniteur et les sorties basculent. Un raccourci configurable (couramment Ctrl + Verr. Maj) change le clavier, et les LED du clavier peuvent indiquer la sortie active ; l'état des LED par ordinateur est mémorisé. Caractéristiques listées par le projet : aucun délai de commutation perceptible, glisser-déposer du curseur entre les ordinateurs, aucun logiciel installé, composants pour environ 15 EUR, un boîtier imprimable en 3D à encliquetage, isolation galvanique complète entre les sorties, et prise en charge de Linux, macOS et Windows. Il est certifié matériel open source. Matériel : deux cartes Raspberry Pi Pico connectées via UART et séparées par un isolateur numérique (ADuM1201 ou le TI ISO7721DR compatible broche à broche). La prise en charge du double rôle USB provient du projet Pico-PIO-USB. Le PCB v1.1 ajoute une protection ESD, des condensateurs VBUS, des marquages sérigraphiés et des résistances série USB ; les fichiers Gerber et les fichiers STL du boîtier sont fournis. Une nomenclature liste environ 11 EUR de pièces. Compilation : le dépôt inclut un SDK Pico minimal et TinyUSB. Sous Debian/Ubuntu, installez build-essential, cmake, gcc-arm-none-eabi, libnewlib-arm-none-eabi et python3, puis lancez la configuration et la compilation cmake ; Docker Compose est proposé pour des compilations reproductibles. Des images .uf2 précompilées sont publiées dans les releases. Le firmware peut être mis à jour en entrant en mode configuration (Ctrl gauche + Maj droite + C + O), ce qui expose un lecteur USB nommé DESKHOP, ou via le bootloader ROM, ou une commande de flash CDC dans les versions de débogage. Fonctionnalités supplémentaires : un basculement souris lente (Ctrl droit + Alt droit), un verrouillage de commutation (Ctrl droit + K), un verrouillage des deux sorties (Ctrl droit + L), un mode jeu utilisant le mouvement relatif de la souris (Ctrl gauche + Maj droite + G), et un économiseur d'écran optionnel. La calibration de la hauteur du curseur est disponible pour les moniteurs mal alignés ou de tailles différentes. Une page de configuration web est servie localement depuis l'appareil et ouverte dans Chromium/Chrome via WebHID ; le projet note que Firefox n'est pas pris en charge. Plusieurs écrans par sortie nécessitent de définir l'OS et le nombre d'écrans, et sont décrits comme expérimentaux. Les choix de sécurité sont délibérés : aucun partage de presse-papiers ou de données entre systèmes, aucune connectivité entrante depuis les sorties au-delà des messages standard des LED du clavier, aucune mise à niveau du firmware déclenchée depuis les sorties, aucun historique d'entrée conservé, aucune frappe initiée par l'appareil, des paquets inter-appareils de longueur fixe, aucun réseau, et une sortie automatique du mode configuration après inactivité. Le code est entièrement ouvert sans blobs binaires. Limitations connues : la build Windows 10 KB5003637 a cassé les coordonnées absolues HID, donc plus d'un écran sous Windows est problématique sans le contournement expérimental ; la prise en charge multi-écrans sous macOS est également expérimentale ; les claviers et souris avancés avec des commandes supplémentaires peuvent ne pas fonctionner complètement ; les deux ordinateurs doivent être connectés et fournir l'alimentation USB ; et l'auteur note que le code nécessite un nettoyage et des tests plus larges sur les appareils. Les alternatives logicielles mentionnées incluent Barrier, Input Leap, Synergy, Mouse Without Borders et Universal Control. Les travaux prévus incluent de meilleurs contournements multi-écrans, un mode transparent/jeu, la prise en charge de plus de deux sorties, des améliorations de l'interface de configuration, et une version « lite » à un seul Pico.