DeskSwitch est une petite application macOS de barre des menus qui coordonne un poste Mac et un PC Windows partageant les memes ecrans, le meme clavier et la meme souris.
Elle complete un setup base sur :
- Synergy pour partager le clavier et la souris ;
- BetterDisplay pour piloter les sources video des ecrans ;
- un clavier, une telecommande programmable ou un XP-Pen ACK05 pour declencher les raccourcis.
DeskSwitch ne remplace ni Synergy ni BetterDisplay. Il orchestre leurs raccourcis et fournit une interface unique dans la barre des menus.
- F3 bascule le clavier et la souris vers le Mac.
- F4 bascule le clavier et la souris vers le PC.
- Une notification macOS dediee permet a BetterTouchTool de basculer alternativement le clavier et la souris entre le Mac et le PC.
- Un HUD discret confirme la destination
Clavier : MacouClavier : PCapres chaque basculement. - Les evenements logiciels emis par un XP-Pen ACK05 sont captures puis reinjectes de maniere compatible avec Synergy.
- Deux interrupteurs permettent de choisir independamment la source de l'ecran gauche et de l'ecran droit.
- Les interrupteurs suivent les raccourcis BetterDisplay F1, F2, F5 et F6, y compris lorsqu'ils viennent du pad.
- Un deplacement vers la frontiere Synergy peut servir de secours si le raccourci Synergy n'est pas pris en compte.
- La configuration est stockee dans un fichier JSON modifiable.
- L'application se lance automatiquement a l'ouverture de la session macOS.
- Le lancement automatique peut etre active ou desactive depuis le menu DeskSwitch.
- L'application fonctionne sans Karabiner-Elements.
La configuration par defaut correspond au schema suivant :
| Action | Raccourci | Code macOS |
|---|---|---|
| Ecran gauche vers le Mac | F1 | 122 |
| Ecran gauche vers le PC | F2 | 120 |
| Clavier/souris vers le Mac | F3 | 99 |
| Clavier/souris vers le PC | F4 | 118 |
| Ecran droit vers le Mac | F5 | 96 |
| Ecran droit vers le PC | F6 | 97 |
Creer quatre raccourcis BetterDisplay :
- F1 selectionne l'entree Mac de l'ecran gauche.
- F2 selectionne l'entree PC de l'ecran gauche.
- F5 selectionne l'entree Mac de l'ecran droit.
- F6 selectionne l'entree PC de l'ecran droit.
Dans le setup d'origine, le Mac utilise HDMI et le PC DisplayPort. DeskSwitch ne depend toutefois pas de ces connecteurs precis : BetterDisplay reste responsable du changement de source.
Dans Synergy 3 :
- associer F3 a
Switch to computer: Mac; - associer F4 a
Switch to computer: PC; - placer le PC a gauche du Mac dans la disposition Synergy si le secours par frontiere est active.
Si la disposition est differente, modifier macEdgeDelta et pcEdgeDelta, ou desactiver useSynergyEdgeFallback.
Dans le pilote XP-Pen :
- affecter F3 au bouton de retour vers le Mac ;
- affecter F4 au bouton de passage vers le PC ;
- conserver F1, F2, F5 et F6 pour les sources des ecrans.
Le pilote ACK05 emet des evenements logiciels que Synergy peut ignorer. DeskSwitch les capture au niveau Quartz, les marque pour eviter une boucle, puis les reinjecte depuis une source HID macOS.
Un geste BetterTouchTool peut publier la notification distribuee com.flavienjoly.deskswitch.toggle pour basculer alternativement le clavier et la souris entre les deux ordinateurs. Par exemple, associer Tap a 3 doigts a l'action Post Distributed Notification. Cette integration ne simule aucune touche et ne change pas les sources video.
- macOS 13 ou plus recent ;
- les Command Line Tools Apple (
xcode-select --install) ; - Synergy et BetterDisplay deja configures.
make buildL'application est creee dans build/DeskSwitch.app avec une signature ad hoc.
Pour utiliser une identite de signature locale stable :
DESKSWITCH_CODESIGN_IDENTITY="Nom de l'identite" make buildLes certificats et cles ne doivent pas etre ajoutes au depot.
make installL'application est copiee dans ~/Applications/DeskSwitch.app, puis lancee.
Pour installer une version signee :
DESKSWITCH_CODESIGN_IDENTITY="Nom de l'identite" make installAu premier lancement, autoriser DeskSwitch dans :
Reglages Systeme > Confidentialite et securite > Accessibilite;Reglages Systeme > Confidentialite et securite > Surveillance de l'entree.
Relancer l'application apres avoir accorde les autorisations.
Au premier lancement, DeskSwitch s'ajoute automatiquement aux elements d'ouverture de session. Cette option peut etre modifiee depuis le menu DeskSwitch avec Lancer a l'ouverture de session, ou dans Reglages Systeme > General > Ouverture.
DeskSwitch cree son fichier de configuration ici :
~/Library/Application Support/DeskSwitch/config.json
Le menu Ouvrir la configuration ouvre directement ce fichier. Apres une modification, utiliser Recharger la configuration.
Exemple complet :
{
"keyDelayMilliseconds": 120,
"macDisplayKeys": [122, 96],
"macEdgeDelta": 900,
"macSynergyKey": 99,
"macTriggerKey": 99,
"pcDisplayKeys": [120, 97],
"pcEdgeDelta": -900,
"pcSynergyKey": 118,
"pcTriggerKey": 118,
"switchDisplaysWithTrigger": false,
"synergyDelayMilliseconds": 450,
"toggleTriggerKey": 80,
"useSynergyEdgeFallback": true
}switchDisplaysWithTrigger reste desactive par defaut. Ainsi F3 et F4 ne changent que le clavier et la souris ; les sources video restent independantes.
Les journaux sont ecrits dans :
~/Library/Logs/DeskSwitch/desk-switch.log
Le menu Ouvrir le journal permet d'y acceder. Au demarrage, ces lignes confirment que la capture est active :
Permissions accessibility=1 listenEvents=1
Quartz event tap installed
DeskSwitch est une application AppKit legere sans dependance tierce :
Sources/main.mcontient l'application de barre des menus et le tap Quartz ;Info.plistdeclare l'application comme agent de barre des menus (LSUIElement) ;build.shcompile et signe le bundle ;scripts/install.shinstalle l'application dans le dossier Applications de l'utilisateur.
Le code utilise CGEventTapCreate pour observer F1 a F6 et CGEventPost avec kCGEventSourceStateHIDSystemState pour transmettre les raccourcis. Les evenements reinjectes portent une marque interne afin de ne pas etre captures une seconde fois.
- L'etat affiche pour les ecrans correspond a la derniere commande observee, pas a une lecture DDC directe de l'ecran.
- Les codes de touches sont des keycodes macOS, pas des caracteres.
- Le secours par frontiere suppose par defaut que le PC est a gauche du Mac.
- Une signature ad hoc peut obliger macOS a redemander les autorisations apres chaque recompilation. Une identite locale stable evite ce comportement.
DeskSwitch est distribue sous licence MIT.