之前寫了一篇 讓你的螢幕也支援 HiDPI 放大模式 的教學,其實不只是 3440×1440,其他外接螢幕也可以用這個方法支援 HiDPI。可惜的是,這個方法在 Apple Silicon 的機器失效了。不過在我稍微研究之後,發現問題蠻好解決的,所以這篇文章就是來教大家如何在 M1 機器開啟外接螢幕的 HiDPI 功能。
喔對了忘記提到,有蠻多人在 Apple Silicon 都會推薦使用 BetterDummy 來開啟 HiDPI,但是我比較喜歡我用的方法,一來不需要安裝任何第三方 App,而來 BetterDummy 是投射畫面的方式顯示,多少會有性能損耗才對(?),但透過直接改設定檔的方式就原生許多了。
目前我在 macOS 12.4 測試是可以用,但是根據討論,有可能 macOS 12.4 之前的機器不會出現 HiDPI 選單,所以如果你不是 macOS 12.4 以上然後失敗的話,可以先試試看升級系統。
那麼,教學開始!首先,請先按照 讓你的螢幕也支援 HiDPI 放大模式 這篇文章操作,設定好你想要的解析度,讓腳本產生設定檔,然後「不要」馬上重新開機。
接著,Finder 前往路徑 /Library/Displays/Contents/Resources/Overrides
,會看到有一個 DisplayVendorID-0
的資料夾,裡面有檔案開頭是 DisplayProductID-0
的檔案(如果你有自訂顯示器圖示,可能會有多個檔案)。
接著,請在終端機輸入 ioreg -lw0 | grep -i "DisplayAttributes"
,結果長得像是這樣:
| | | | "DisplayAttributes" = {"SupportsSuspend"=No,"MaximumRefreshRate"=100,"SupportsActiveOff"=No,"PortID"=49,"ProductAttributes"={"ManufacturerID"="MSI","YearOfManufacture"=2021,"SerialNumber"=0,"ProductName"="MAG342CQRV","AlphanumericSerialNumber"="xxxxxxxxxxxxxxxx","LegacyManufacturerID"=13929,"ProductID"=15798,"WeekOfManufacture"=12},"MaxVerticalImageSize"=33,"MaxHorizontalImageSize"=79,"HasHDMILegacyEDID"=No,"Chromaticity"={"Red"={"X"=44416,"Y"=20224},"Green"={"X"=13248,"Y"=45184},"Blue"={"X"=9728,"Y"=3328}},"DefaultColorSpaceIsSRGB"=No,"NativeFormatHorizontalPixels"=3440,"DefaultWhitePoint"={"X"=20544,"Y"=21568,"Gamma"=144179},"SupportsVariableRefreshRate"=No,"AspectRatio"=17,"MinimumRefreshRate"=48,"WhitePoints"=({"X"=20544,"Y"=21568,"Gamma"=144179}),"PreciseAspectRatio"=156889,"ContinuousFrequencySupport"="CVT","SupportsStandby"=Yes,"NativeFormatVerticalPixels"=1440}
找到 LegacyManufacturerID 跟 ProductID 兩個數字,例如我這台螢幕 LegacyManufacturerID 是 13929,ProductID 是 15798。
接著,用文字編輯器(或者 VSCode、Sublime …)打開 DisplayProductID-0 (沒有副檔名)的檔案,內容大概長這樣:
<?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>DisplayProductID</key> <integer>0</integer> <key>DisplayVendorID</key> <integer>0</integer> <key>scale-resolutions</key> <array> <data>AAAXcAAAD6AA</data> ...... </array> <key>target-default-ppmm</key> <real>10.0699301</real> </dict> </plist>
接著把 DisplayProductID 下面的 0 改成 ProductID 的數值,DisplayVendorID 下面的 0 改成 LegacyManufacturerID 的數值,然後存檔。
接著修改檔名,把所有 DisplayProductID-0
的檔案名稱的 0 改成 ProductID 的十六進位小寫數值。這裡有十進位轉十六進位的轉換器,或者你會的話,用 macOS 內建的計算機也可以轉換。
舉例來說,我 ProductID 15798 轉換成十六進位是 3db6,所以檔名是 DisplayProductID-3db6
。同理,資料夾的 DisplayVendorID-0 也改成十六進位名稱,例如我的 LegacyManufacturerID 13929 轉換後是 3669,所以資料夾就是 DisplayVendorID-3669
。
改完之後重新開機,在顯示器這邊就會顯示 HiDPI 的解析度了
如果用了不喜歡,刪掉 DisplayVendorID-xxxx
的資料夾,重開機即可。
最後要補充一下,如果你同時有 Intel 跟 Apple Silicon 的機器,會發現 Apple Silicon 無論是這樣改還是使用 BetterDummy 開啟 HiDPI,文字解析度還是會比 Intel 的機器模糊一些,這個目前好像無解,只能等待 Apple 未來修正(或者永遠不會修正)。
這篇文章 如何在 Apple Silicon 的機器讓螢幕強制支援 HiDPI 最早出現於 Hiraku Dev。