macos - 如何设置显示器以通过键盘快捷键或“热键”进行更改?
问题描述
我在 macOS 上使用 2 台显示器。在 System Preferences >> Displays >> Appearances 下,我可以更改显示设置,以便显示器并排,一个在另一个之上,等等。
我经常需要将设置从一个并排更改为一个在另一个之下,而且每次都必须进入系统偏好设置并手动更改它是很痛苦的。
我该如何设置它,以便当我按下一些“热键”或键盘快捷键时它会自动执行?
我可以访问 Alfred for Mac,因此可以在自定义工作流程中编写代码,这将有助于实现这一目标。
任何想法将不胜感激!
解决方案
这是一个调用 python 脚本在显示集之间切换的脚本。它仅设置为更改第二个显示器的相对位置,但可以轻松扩展为与三个或更多显示器一起使用。
请注意,您不必对新位置非常精确。Quartz 会自动调整以提供最接近的配置,其中显示空间无缝接触。
set displaySet to first item of ¬
(choose from list {"On left", "On right", "On top", "On bottom"} ¬
with prompt "Choose position for second display.")
(* assuming 1280 x 800 pixel displays *)
if displaySet is "On top" then
changeSecondDisplayOrigin(0, -800)
else if displaySet is "On bottom" then
changeSecondDisplayOrigin(0, 800)
else if displaySet is "On left" then
changeSecondDisplayOrigin(-1280, 0)
else
changeSecondDisplayOrigin(1280, 0)
end if
on changeSecondDisplayOrigin(x, y)
do shell script "
/usr/bin/python <<END
import objc
import Quartz
from Quartz.CoreGraphics import CGGetActiveDisplayList
from Quartz.CoreGraphics import CGBeginDisplayConfiguration
from Quartz.CoreGraphics import CGConfigureDisplayOrigin
from Quartz.CoreGraphics import CGCompleteDisplayConfiguration
(activeErr, activeDisplays, displayCount) = Quartz.CGGetActiveDisplayList(2, None, None);
secondDisplay = activeDisplays[1];
(configErr, displayConfigRef) = CGBeginDisplayConfiguration(None);
moveErr = CGConfigureDisplayOrigin(displayConfigRef, secondDisplay, " & x & ", " & y & ");
completeErr = CGCompleteDisplayConfiguration(displayConfigRef, 2);
END"
end changeSecondDisplayOrigin
推荐阅读
- javascript - Ajax 请求失败:JSON 意外结束
- c# - 在 WPF 中将可点击的超链接实现到数据网格中
- c++ - 如何调试使用循环和排序的程序?
- java - 单线程执行期间事务失败
- ubuntu - 负载测试:不稳定的错误“连接被拒绝”
- python-3.x - 计算给定时间范围内的最大 CPU Python
- arrays - 如何在 Microsoft Access VBA 中将字符串转换为实际的表单标签标题?
- java - Cassandra 服务失败
- docker - docker-compose 中的环境变量被替换为空字符串
- regex - 当替换器具有特殊字符时,Perl 中的文字字符串替换