J'ai deux trackpads Bluetooth, un au travail et un à la maison. Existe-t-il un moyen de sélectionner l'un ou l'autre à partir de la ligne de commande ? Mon processus actuel consiste à aller dans le menu bluetooth, à survoler home ou office et à cliquer sur Connecter mais j'aimerais pouvoir le faire à partir du terminal.
Réponses
Trop de publicités?Cette application CLI open-source Connecteur Bluetooth semble être une bonne solution. J'ai testé et confirmé qu'elle fonctionne depuis MacOS 10.15.2.
Il est disponible sur GitHub ainsi que Homebrew :
$ brew install bluetoothconnector
$ BluetoothConnector --connect 00-11-22-33-44-55 --notify
$ BluetoothConnector --disconnect 00-11-22-33-44-55
J'ai finalement opté pour cette version modifiée à partir de ceci répondre et créer deux fichiers, l'un avec "Home Trackpad" et l'autre avec "Office Trackpad". Cela fonctionne, mais prend quelques secondes.
tell application "System Events" to tell process "SystemUIServer"
set bt to (first menu bar item whose description is "bluetooth") of menu bar 1
click bt
tell (first menu item whose title is "Home Trackpad") of menu of bt
click
tell menu 1
if exists menu item "Connect"
click menu item "Connect"
return "Connecting..."
else
click bt -- close main dropdown to clean up after ourselves
return "No connect button; is it already connected?"
end if
end tell
end tell
end tell
Je viens de le faire avec https://github.com/toy/blueutil .
Je l'ai installé à partir de MacPorts :
$ sudo port install blueutil
a trouvé l'identifiant de mon appareil :
$ blueutil --paired
address: 03-5e-1c-4a-a8-11, not connected, not favourite, not paired, name: "Los Headphones", recent access date: 2020-03-17 17:58:09 +0000
...
Connecté :
$ blueutil --connect 03-5e-1c-4a-a8-11
AFIK, il n'existe pas d'utilitaire de ligne de commande intégré pour gérer les connexions Bluetooth individuelles.
En fait, la page de manuel man blued
(le démon Bluetooth d'OS X) :
Le démon Bluetooth gère les SDP t et l'acceptation des connexions entrantes. Il ne peut pas être utilisé directement par l'outil l'utilisateur. (souligné par moi)
Il semble donc que vous soyez limité au chargement/déchargement du démon BT à partir de la ligne de commande. Cela peut cependant être utile. Si votre périphérique est actif, OS X se connectera automatiquement au périphérique au démarrage. En d'autres termes, il se connectera automatiquement à tout appareil à portée lorsque le démon démarre.
Obtenir l'état du démon Si nous lançons la commande defaults read /Library/Preferences/com.apple.Bluetooth.plist ControllerPowerState
Il répond par un 1
ou 0
selon que le démon BT est en cours d'exécution ou non ; 1 étant en cours d'exécution, 0 étant en cours d'exécution.
Décharger le démon
Envoi de la commande sudo killall blued
devrait tuer le démon BT. L'inconvénient est que si vous avez un clavier BT, il cessera de fonctionner.
(Re)Démarrage du démon
Si nous émettons la commande launchctl start com.apple.blued
il indiquera au démon de (re)démarrer. Après cela, il devrait détecter l'appareil à portée.
La mise en place de l'ensemble En les regroupant sur une seule ligne, nous pouvons lancer la commande suivante
sudo killall blued && sleep 3 && launchctl start com.apple.blued
Il s'agit de ....
- Tuer le démon
- Attend 3 secondes pour s'assurer qu'il a été tué (vous pouvez modifier cette durée si vous le souhaitez).
- Démarre le démon.
Pour faciliter les choses
Pour faciliter la tâche, nous lui attribuons un alias . Vous pouvez appeler l'alias comme vous le souhaitez ; j'ai utilisé "btrestart" parce que cela a du sens dans ce contexte.
alias btrestart=sudo killall blued && sleep 3 && launchctl start com.apple.blued
Maintenant, n'importe où dans votre terminal, si vous tapez btrestart
il émettra la commande. Une fois que vous l'avez fait fonctionner, vous pouvez l'ajouter à votre fichier .bash_profile
de manière à ce que l'alias persiste lors des redémarrages :
echo alias btrestart=sudo killall blued && sleep 3 && launchctl start com.apple.blued >> ~/.bash_profile
Quelques mises en garde
- Vous devrez saisir votre mot de passe à chaque fois. Launchctl est une commande système et nécessite des privilèges élevés.
- Tous de vos appareils BT seront déconnectés et reconnectés. Si vous n'avez qu'un ou deux appareils BT, le problème ne se pose pas vraiment.
J'espère que cela vous permettra d'aller dans la bonne direction....
blued listall
Cette commande du terminal vous indiquera tous les appareils actuellement "connus". Vous devrez trouver (en lisant entre les lignes) lequel est lequel (en supposant que vous ayez donné à vos trackpads un nom "sympa", comme "maison" ou "travail", etc.)
Je l'ai fait et j'ai obtenu :
2016-05-03 20:14:58.392 blued[3852:507] hostControllerOnline - Number of Paired devices = 3, List of Paired devices = (
"d8-96-95-e0-3e-f8",
"c4-2c-03-b7-87-57",
"90-84-0d-e4-7b-41"
)
link key found for device: c4-2c-03-b7-87-57
2016-05-03 20:15:04.637 blued[3852:507] link key found for device: c4-2c-03-b7-87-57
2016-05-03 20:15:04.639 blued[3852:507] [setSystemPreference] syncs returns false
2016-05-03 20:15:04.639 blued[3852:507] Save link key for device: c4-2c-03-b7-87-57
link key found for device: 90-84-0d-e4-7b-41
2016-05-03 20:15:04.640 blued[3852:507] link key found for device: 90-84-0d-e4-7b-41
2016-05-03 20:15:04.640 blued[3852:507] Save link key for device: 90-84-0d-e4-7b-41
link key found for device: d8-96-95-e0-3e-f8
2016-05-03 20:15:04.640 blued[3852:507] link key found for device: d8-96-95-e0-3e-f8
2016-05-03 20:15:04.641 blued[3852:507] Save link key for device: d8-96-95-e0-3e-f8
Create connection failed (0x4) for device: D8-96-95-E0-3E-F8
(j'ai ensuite appuyé sur "ctrl-c" pour annuler)
Supposons que je sache que "c4-2c-03-b7-87-57" est la "maison" ....
suivant :
blued join c4-2c-03-b7-87-57
Cela fonctionne sur mon système (10.9.5). YMMV.
Il se peut que vous deviez également ajouter une fonction kill, car il semble que blued
ne "parle" pas bien avec Terminal.
Une commande de l'interpréteur de commandes pourrait donc être la suivante :
blued join c4-2c-03-b7-87-57
killall terminal