Keyboard Maestroでウインドウのリサイズや移動をするときに使う「SCREENVISIBLE」についてのまとめ

Keyboard Maestroでウインドウの操作をしたいとき、移動なら「Move a Window」アクション、リサイズなら「Resize a Window」を使い、両方を行いたい場合はアクション内にある「Move by(もしくはResize by)」をクリックして、[Move and Resize]を選択します。

ここで数値を入力するとウインドウの操作ができますが、デュアルディスプレイの場合はメインディスプレイを基準とした操作になってしまいます。
今回はこの基準を現在アクティブなディスプレイにする方法についてです。
ウインドウ操作用の関数を使う
入力欄が小さいので気付きませんが、実はウインドウ操作アクションの入力欄には数字だけでなく、Keyboard Maestro独自の関数のようなものも入力できます。
試しに、[Move and Resize]内にある[Custom]以外のいずれかをクリックすると、数字ではない文字列が確認できます。
![[Move and Resize]→[Full Screen]](https://webrandum.net/mskz/wp-content/uploads/2019/07/image_2-18-1024x602.png)
このSCREENVISIBLEがウインドウ操作用の関数です。
カッコ内には2つの引数が設定でき、1つ目の引数には「値を取得したいディスプレイ」、2つ目の引数には「取得したい値」を入力することで、ディスプレイの情報が取得できます。

上記の例の場合は「Main(メインディスプレイ)のTop(1番上の値)を取得する」という意味になります。
1つ目の引数一覧
1つ目の引数には下記のような値が入力できます。
| 使える引数 | 説明 |
|---|---|
| Main | メインディスプレイ([システム環境設定]→[ディスプレイ]→「配置」から変更) |
| Second | 2つ目のディスプレイ |
| Third | 3つ目のディスプレイ |
| Internal | Macの画面 |
| External | 外部ディスプレイ |
| Mouse | マウスがあるディスプレイ |
| Front | 現在アクティブになっているディスプレイ |
| Back | (左から数えて1つ目の)現在アクティブになっていないディスプレイ |
| Back2 | (左から数えて2つ目の)現在アクティブになっていないディスプレイ |
2つ目の引数一覧
2つ目の引数には下記のような値が入力できます。
| 使える引数 | 説明 |
|---|---|
| Left | 左の値 |
| Right | 右の値 |
| Top | 上の値 |
| Bottom | 下の値 |
| Width | ディスプレイの横幅 |
| Hieght | ディスプレイの高さ |
| MidX | ディスプレイの真ん中までの距離(横) |
| MidY | ディスプレイの真ん中までの距離(縦) |
使うときのポイント
1つ目の引数は「Main」ではなく「Front」か「Mouse」を使うことで、デュアルディスプレイにも対応したウインドウの移動やリサイズが行なえます。
また、関数のあとに四則演算を行って、数字をさらに調整することもできます。
下のマクロは、ウインドウサイズを画面の縦横80%にするものです。

位置に関しては、アクティブなディスプレイの真ん中から、ディスプレイサイズを40%にした値を引いています(この40%は、ウインドウサイズ80%の半分です)。
横幅と高さに関しては、それぞれの値を80%にしています。
このように、少し複雑な位置とリサイズも、計算を工夫すれば簡単に実現できます。
SCREEN関数
ちなみに、似た関数に「SCREEN」という関数もありますが、そちらはメニューバーのサイズも含んでしまうため、ウインドウのリサイズには向きません。

キーボードショートカット以外の新しい選択肢、左手用インプットデバイス「Orbital 2」
macOS Mojaveに移行したタイミングでPathFinder8にバージョンアップしました
Macログイン時に自動起動するアプリの管理方法
ATOKの「ATOKパレットの表示」「単語登録」ショートカットキーが、Emacsキーバインドと被るので変更したい
Macのキレイなマインドマップアプリ「MindNode 6」
Hazelを使って、ファイルダウンロードのタイミングでDownloadフォルダを自動で開くようにする
Alfred 4のClipboard History機能で、前にコピーした内容をペーストする方法
刷新されたAlfred 4のテーマエディタでエディタのカスタマイズと、公開テーマのインポート方法
Google日本語入力の基本的な設定項目
Keyboard MaestroのThird Party Plug Insの作り方
iTerm2で「Use System Window Restoration Setting」を設定しているとアラートが表示されて機能しない
Google Chromeのサイト内検索(カスタム検索)機能を別のプロファイルに移行する方法
iPadで入力モードを切り替えずに数字や記号をすばやく入力する方法
iPhoneやiPadでYouTubeの再生速度を3倍速や4倍速にする方法
Keynoteで有効にしているはずのフォントが表示されない現象
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
AirPodsで片耳を外しても再生が止まらないようにする方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
1つのノートアプリにすべて集約するのをやめた理由|2025年時点のノートアプリの使い分け
Notionログイン時の「マジックリンク」「ログインコード」をやめて普通のパスワードを使う
AlfredでNotion内の検索ができるようになるワークフロー「Notion Search」
Gitで1行しか変更していないはずのに全行変更した判定になってしまう
Macでアプリごとに音量を調節できるアプリ「Background Music」
Macのターミナルでパスワード付きのZIPファイルを作成する方法
MacBook Proでディスプレイのサイズ調整をして作業スペースを広げる
SteerMouseの「自動移動」機能で保存ダイアログが表示されたら自動でデフォルトボタンへカーソルを移動させる
iPhoneでタッチが一切効かなくなった場合に強制再起動する方法