私は会社と私用の両方で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で接続する
- この、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つなげるために blueutil
をbrewでインストールする。
$ 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でサクッと起動できるので楽。
まとめ
複数Mac間でMagic Keyboardを共有する方法が良記事過ぎて、私の環境を作ることができた。 Automatorの設定は力技にしてるけど、ループ使ってスマートにできないかと考えてるので、良い手段があれば、コメントよろしくお願い致します。