MacBook Air 2020 の画面を 1920 x 1200 へ変更する

# はじめに
- 最近、MacBook Air 2020 を購入しました！
- 私は、MacBook Air と FullHD の外部ディスプレイを使う場合が多いです。
- 外部ディスプレイは、MacBook Air の上側に配置します。
- その場合、MacBook Air と 外部ディスプレイの横幅が 1920 になっていると、使いやすいです。
- 今回、MacBook Air 2020 で 1920 x 1200 を設定する方法を確認しました。
- macOS Catalina で確認しました。
- また、macOS Big Sur では、ファイルの編集が出来ないので、変更出来ませんでした。


# 手順


## DisplayVendorID
- DisplayVendorID を確認します。
- `1552` でした。

```
% ioreg -lw0 | grep DisplayVendorID
    | |   | | |       "DisplayVendorID" = 1552
```


## DisplayProductID
- DisplayProductID を確認します
- `41027` でした。

```
% ioreg -lw0 | grep DisplayProductID
    | |   | | |       "DisplayProductID" = 41027
```


## 16進数へ変換
- DisplayVendorID と DisplayVendorID の16進数を確認します。
- `1552` は `610`
- `41027` は `a043 `

```
% printf '%x %x\n' 1552 41027
610 a043
```


## IODisplayPrefsKey
- IODisplayPrefsKey と上記の16進数と一致するか確認します。

```
% ioreg -lw0 | grep IODisplayPrefsKey
    | |   | | |       "IODisplayPrefsKey" = "IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@0/display0/AppleBacklightDisplay-610-a043"
```


## System Integrity Protection の確認
- 状態を確認します。`enabled` のはずです。
- 再起動します。再起動時は、`command + R` で起動します。


```
% csrutil status
System Integrity Protection status: enabled.
```


## System Integrity Protection の変更
- ターミナルを起動します。
- `disabled` へ変更します。変更後、再起動します。


```
% csrutil disable
```


## mount 状態の変更
- 通常では、設定ファイルを変更できません。
- 以下で、変更を実施します。

```
$ sudo mount -uw /
```


## 1920 x 1200 の base64 値を取得
- 以下で、base64 の値を確認します。
- 参考に 2560 x 1600 の場合も記載します。私は、確認していません。


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

% printf '%08x%08x00\n' $((2560*2)) $((1600*2)) | xxd -r -p | base64
AAAUAAAADIAA
```


## 設定ファイルの変更
- 1920 x 1200 の `AAAPAAAACWAA` を `<array>` の配下へ追記します。
- 設定フォルダやファイルは、`610` や `a043` を含むものが対象です。

```
% sudo vim /System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a043
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>DisplayVendorID</key>
        <integer>1552</integer>
        <key>DisplayProductID</key>
        <integer>41027</integer>
	<key>DisplayProductName</key>
	<string>Color LCD</string>
	<key>DisplayLeakage</key>
	<real>0.419</real>
	<key>DisplayLowestLevel</key>
	<real>2</real>
	<key>DisplayLowestMeasured</key>
	<real>0.4323</real>
	<key>DisplayBacklight</key>
	<real>400.00</real>
	<key>DisplayDarkReflection</key>
	<real>1.00</real>
	<key>DisplayBrightReflection</key>
	<real>405.00</real>
	<key>IOGFlags</key>
	<integer>4</integer>				
	<key>scale-resolutions</key>
	<array>
		<data>AAAPAAAACWAA</data>
		<data>AAANIAAACDQA</data>		
		<data>AAALQAAABwgA</data>		
		<data>AAAKAAAABkAA</data>		
		<data>AAAIAAAABQAA</data>		
		<data>AAAKAAAABkAAAAABACAAAA==</data>	
		<data>AAAKAAAABaAAAAABACAAAA==</data>	
		<data>AAAHgAAABLAAAAABACAAAA==</data>	
		<data>AAAHgAAABDgAAAABACAAAA==</data>	
		<data>AAAFAAAAAtAAAAABACAAAA==</data>	
		<data>AAAGcgAABBoAAAAB</data>		
		<data>AAAFoAAAA4QAAAAB</data>		
		<data>AAAFAAAAAyAAAAAB</data>		
		<data>AAAEgAAAAtAAAAAB</data>		
		<data>AAAEAAAAAwAAAAAB</data>		
		<data>AAADSAAAAg0AAAAB</data>		
		<data>AAADIAAAAlgAAAAB</data>		
		<data>AAACgAAAAeAAAAAB</data>		
		<data>AAANIAAACDQAAAAJAKAAAA==</data>	
		<data>AAALQAAABwgAAAAJAKAAAA==</data>	
		<data>AAAKAAAABkAAAAAJAKAAAA==</data>	
		<data>AAAIAAAABQAAAAAJAKAAAA==</data>	
		<data>AAAKAAAABaAAAAAJAKAAAA==</data>	
		<data>AAAGcgAABBoAAAAJAKAAAA==</data>	
		<data>AAAHgAAABLAAAAAJAKAAAA==</data>	
		<data>AAAHgAAABDgAAAAJACAAAA==</data>	
		<data>AAAFAAAAAtAAAAAJACAAAA==</data>	
	</array>
	<key>target-default-ppmm</key>
	<real>10.0699301</real>
</dict>
</plist>
```

## System Integrity Protection の変更
- 上記の逆の手順で　`enabled` へ戻します。


## ディスプレイ設定
- 以下の様に `1920 x 1200` が追加されます。

![ディスプレイ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/68632/1c78d805-8503-6000-bc04-3fdc94dd62d7.png)


# おわりに
- MacBook Air 2020 で 1920 x 1200 の画面を利用できるようにしました。
- おそらく、MacBook Pro でも同様の作業で変更できます。
- 自己責任でお願いします！！！