最近新しくモニターを買ったのですが、画面がフルスクリーンで表示されない問題が発生しました。
画面内に黒い余白が上下左右にできてしまうため、せっかく大きいサイズのモニターを買っても台無しです。
必死に30分くらい調べたら、案外すぐにできましたので、記事にしていきます。
ちなみに環境は、Mac Mojave 10.14.4です。
原因と思われること
アンダースキャンの設定を接続したTVごとにいじった
アンダースキャン とは、実際の画面を小さく表示することを言うようで、今回の現象に該当します。
詳しくは分かりませんが、色んなモニターやTVをMacと接続する度にアンダースキャンの設定をしていたため、それらの設定が悪影響を及ぼしているのではないかと思われます。
実際に、後述する /private/var/db/.com.apple.iokit.graphics で各モニターのアンダースキャンの設定の記述を発見しました。
そのアンダースキャン設定のどれかが新しく買ったモニターに適用されているため、画面がフルで表示されていない可能性が高いです。
アンダースキャンの設定ができない
アンダースキャンが適用されてしまっているなら、システム環境設定 > ディスプレイでアンダースキャン設定すればいいじゃないか!
と思われるかもしれませんが、ぼくが買ったモニターにはアンダースキャンを設定する項目がありませんでした。
途方に暮れてググっていたら、なんとコマンドライン上でできることが分かりました。
ただ、ググった情報通りに作業を行ってもぼくの環境では改善されませんでした。
試行錯誤した結果、外部モニターに関する設定を丸々消すという対処法で解決しましたので、そのやり方を段階を踏んで紹介していきます。
アンダースキャン不具合の解決法
Macのモニター設定をしているファイルをコマンドライン上で開く
- ディスプレイのキーを取得する
下記のコマンドを実行して、修正対象のディスプレイのキーを取得します。
ioreg -lw0 | grep IODisplayPrefsKey
このコマンドで、現在接続されているディスプレイのキー(IODisplayPrefsKey)を取得することができます。
ただ、複数キーが表示されるためディスプレイケーブルを抜き差しして、差分を確認して、対象のディスプレイのキーを判別してください。
- ディスプレイの設定ファイルを初期化する
対象のディスプレイのキーが分かったら、次はディスプレイの設定ファイルの初期化を行います。
下記のファイルをお好きなエディタで編集して初期化を行います。
/private/var/db/.com.apple.iokit.graphics
今回の例では、vimで編集を行います。
sudo vim /private/var/db/.com.apple.iokit.graphics
先程取得したディスプレイのキー(IODisplayPrefsKey)の箇所を探します。
該当のキーの箇所の1行下の<dict>直下の
<key>pscn</key>の1行下の<integer>10000</integer>の値が、どのようになっているかお使いの環境で確認してみてください。
10000以下の場合は、アンダースキャンが設定されてしまっている状態のため、この値を10000に設定して保存してください。
これで通常だとアンダースキャン設定がもとに戻るはずです。
(再起動が必要かもしれないです。)
上記でうまく行かない場合
僕の環境下では、これまで説明した内容でアンダースキャン設定が初期化されませんでした。。
値を変更して該当のファイルを開きなおすと再度<integer></integer>の値がもとに戻ってしまいました。。
そのためぼくの環境では荒療治を行いました。
その方法とは、今回直したい対象ディスプレイのキー以下の設定を全部消してしまうという方法です!
ぼくは、この作業でアンダースキャン設定が元に戻りました。
該当の<key></key>と<dict></dict>の内容をそれぞれ削除して保存し、再起動すると治りました。
是非、試してみてください。
※これでディスプレイ環境がおかしくなっても責任は負いかねますので、ご自身の責任の下行ってください。