環境による条件分岐をKeyboard Maestroで行う

複数のMacを使っている場合、異なる場所で仕事する場合などに環境による条件分岐を行う方法について考えてみました。

この記事内の目次

ユースケース

私の場合、メインのMacBook Pro 2021はDELLの5K2Kモニターにつないでいます。その他は4Kモニターです。横幅が異なるため、ウィンドウサイズの変更やIllustratorのワークスペースで使い分けができることが望ましいのです。

また、次のように出先にて貧弱なWi-Fi環境では、バックグラウンドで走るアプリケーションを抑制したいことがあります。

Wi-Fi名を判定

「The wireless network」+「Wi-Fi名」+「is connected」と指定することで、「Wi-Fi名に接続したら」という条件設定が可能。

これによって、事務所、自宅、それ以外のような条件分岐が可能です。

コンピュータ名

前提条件として、[コンピュータ名]はシステム環境設定の[共有]にて確認(変更)します。

Keyboard Maestroでは、まず、「%MacName%」に対して変数を設定し、Variable Conditionで判定します。

これによって、Macごとの条件分岐が可能です。

ディスプレイの解像度

まず、「%Screen%Main%」に対して変数を設定すると、「0, 0, 2560, 1080」のように「左上の座標、幅、高さ」のようにディスプレイの大きさを参照できます。

この応用で「%Calculate%SCREEN(Main,Width)%」に対して変数を設定すると、「2560」の値が戻りますので、「is =」で判定します(isは文字列のときに利用。数値の場合には「is =」)。

「%Calculate%SCREEN(Main,Width)%」は、「%Calculate%SCREEN(0,Width)%」と書くこともできます。

マルチスクリーンか

「SCREENCOUNT()」でスクリーン数をカウントできます。Calculation Conditionで「SCREENCOUNT() > 1」のように指定することでスクリーン数が2つ以上だったら、の条件分岐が可能です。

Conditions一覧

そもそも、Keyboard Maestroでは、どのようなConditions(条件)が使えるのかを把握しておきたいところ。

Keyboard Maestro 6 Documentation: Conditionsを元にざっくりと訳してみました。

「覚える」必要はありませんが、何ができるかは把握しておくとよさそう。

条件意味
Action Result Condition最後のアクションの結果(OKか、値を持っているか)
Application Conditionアプリが起動中か/前面にあるか
Button Conditionボタンが存在するか/チェックされているか
Calculation Condition計算結果がゼロでないか
Clipboard Conditionクリップボードにテキストか画像を含むか、特定のテキストを含むか
Environment Variable Condition環境変数が存在するか、特定のテキストが存在するか
Found Image ConditionImageで指定した画像がディスプレイ内(ウィンドウ内)に存在するか
Key Condition特定のキーが押されているか
Location Conditionネットワーク名に特定の文字列を含んでいるか
Macro/Macro Group Condition指定したマクロが実行可能か、実行中か
Menu Conditionメニュー項目が存在するか、利用可能か、チェックされているか
Modifiers Condition修飾キーが押されているか
Mounted Volume Conditionディスク(ハードディスク)がマウントされているか
Mouse Button Conditionマウスボタンが押されているか
OCR ConditionOCR後、クリップボードに特定の言語を含むか
Path Conditionファイル(フォルダー)が特定のパスに存在するか
Pixel Conditionスクリーンの特定のピクセルの明るさやカラー、特定のカラーか
Script Conditionスクリプトが成功したか
Text Condition任意のテキストが空か、特定も文字列を持っているか
Typed String Condition入力された(一連の)キーが押されたか
USB Device Condition特定の名称のUSBデバイスが存在するか
Variable Condition指定の変数が存在するか、特定の文字列を持つか
Any Window Condition開いているウィンドウが存在するか、特定の文字列を持つか
Front Window Condition最前面のウィンドウが存在するか、特定の文字列を持つか
Wireless Network ConditionWi-Fi名が特定の文字列を持つか

また、判定には次の4つのオプションがあります。

条件意味
Any of the following are trueいずれかが「正」のとき
All of the following are trueすべてが「正」のとき
None of the following are trueひとつも「正」でないとき
Not all of the following are trueいずれかが「偽」のとき

メモ

実際にマクロを走らせる前に、薄いグレーで判定結果が「currently true」「currently false」のように確認できます。

ところが、本記事で挙げた条件分岐の場合、実際にマクロを走らせないと判定されないようです。