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」という関数もありますが、そちらはメニューバーのサイズも含んでしまうため、ウインドウのリサイズには向きません。


Hazelを使って、ファイルダウンロードのタイミングでDownloadフォルダを自動で開くようにする
Brewfileを使ってMac移行時にコマンド1つで必要なアプリを全てインストールできるようにする|Homebrew Bundle
Visual Studio CodeのEasy Sassを使って簡単にSassのコンパイルを行う方法
Alfred4の電卓機能で「x」を乗算記号として認識させる方法
Path Finder 8から大幅に強化されたモジュール機能の設定方法
Google Chromeの開発者ツールに出てくる「[Deprecation] chrome.loadTimes() is deprecated」に関して
Search Consoleのカバレッジで「送信された URL に noindex タグが追加されています」と表示された時の対処法
Webサイト全体をキャプチャするならFull Page Screen Captureがおすすめ
Google Chrome が提供しているベータ版含む4つのバージョンの違いとインストール方法
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
AirPodsで片耳を外しても再生が止まらないようにする方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
Default Folder Xで保存ダイアログ内のファイルリストにフォーカスする方法
Obsidianで整理した知識をAnkiで定着させる方法
Figma × Keyboard Maestroでどこまで効率化できる?
マウス操作の完成度が高いウインドウリサイズアプリ「Magnet」
Macで複数ディスプレイを使っている場合に便利な設定集
AppCleanerでMacアプリを関連ファイルごと完全に削除する
操作に没頭できる!Firefox版 Arcのようなブラウザ「Zen Browser」
chezmoi(シェモア)で始めるdotfiles管理
GitHubの通知を見逃さない!通知に特化したアプリ「Gitify」
Keyboard Maestroの変数基礎