之前一直用着switchResX,但是手贱升级到macos10.14之后就失效了。只好另寻别的方法了。

准备工作

  1. RDM,开源的更改分辨率插件(快捷下载
  2. PlistEdit PRO,plist文件修改器
  3. 在线16进制和10进制互转工具

1. 关闭系统完整性保护(SIP)

重启mac,开机的时候按住command+R进入恢复模式,然后打开终端输入csrutil disable关闭SIP。

等修改完分辨率后可以重复上述操作,在终端输入csrutil enable保证电脑的安全性。

2. 开启hidpi

电脑开机进入系统后打开终端输入

sudo defaults write /Library/Preferences/com.apple.windowserver DisplayResolutionEnabled -bool YES

回车后输入管理员密码即可。

3. 获取显示屏的DisplayVendorIDDisplayProductID

先拔掉外接显示器,输入以下命令记录内置显示屏的ID,然后接上外接显示屏再输入一次命令记录外接显示屏的ID(如果有多个显示器就一个一个来)。

ioreg -l | grep "DisplayVendorID"
ioreg -l | grep "DisplayProductID"

我的DisplayVendorID是4268(十六进制是10ac),DisplayProductID是41156(十六进制是a0c4)。

4. 创建配置文件

  1. 创建一个DisplayVendorID-10ac文件夹10acDisplayVendorID值对应的十六进制
  2. 创建一个DisplayProductID-a0c4文件a0c4DisplayProductID值对应的十六进制。这个文件放到上面的那个文件夹内。

5. 编辑DisplayProductID-a0c4文件

这里有一份已经写好的模板,先用其他编辑器打开,把内容复制进去。再用PlistEdit PRO打开(不用PlistEdit PRO看到的内数据是类似AAAKAAAABkAAAAABACAAAA==的)。

<?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>32795</integer>
    <key>DisplayVendorID</key>
    <integer>2513</integer>
    <key>scale-resolutions</key>
    <array>
        <data>
        AAAKAAAABkAAAAABACAAAA==
        </data>
        <data>
        AAAUAAAADIAAAAABACAAAA==
        </data>
        <data>
        AAAKAAAABDgAAAABACAAAA==
        </data>
        <data>
        AAAUAAAACHAAAAABACAAAA==
        </data>
        <data>
        AAAHgAAABDgAAAABACAAAA==
        </data>
        <data>
        AAAPAAAACHAAAAABACAAAA==
        </data>
        <data>
        AAAGkAAABBoAAAABACAAAA==
        </data>
        <data>
        AAANIAAACDQAAAABACAAAA==
        </data>
        <data>
        AAAGQAAAA4QAAAABACAAAA==
        </data>
        <data>
        AAAMgAAABwgAAAABACAAAA==
        </data>
        <data>
        AAAFoAAAA4QAAAABACAAAA==
        </data>
        <data>
        AAALQAAABwgAAAABACAAAA==
        </data>
        <data>
        AAAINAAAA4QAAAABACAAAA==
        </data>
        <data>
        AAAQaAAABwgAAAABACAAAA==
        </data>
    </array>
</dict>
</plist>

array项中添加你想要的分辨率(这下面的分辨率是已经设置好的了,有适用的分辨率可以直接看第7步)。

假设我要设置1920*1080的分辨率则对应的十六进制值是00000780 00000438,后面需要拼接上00000001 00200000。(00000780是1920,00000438是1080)

分辨率 十六进制值
1920 * 1080 00000780 00000438 00000001 00200000
3840 * 2160 00000F00 00000870 00000001 00200000

7. 替换文件

将改好后的文件夹拷贝到/System/Library/Displays/Contents/Resources/Overrides/中重启电脑后打开RDM修改分辨率即可。

如果有重复的DisplayVendorID-10ac的目录,可以选择只替换里面的文件。也可以替换目录。

参考资料

http://www.cocoachina.com/ios...


ci0n
195 声望7 粉丝

一个前端