用软件实现macOS及Windows下快捷切换显示器输入源

最近新入了eGPU,也新入了4k外屏,沉浸在”工作”的喜悦中 🙂
办公桌面有限,也不想把桌面弄的像机舱一样各种屏幕各种线缆,就只留下了这新买的一台外屏显示器,把PC主机通过HDMI的方式连接,把Macbook通过eGPU的DP方式连接.用macOS时就在显示器按键上把输入源选为DP,用Windows时就在显示器通过按键把输入源选为HDMI,虽然不是很麻烦,但也绝对不便捷,所以想着能像快捷键一样在键盘上实现一键切换输入源就好了,于是下了一些功夫查找,还不赖,如愿以偿了.要实现下面的效果,外屏显示器要支持DDC/CI控制,现在大多数显示器都可以支持.

实现的效果是在外屏显示PC下的Windows系统信号时,按 WIN+F11 键,外屏直接切换信号源至Macbook下的macOS系统信号.而外屏显示Macbook下的macOS系统信号时,按 F11 键,外屏直接切换信号源至PC下的Windows系统信号.

首先来实现Windows系统下一键切换,这里借助了一款绿色且免费的软件叫ControlMyMonitor(官网:http://www.nirsoft.net/utils/control_my_monitor.html),下载后放到一固定目录下保存运行:

这时软件窗口可以看到显示器可控的方法和值,注意图中高亮部分,Input Select为输入源,其中Current Value为当前输入口的值,在Possible Values查看可用的值,我这台显示器有2个HDMI,1个DP,一共三个输入口.所以这里显示有16,17,18三个值.PC主机接在了HDMI口,即这里的18.Macbook的eGPU接在了DP口,即16.那么怎么能确定这三个值与输入口的对应关系呢,可以改变值来看结果,比如在cmd中使用这样的命令切换主屏到16对应的输入口:

[软件路径]\controlmymonitor\ControlMyMonitor.exe /SetValue Primary 60 16

命令解释 /SetValue 是ControlMyMonitor软件的内置命令,用于设定值,Primary 代表主显示器,60代表输入源设定,16代表对应的DP输入口,执行后显示器输入源将切换至DP信号源.

接下来找个快捷键设定软件将这段命令设置为快捷键执行即可,我用了WinHotKey(官网:http://www.directedge.us/content/winhotkey),也是免费软件,安装后设定Win+F11快捷键运行可执行程序,即运行ControlMyMonitor,并在高级设定中增加命令行参数 /SetValue Primary 60 16,设定完成后,使用快捷键即可切换输入源为DP接口.参考下图设置:

接下来我们来实现macOS系统下一键切换输入源,之前有关eGPU的教程中我们提到了一款控制外屏亮度调整的软件NativeDisplayBrightness,因为它是开源的,我对它进行了修改,在原有调整屏幕亮度和色温的基础上增加了输入源的控制,将它分享在了github仓库,项目地址为https://github.com/huaikitty/NativeDisplayBrightnessPlus,下载后使用xCode修改项目中的AppDelegate.m文件第 161 行数值为18(通过上面ControlMyMonitor获取到对应的输入口数值):

编译后放入Application目录下即可使用,默认快捷键为F11,可以在软件属性中更改快捷键,按下F11时,外屏将切换至HDMI信号源.

好了,今天教程就写到这里,github上记得点亮小星星哦.

用软件实现macOS及Windows下快捷切换显示器输入源》有17个想法

  1. kk说:

    你好!我的windows主机是dp接口,macmini 是hdmi接口,可以用你这个方法吗?

  2. XK说:

    看一下ControlMyConitor软件顶部Monitor处你要控制的显示器的名称,尝试将Primary替换为对应的显示器如 “\\.\DISPLAY1\Monitor0”,同时要确保输入源设备有信号输出.或者看看显示器设置中是否开启了接受DDC控制.

  3. 泡泡说:

    您好,我的命令行是这样的 C:\ControlMyMonitor\ControlMyMonitor.exe /SetValue Primary 60 17 。我显示器是一个dp口,两个hdmi口。ControlMyMonitor软件出来可能值有4个值0,17,18,15。当前值我接的dp口是15,我四个值都输入过,就是黑屏闪一下,不切换。

  4. XK说:

    从我的仓库Fork后再到你仓库中Open pull request.我收到请求后合并即可.你可以搜索”如何向别人的仓库提交自己的代码”.

  5. EW说:

    没有仓库权限
    新增了两个功能:热键可组合功能键,Input Source Code 可输入设置

  6. EW说:

    博主,我修改了一下Mac下工程的代码,可以用户自己输入inputSource的值,可以提交到你的仓库吗?

  7. 泡泡说:

    你好,我按照输入源里的可能值输入命令行在cmd中执行,就黑一下屏,没有任何变化,右上角也没有输入源的显示框,切换不了输入源,那几个数值我都试了。

  8. 匿名说:

    你好,我试了只能动软件,但是修改参数那一步实现不了,启动之后停留在一个我不想要的显示器上,还要选一下显示器才会出来一堆参数。

  9. XK说:

    首先你先确保切换输入源的命令行在cmd中可执行生效,这样再到热键软件中执行该命令.

  10. 匿名说:

    你好,我也一直在研究这个解决方案,请问winhotkey 的高级参数设置那行命令对么,我怎么点了没反应。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注