見出し画像

Sidecar起動ボタンの作り方(BTT使用)

※注:最後は若干、力技で解決しています

早いもので、Sidecarを使うためだけに見切り発車でCatalinaにアプデしてから、そろそろ半年になるんですね。
アプデ当初は「iPadでデュアルディスプレイ化できて万歳!iPadの液タブ化万歳!」と喜んだ反面、32bitアプリが使えなくなってひいこら言っていたけど、ある程度は落ち着いてきたかな。

さて、初投稿である今日の本題です。BetterTouchToolを使って、押すだけでSidecarを好みの設定で起動できるボタンをTouchBarに作ってみた。

画像2

↑画像の紺地に白色のボタンですね。
多分ググれば出てくるので、TouchBarのボタンの作り方は省略しますよ!

方法1:既存のメニューでできないか、試してみる。(失敗)

予想はしていたが、やはりBTTにはSidecar関連のメニューは用意されていなかった……。
その代わりに見つけたのが、「AirPlayのミラーリングを有効にする」

画像1

……まあ、SidecarはAirplayの一種だから、iPadにミラーリングする目的でなら使える。

しかし、ワンタップでiPadのデュアルディスプレイ化をしたいんだよなぁ……ということで、この方法は諦めた。
そのうちアプデでできるようになってほしいなぁ。

方法2:Automatorを使う。

Macに標準で入っていて、いろんなことを自動化してくれるありがたいアプリ、Automator。
今回もお世話になろうと起動したはいいが、Sidecar関連のメニューはなかった。
う〜〜ん、ここで手詰まりか……と、諦めきれず検索していると、

参考:https://kk90info.com/【mac】使い方?慣れ?automatorの「記録」を使ってみて/

なんと。Automatorでマウス操作の記録ができるのか。力技っぽくなっちゃうけど、やってみよう。
まずはSidecarで接続後、個別のディスプレイとして使用にチェックを入れておく。
この状態で、Automatorの記録を開始し、素早く接続先に表示されているiPadをクリックする。

画像3

こんな感じ。記録を停止したら、カーソルの速さをMAXまで上げておく。
実行してみたら、おお、ちゃんと動いた!
ワークフローを適当な場所に保存する。

お次はBTTのトリガー設定ですね。
お、よかった。Automatorの設定項目がある。

画像4

「Automatorワークフローを開始」で、作ったワークフローを選択する。

Touch Barのボタンを押してみると……すごく上手くいった。
クリック時に開くメニューは違うはずだけど、Sidecar接続も接続解除も同じボタンでいける。よかった〜!
欲を言うとカーソルが勝手に動き回るのが少し気に入らないけど……。

おまけ:ワークフロー実行中だけカーソルを非表示にする

ここからは余談なので、ワークフロー実行中にマウスカーソルを消したい人だけ読んでいただければ。

はじめはAutomatorでAppleScliptをワークフローに追加しようと試みた。
実行ボタンを押せばうまくいくが、なぜかTouch Bar上のボタンを押しても作動しない……。

ということで、BTT上でAppleScriptをワークフロー起動前後に入れてみたけれど、今度はワークフローの終了を待たずにカーソルが表示されてしまう。
Automatorを確認すると、これは終了までに1.4秒かかってるってことなのかな?
それとも合計で約3秒か?

画像5

どのみち、Sidecarの接続自体も時間がかかるので、どっちでもいっか。
遅延を5秒にしてみたらいい感じ。
BTT上で遅延を設定するとワークフローが上手く働かなかったので、AppleScriptを編集したら上手くいった。

肝心のスクリプトについてだけど、今までAppleScriptの記述をしたことがなかったので、以下の記事のスクリプトを頂いて少し編集しました。
といっても、遅延の秒数も一緒だし、ほぼそのままなんですけれども……。
引用元:マウスカーソルを隠す→表示する – AppleScriptの穴

まず、マウスカーソルを隠すスクリプト。

use AppleScript version "2.4" -- Yosemite (10.10) or later
use framework "Foundation"
use framework "AppKit"
use scripting additions
set curCursor to current application's NSCursor's currentCursor()
current application's NSCursor's hide()

そして、カーソルを5秒後に再表示するスクリプト。

use AppleScript version "2.4" -- Yosemite (10.10) or later
use framework "Foundation"
use framework "AppKit"
use scripting additions
set curCursor to current application's NSCursor's currentCursor()
delay 5
current application's NSCursor's unhide()

上のリンクからスクリプトをダウンロードしたら上2つみたいに編集して、工事道具みたいなボタンを押して(コンバイルして)からそれぞれ保存する。
(もしくは、できる人なら上2つを最初からスクリプトとして作成してもOK)

あとはBTTでワークフローの前にカーソル隠すスクリプトを、後にカーソル再表示するスクリプトを起動するよう設定すれば完了。
ボタンを押したら、ちゃんと思い通りの挙動になったので満足です。

この記事が気に入ったらサポートをしてみませんか?