macOS Big Surで1920×1200の疑似解像度を追加する

macOS Big Surで1920×1200の疑似解像度を追加するための手順です。
この方法を使えばSIPを無効にせずにディスプレイ環境設定から1920×1200の解像度を選択できるようになります。

スポンサーリンク

手順

必要な設定ファイルをコピー

以下のコマンドで/System/Library/Displaysの中身をすべて/Library配下にコピーします。

sudo cp -R /System/Library/Displays /Library/

Display-IDを確認

ターミナルを開き、以下のコマンドで編集する対象のDisplay-IDを確認します。

ioreg -lw0 | grep DisplayVendorID
ioreg -lw0 | grep DisplayProductID

私のMacbook Pro 13 Late 2013だと以下のようになりました。

DisplayVendorID = 1552
DisplayProductID = 40984

取得した値を以下のコマンドで16進数に変更し、変更後の値をメモしておきます。
※<DisplayVendorID>と<DisplayProductID>は取得した値に置き換えてください

 printf '%x %x\n' <DisplayVendorID> <DisplayProductID>

私の場合は「610」と「a018」になりました。

設定ファイルを編集

以下のコマンドで取得したDisplay-IDに紐づく設定ファイルが格納されているディレクトリに移動します。

cd /Library/Displays/Contents/Resources/Overrides/DisplayVendorID-<DisplayVendorIDを16進数にした値>/

次に以下のコマンドで設定ファイルを開き、編集します。

sudo vi DisplayProductID-<DisplayProductIDを16進数にした値>
<key>scale-resolutions</key>
    <array>
        <data>AAAPAAAACWAAAAAB</data> <!-- 1920x1200(今回追加した値) -->
        <data>AAANIAAACDQAAAAB</data>
        <data>AAALQAAABwgAAAAB</data>
        <data>AAAIAAAABQAAAAAB</data>
        <data>AAAGcgAABBoAAAAB</data>

追加する値は以下のコマンドで取得することができます。
※値はMacの型番によって桁数が異なるので、一度設定ファイルを開いて桁数を確認してください。

16桁の場合

printf '%08x%08x00000001\n' $((1920*2)) $((1200*2)) | xxd -r -p | base64

12桁の場合

printf '%08x%08x00\n' $((1920*2)) $((1200*2)) | xxd -r -p | base64

最後に

CatalinaのときはSIPを無効にしてSystemディレクトリの中身を直接編集する方法が様々なところで紹介されていましたが、この方法ならSIPを無効にせずに追加することができます。
これは以下のページでAppleの中の人と思われる人が説明しています。

ざっくり読んだところ「/Library/に/System/Library/と同じ構成で格納すればそっちを参照するよ」ということらしいです。
こんな方法があるならどこか公式のドキュメントに書いておいてほしいものですね^^;