如何关闭背光但保持 LCD 开启?

如何关闭背光但保持 LCD 开启?

如何在亮度控制上具有非零最小亮度的笔记本电脑上设置零亮度?

无论 XIe 是什么,该解决方案都应该工作,它也应该在虚拟终端中工作。

答案1

在采用 Intel 芯片组的笔记本电脑领域,LVDS 连接面板和 eDP 连接面板之间似乎存在区别:

电子数据处理:

echo 4 > /sys/class/backlight/intel_backlight/bl_power

…应该关闭背光。

echo 0 > /sys/class/backlight/intel_backlight/bl_power

……应该再次打开它。

LVDS:

我发现无法通过 sysfs 关闭 Thinkpad X201 和 X201 平板电脑上的背光(bl_power 不执行任何操作;显然,它是 eDP 特定的)。

这一页对 Linux 内核中背光控制的复杂历史进行了非常冗长的描述。长话短说:

i915 从 v3.18 开始支持 eDP 面板的 bl_power(但不支持 LVDS)。

然而,intel_backlight我已经能够通过使用名为的工具来关闭背光英特尔 GPU 工具。这需要 root,因为它显然写入原始寄存器。

intel_backlight 0

...为我关闭了背光。使用亮度调整控件将其调高,可在此处重新启用它。

我还编写了一个脚本,将其连接到键盘生成的 ACPI 事件上(在我的例子中,为 fn+space 或 )button/zoom。如果您的系统不使用该 ACPI 事件,则需要使用 acpi_listen 来查找您想要的事件。系统确实有。

为了触发它,我创建了一个名为的fnspace-backlight文件/etc/acpi/events

# Wyatt Ward
# hook for magnify acpi event (fn+space)
# toggle LCD backlight on/off
event=button/zoom
action=/etc/acpi/actions/toggle-lcd-light.sh

我还制作了一个名为 的文件/etc/acpi/actions/toggle-lcd-light.sh,标记为可执行文件。这让我可以切换背光,而无需更改之前设置的亮度级别,并将临时值存储在/brightness.由于 ACPI 事件以 root 身份运行操作,因此请小心。

#! /bin/bash
BRIGHTSAVEFILE="/brightness"
BRIGHTSYSFS="/sys/class/backlight/acpi_video0/brightness"

# is the light on or off?
INTEL_BACKLIGHT="/usr/bin/intel_backlight"
light_state=$("$INTEL_BACKLIGHT" | sed 's/current backlight value: //g'|sed 's/%//g')
echo "light: ""$light_state"
if [ "$light_state" -eq 0 ]; then
  cat "$BRIGHTSAVEFILE" > "$BRIGHTSYSFS"
else
  # back up current brightness level
  cat "$BRIGHTSYSFS" > "$BRIGHTSAVEFILE"
  # turn off backlight
  "$INTEL_BACKLIGHT" 0
fi

补充一点有趣的是,您可以通过稍微修改 intel_backlight 来以令人难以置信的粒度控制背光。将其更改为将参数读取为浮点数而不是整数,并进行浮点算术,只需要调整几行代码,即可让您进行极其精确的亮度更改,包括低于通过 sysfs 获得的最小值的亮度更改。

答案2

从 X Windows

在 X Windows 中,您可以使用该应用程序xbacklight获取和设置屏幕的亮度百分比。

例子

当前水平

$ xbacklight -get
100.000000

设置为 75%

$ xbacklight -set 75
$ xbacklight -get
73.333333

设置回 100%

$ xbacklight -set 100
$ xbacklight -get
100.000000

从控制台

要实现虚拟终端的类似功能,您可能需要通过/sys文件系统与 ACPI 设置进行交互。

例子

调暗它

$ echo "10" | sudo tee /sys/class/backlight/acpi_video0/brightness 
10

全亮度

$ echo "15" | sudo tee /sys/class/backlight/acpi_video0/brightness 
15

你必须使用这个,亮度范围可以从0-9或0-15,我相信这最终取决于你的笔记本电脑。

这些都不起作用吗?

如果这两个选项都不满足您的需求,请查看 ArchLinux Wiki 的主题:背光。那篇文章包含了我见过的实现这一目标的所有方法!

参考

相关内容