MagicKeyboard,MagicTrackpadをストレス無く複数Macで切り替える方法

私は会社と私用の両方でMacを使っており、アクセサリーでMagicKeyboardとMagicTrackpadを使用している。
会社と私用のMacで利用を切り替えるときに、GUIで操作するストレスが大きかったのでAutomatorでサクッと切り替えられるようにした話。

はじめに

私の環境では、GUIで以下の手順で操作していた。
1. bluetoothから登録されているMagicKeyboardを削除する 2. MagicKeyboardを再起動する 3. システム設定のbluetoothにある「近くのデバイス」にMagicKeyboardが出るのを待つ 4. 接続する

会社↔私用で切り替えるたびに、この手順が必要で非常にストレスを感じていた。
最近、複数Mac間でMagic Keyboardを共有する方法を見つけて取り入れてみた。

うまくいかなかった

私の環境の場合、bluetoothで接続して無い状態( blueutil --is-connected で0が返る)だと、 --pair, --connect が失敗する。
ちょっとややこしいが、
1. 私用Macで接続する 2. 会社Macで接続する 3. 私用Macで接続する

  1. この、3のときに「MacでMagicKeyboardを認識しているが接続してない状態」で失敗する。

じゃあどうする

blueutil --unpair でデバイスを削除→MagicKeyboard再起動→ blueutil --pair, --connect で接続と、この手順が必要。 Automatorで以下のように設定する。

詳細は次の通りだ。

バイス削除

DEVICE_ID=xxx

/opt/homebrew/bin/blueutil --unpair $DEVICE_ID

echo $DEVICE_ID
  • DEVICE_ID は、 `blueutil --paired' で調べる。(MagicKeyboardでもMagicTrackpadでも)
  • echo $DEVICE_ID は次のシェルスクリプトでもIDを使い回すため

バイスの再起動

「確認を求める」でダイアログを表示させているうちに、MagicKeyboardを再起動する。 「ユーザの操作を待つ」だと、再起動後にカーソル操作が必要なので「確認を求める」のダイアログを使ってる。 こっちだとreturn押下で処理を進められる。

バイス接続

DEVICE_ID=$1
/opt/homebrew/bin/blueutil --pair $DEVICE_ID
sleep 1
/opt/homebrew/bin/blueutil --connect $DEVICE_ID
# 画像だと$1だけど、$DEVICE_IDがいい
  • 1つ目の echo $DEVICE_ID を$1で受け取る
  • blueutil --pair でデバイスを認識させる
  • blueutil --connect で接続する

繰り返す

MagicTrackpadも必要なので同じように繰り返す。 DEVICE_IDはMagicTrackpadに変える。

Appendix

bluetoothつなげるために blueutilbrewでインストールする。

$ brew install blueutil

blueutilでIDを取得する。addressがID。

$ blueutil --paired
address: xx-xx-xx-xx-xx-xx, not connected, not favourite, paired, name: "Magic Keyboard", recent access date: 2024-02-23 05:34:08 +0000
address: xx-xx-xx-xx-xx-xx, not connected, not favourite, paired, name: "Magic Trackpad", recent access date: 2024-02-23 05:34:08 +0000

Automatorはアプリケーションで作成して、アプリケーションディレクトリにいれる。
そうするとRaycastでサクッと起動できるので楽。

このAutomatorは利用する各Macに必要。

まとめ

複数Mac間でMagic Keyboardを共有する方法が良記事過ぎて、私の環境を作ることができた。 Automatorの設定は力技にしてるけど、ループ使ってスマートにできないかと考えてるので、良い手段があれば、コメントよろしくお願い致します。