映射Lenovo Yoga X1 v2上亮度按钮的ACPI事件

时间:2017-07-22 22:21:40

标签: brightness acpi

我在我的新联想Yoga X1(版本2)上安装了Ubuntu Gnome 17.04,并且亮度按钮无法开箱即用。我已经完成了下面的步骤(我认为有必要将这些键映射到xrandr调用,但是没有任何反应,即使我记录了成功捕获的键映射事件。如果我手动运行记录的命令亮度适当改变。我在ACPI路线中缺少什么?

首先查看亮度按钮发送的ACPI事件

$ acpi_listen
video/brightnessdown BRTDN 00000087 00000000
video/brightnessup BRTUP 00000086 00000000

然后创建事件定义

$ cat yoga-brightness-up 
event=video/brightnessup BRTUP 00000086
action=/etc/acpi/yoga-brightness.sh up

$ cat yoga-brightness-down 
event=video/brightnessdown BRTDN 00000087
action=/etc/acpi/yoga-brightness.sh down

定义动作脚本

$ cat /etc/acpi/yoga-brightness.sh
#!/bin/sh

# Where the backlight brightness is stored
BR_DIR="/sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-eDP-1/intel_backlight/"

test -d "$BR_DIR" || exit 0

MIN=0
MAX=$(cat "$BR_DIR/max_brightness")
VAL=$(cat "$BR_DIR/brightness")

if [ "$1" = down ]; then
    VAL=$((VAL-71))
else
    VAL=$((VAL+71))
fi

if [ "$VAL" -lt $MIN ]; then
    VAL=$MIN
elif [ "$VAL" -gt $MAX ]; then
    VAL=$MAX
fi

PERCENT=`echo "$VAL / $MAX" | bc -l`

#export XAUTHORITY=/home/ivo/.Xauthority  # CHANGE "ivo" TO YOUR USER
#export DISPLAY=:0.0
export XAUTHORITY=/home/jorvis/.Xauthority
export DISPLAY=:0

echo "xrandr --output eDP-1 --brightness $PERCENT" > /tmp/yoga-brightness.log
xrandr --output eDP-1 --brightness $PERCENT

echo $VAL > "$BR_DIR/brightness"

重新启动acpid

$ sudo /etc/init.d/acpid reload

成功应该写入亮度日志

$ rm /tmp/yoga-brightness.log

[按三次亮度按钮]

$ sudo cat /tmp/yoga-brightness.log 
xrandr --output eDP-1 --brightness .76603773584905660377

正确写入日志,亮度值也是如此:

$ cat /sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-eDP-1/intel_backlight/brightness
759

但实际显示屏上没有任何结果。它的工作 虽然如果我手动运行记录的命令 跑了。

$ xrandr --output eDP-1 --brightness .76603773584905660377

1 个答案:

答案 0 :(得分:1)

阅读完这篇文章后,我再次注意到ENV部分并仔细检查了它。问题是在脚本中设置$ XAUTHORITY。它可以指向我的〜/ .Xauthority(默认情况下不存在),但我需要这样做:

$ ln -s /run/user/1000/gdm/Xauthority ~/.Xauthority

之后亮度按钮工作。