gpt4 book ai didi

linux - 如何在英特尔显卡上为 "monitor plugged"创建回调?

转载 作者:IT王子 更新时间:2023-10-29 00:14:45 25 4
gpt4 key购买 nike

我有一台带英特尔显卡的eeepc。我想将脚本挂接到通过 VGA 插入的监视器事件。如何做到这一点?

最佳答案

作为一个粗略的解决方案,您可以轮询 sysfs。在我的笔记本电脑上,我有:

$ cat /sys/class/drm/card0-LVDS-1/status
connected

$ cat /sys/class/drm/card0-VGA-1/status
disconnected

我猜这需要内核 DRM,可能还需要 KMS。

要查看您是否可以自动触发某些内容,您可以运行 udevadm monitor --property,并在(断开)连接监视器时观察是否报告了事件。

对于我的 radeon,我在第一次连接 VGA 显示器时收到一个事件,但在随后的断开连接和重新连接时没有任何事件。该事件应类似于(以您的事件为例):

KERNEL[1303765357.560848] change /devices/pci0000:00/0000:00:02.0/drm/card0 (drm)
UDEV_LOG=0
ACTION=change
DEVPATH=/devices/pci0000:00/0000:00:02.0/drm/card0
SUBSYSTEM=drm
HOTPLUG=1
DEVNAME=dri/card0
DEVTYPE=drm_minor
SEQNUM=2943
MAJOR=226
MINOR=0

不幸的是,没有太多可以匹配的,但只要图片中只有一张显卡就不是太重要了。找到 udev 从您的系统中获取规则的位置(可能是 /etc/udev/rules.d/),并创建一个 99-monitor-hotplug.rules 文件:

ACTION=="change", SUBSYSTEM=="drm", ENV{HOTPLUG}=="1", RUN+="/root/hotplug.sh"

udev 将在连接显示器时运行 hotplug.sh。作为测试,我将以下内容放入 /root/hotplug.sh(不要忘记使该脚本可执行):

#!/bin/sh

for output in DVI-I-1 LVDS-1 VGA-1; do
echo $output >> /root/hotplug.log
cat /sys/class/drm/card0-$output/status >> /root/hotplug.log
done

这样,在连接外接显示器后,我在 hotplug.log 中得到了一个条目。即使针对 ACTION=="change" 进行过滤,我仍然会在启动时收到一些事件,因此您可能希望在脚本中以某种方式考虑到这一点。

关于linux - 如何在英特尔显卡上为 "monitor plugged"创建回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5469828/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com