如何在 Apple Silicon 的機器讓螢幕強制支援 HiDPI

之前寫了一篇 讓你的螢幕也支援 HiDPI 放大模式 的教學,其實不只是 3440x1440,其他外接螢幕也可以用這個方法支援 HiDPI。可惜的是,這個方法在 Apple Silicon 的機器失效了。不過在我稍微研究之後,發現問題蠻好解決的,所以這篇文章就是來教大家如何在 M1 機器開啟外接螢幕的 HiDPI 功能。

更新:

這個方法很快地已經被淘汰了,因為最新版的 BetterDummy 已經改叫 BetterDisplay 了,然後從 1.2.5c 版本開始支援直接透過 GUI 改設定檔解析度,並且也支援 HiDPI!

其實原理就跟下面介紹的方法一樣,只是 BetterDisplay 現在的操作方式更簡單而已。相關討論可以看這裡

 

以下是過時教學:

喔對了忘記提到,有蠻多人在 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 (沒有副檔名)的檔案,內容大概長這樣:

接著把 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 未來修正(或者永遠不會修正)。

2 則留言

  1. 「dyss1992」的個人頭像
    dyss1992

    根据流程操作了一番,我的设备上没有多出 HIDPI 的选项(倒是多出了一些低分辨率的选项),修改的显示器图标也没有生效。

    P.S. 通过 hidpi.sh 设定的几个分辨率组合的确有出现。

    1. 「Hiraku」的個人頭像
      Hiraku

      剛又有新方法了,BetterDummy 可以直接改設定,原理同這個方法,使用之後就可以關掉 BetterDummy 了

      https://github.com/xzhih/one-key-hidpi/issues/213#issuecomment-1153929194

發佈留言