更新进展:
在
https://apple.stackexchange.com/questions/245884 这个帖子的讨论中里发现了
https://github.com/jakehilborn/displayplacer 工具,可以初步解决这个问题。
解决方式:
1. 安装 displayplacer
2. 调整好显示器的位置和旋转方向之后,在终端执行 displaypalcer list 命令,执行后会在结果最下方显示一个恢复到当前配置的命令,记下来
3. 后续遇到识别出错的问题时,可以执行 2 中记录的恢复命令,就会恢复到之前配置好的状态
更自动一点可以通过 alfred 设置个快捷命令执行,或者写个脚本设置为登录后自动执行。
原因分析:
根据前边引用帖子的讨论,猜测 MacOS 在记录显示器配置信息时没有记录硬件 ID ,只记录了显示器型号和名称。例如同型号的两台显示器会被设置为 Display 和 Display(1)。
在系统从睡眠状态恢复时,由于没有记录硬件 ID ,可能是根据处理顺序去设置的外接显示器的名称,这就会概率性出现显示器命名与之前不一致的情况。例如之前被命名为 Display 和 Display(1) 的显示器,变成了 Display(1) 和 Display 。
这个错误可以通过主动干涉显示器的识别顺序来稳定复现,做法是在显示设置里先确认现在的识别顺序,然后拔掉所有扩展显示器的连接线,再以相反的顺序逐个连接(不要同时连接)。
这种错误导致了原来设置为横屏的显示器使用了竖屏设置;竖屏的显示器使用了横屏设置。
displayplacer 能解决问题的原因是它记录了每个显示器的 ID ,根据 ID 去设置显示器的位置和方向。
希望对以后遇到这个问题的同学有些帮助~