通过硬件亮度开关实现细粒度控制

通过硬件亮度开关实现细粒度控制

因此,每当我按下键盘上的调暗/调亮键时,就会弹出一个带有屏幕亮度的通知气泡。这一切都很好,但我希望能够更改每次按下按键时亮度的变化程度。

例如,目前只需按 5 次即可从完全黑暗变为最亮设置。但是,我从“亮度/锁定”设置中知道,屏幕能够实现比这更小的间隔。

有没有办法可以改变每次按下按键时亮度跳跃的程度?

答案1

由于您没有指定您使用的桌面环境,我还将提供一些特定于 KDE 的详细信息。

我刚刚将 KDE 更新到 4.9.2,遇到了同样的不便。我决定深入研究代码,以下是我的结论:

  1. 亮度其实是由内核自己控制的,根据 KDE 的 PowerDevil 源代码,内核提供控制接口的基本方式有两种:
    • sysctl()系统调用(我猜可能是在 *BSD 系统上)
    • 系统文件系统界面(可能是 Linux)
  2. 系统文件系统界面位于/sys/class/backlight/*your_backlight_type*/。它对我来说是这样的:
    $ ls -1 /sys/class/backlight/intel_backlight/
    实际亮度
    bl_power
    亮度
    设备
    最大亮度
    力量
    子系统
    类型
    事件
    现在有两个文件与我们相关: brightnessmax_brightness。它们的使用方法如下:
    $ cd /sys/class/backlight/intel_backlight
    $ cat 最大亮度
    976
    $ 猫亮度
    176
    $ echo 77 | sudo tee 亮度
    77
    
    第一个命令让你确定可以设置的最大亮度(最小值始终为零)。第二个命令让你知道实际亮度设置为多少。第三个命令可以将其设置为任意值(在 范围内)[0; max_brightness]
  3. KDE 的 KRunner 仍然可以自由设置任何亮度级别。按 Alt-F2 并输入:

    屏幕亮度 17

  4. KDE 的键盘Brightness UpBrightness Down按键处理代码已将增量值 10% 硬编码。因此,除非您想从源代码构建 KDE,否则您无法对其进行任何操作。

  5. KDE 的 BatteryMonitor plasmoid 有自己的亮度控制,其增量也硬编码为 10%,但现在我们很幸运,因为它是用 QML 编写的$ sudo nano /usr/share/kde4/apps/plasma/plasmoids/battery/contents/ui/PopupDialog.qml:(更新:在 KDE 4.11 中它被移到了BrightnessItem.qml),导航到如下部分

    组件.滑块 {
            id:亮度滑块
            最小值:0
            最大值:100
            步长:10
            onValueChanged:亮度改变(值)
        }
    并将步长更改为您想要的大小。重新登录后,您将看到更改。

答案2

这是我做的,对我来说效果好多了。我的屏幕亮度有很多增量,因为它是 LED 背光,有人想到利用这一点。

sudo apt-get install xbacklight
# ..and test it..
xbacklight -dec 20
xbacklight -inc 20
# If this works for you, you can proceed

我使用的是 KDE,但这也适用于 Gnome。对于 KDE:

  • 打开系统设置
  • 打开快捷方式和手势
  • 选择自定义快捷方式在左侧栏中,如果尚未选择
  • 右键单击操作列表的空白部分,然后选择新建->全局快捷方式
  • 创建一个名为“亮度调高”和一个名为“亮度调低”
  • 为了扳机,使用亮度调高/调低键。这些会与默认设置冲突,但您可以将其重新分配给此操作。
  • 为了行动,输入(例如)“xbacklight -inc 3”或“xbacklight -dec 3”(减去引号)
    • 数字越大,背光增加/减少幅度越大,数字越小,背光减少/增加幅度越小。

您还可以设置特定的百分比:

xbacklight -set 100

有时,增量或百分比的改变可能没有效果。这是因为硬件只允许特定的设置,并且使用最接近所选百分比的设置。

顺便说一句,我很高兴地发现,尽管这是一个进行更改的较低级程序,但 KDE 仍然可以识别屏幕亮度已改变并适当地显示亮度百分比。:-)

答案3

通过硬件亮度开关实现细粒度控制

首先,安装xbacklight

$ sudo apt install xbacklight

其次,检查您是否可以控制背光。

$ xbacklight -1
$ xbacklight +5

如果这些命令导致No outputs have backlight property错误,那么按照以下补救步骤然后才能继续。

一旦从命令行启动xbacklight -1xbacklight +1运行,请继续将这些命令分别分配给XF86MonBrightnessDownXF86MonBrightnessUp键。这是通过在设置 → 键盘 → 应用程序快捷方式应用程序询问时按下这些键来完成的。

最后,重启以使这些更改生效。

键盘设置

答案4

使用自定义快捷方式

KDEqdbus默认使用更改亮度,您可以使用以下命令添加自定义快捷方式,以自定义步骤调整亮度

qdbus org.kde.Solid.PowerManagement /org/kde/Solid/PowerManagement/Actions/BrightnessControl 
org.kde.Solid.PowerManagement.Actions.BrightnessControl.setBrightness $(expr $(qdbus 
org.kde.Solid.PowerManagement /org/kde/Solid/PowerManagement/Actions/BrightnessControl 
org.kde.Solid.PowerManagement.Actions.BrightnessControl.brightness) [+ Or -] [Jump step size number])

(自行编辑命令结尾)

相关内容