脚本如下:
#!/bin/bash
# 读取HDMI连接状态
status=$(cat /sys/class/drm/card0-HDMI-A-1/status)
tty=/dev/ttyFIQ0
# 拔出事件
if [ "$status" = "disconnected" ]; then
echo "HDMI disconnected..." > $tty
sudo xrandr --output HDMI-1 --rotate normal
# 插入事件
else
echo "HDMI connected..." > $tty
sudo xrandr --output HDMI-1 --rotate left
fi
在此之前我也尝试在开机启动脚本中加入xrandr指令(屏幕自身是竖屏),虽然开机脚本加入了旋转指令可以让其开机显示横屏,但是一拔插hdmi线,就会又回到竖屏显示 。
ps:主板是rk3568的hdmi输出,接转接板(hdmi转mipi)到屏幕的(屏幕自身是竖屏)。需求是想让竖屏横显,且拔插hdmi线不会回到原来角度(现在是一热插拔hdmi,原本转换成的横屏就又变成竖屏了)
如果xrandr执行结果符合你的要求, echo打印的字符串又能正确显示,那就是权限问题.
自动脚本里肯定不能用sudo命令.用其他办法让脚本获取root权限吧
但是如果是权限的问题那么脚本是不能执行的呀,会不会是这个指令没有起到作用?我试了拔插hdmi线时粘贴旋转指令到终端回车执行,情况是黑屏状态下粘贴执行无效,只有屏幕亮了显示ui时执行才有效。如果是权限问题的话,我该如何获得root权限呢?
@雒河桥南: udev应该是root执行的,不过sudo也是不需要的. 如果是需要延迟执行,那你在脚本里加个sleep等下试试看
@www378660084: sleep几秒,它就黑屏几秒,亮屏后还是竖屏( 按理应该sudo xrandr --output HDMI-1 --rotate left变横屏的)
@雒河桥南: 那就是hdmi也有个trigger,在你这个后面执行了...你可以找到这个trigger把它去掉. 或者后台再启动个脚本,在后台脚本里加sleep,保证你的切换最后执行
@雒河桥南: https://baijiahao.baidu.com/s?id=1775100853162321423&wfr=spider&for=pc
https://blog.csdn.net/jay547063443/article/details/132214775
这里有两个切换hdmi方向的,要不你参考下看看有没有有,可能不用监控udev那么麻烦