我使用 ddcutil 作为命令行替代物理按下显示器上的按钮来将输入从 HDMI 更改为 DisplayPort,并将其初始设置为使用两个命令从一个切换到另一个 -
ddcutil -d 1 setvcp 60 0x0f
告诉显示器切换到 DisplayPort(-d 1 表示“display 1”,“setvcp”是更改设置的命令,“60”是显示器的输入功能代码,“0x0f”是显示端口的代码),并且ddcutil -d 1 setvcp 60 0x11
与 HDMI 代码“0x11”相同
这两个命令成功运行并且符合预期。
我目前需要帮助的是创建一个脚本,检查显示器的当前状态并根据当前状态切换到其他输入。这样我就可以将脚本绑定到键盘上的一个“切换”按钮,而不是有两个单独的按钮,一个用于 DP,一个用于 HDMI。
ddcutil 的手册页表明该命令ddcutil -d 1 getvcp 60 --brief
将返回显示器的当前状态 - 我试过了,它在显示端口上似乎可以工作;在显示端口上时的输出是:VCP 60 SNC x0f
。当我切换到 HDMI 并运行相同的命令时,输出是相同的:“VCP 60 SNC x0f”。
因此这实际上可能是一个双管齐下的问题:
- 您能帮我弄清楚为什么在 HDMI 上 getvcp 命令没有返回预期的“VCP 60 SNC x11”吗?我认为弄清楚这一点可能是我第二个问题的先决条件:
- 你能帮我写一个如上所述的 bash 脚本吗?
答案1
我是dd工具
x60(输入源)功能的行为因显示器而异。有些显示器只接受来自当前输入源的命令,而有些则接受来自任何源的输入。鉴于 setvcp 适用于 getvcp 失败的情况,我怀疑这是显示器 DDC/CI 实现中的一个错误。
值得尝试的一件事是在 setvcp 之后立即发出命令“ddcutil scs”(保存当前设置)。有些监视器会执行此命令,有些则不会,而且它们的解释方式也各不相同。
还有一点需要注意:有些显示器只接受当前选定输入的 DDC/CI 命令,而其他显示器则接受任何输入的 DDC/CI 命令。您是否测试过输入源的 getvcp 命令?如果 HDMI 输入源是 Windows,您可以使用 EnTech 的 softMccs 发出任何 DDC 命令。