今天花了一点时间,给自己的笔记本电脑,写了一个控制背光的命令行小工具,分享给大家。
https://github.com/wuweidong/backlight
我的笔记本电脑是 Ubuntu 系统,有时需要调整一下屏幕的背光。
由于我更喜欢命令行操作,所以就写了这个小程序来服务自己,就一个 C 文件,162 行代码。
用法
它的用法是这样的:
$ backlight -h
Usage: backlight [option] [command]
Options:
-h Thishelptext-vShowprogramversionCommands:
valSetbrightness val%,rangeis0~100
# 查看背光百分比$backlight57# 设置背光百分比$backlight9090
代码实现
Linux 系统的背光控制节点为 /sys/class/backlight,我们只要读写这个目录下的文件节点,就能达到控制屏幕背光的目的了。
$ ls /sys/class/backlight/amdgpu_bl0/actual_brightness bl_power brightness device max_brightness power scale subsystem type uevent
用 struct device 来描述背光设备:
structdevice{char*path;// 保存 backlight 文件节点, /sys/class/backlight/amdgpu_bl0/intmax;// max_brightnessintcurrent;// brightness};
驱动程序看多了,代码风格也会被影响。
程序主干逻辑:
intmain(intargc,char*argv[]){structdevicedev;intc;longval;// 参数解析[...]// 检查 backlight 设备是否存在if(!locate(&dev))
err(1,"System has no backlight control");// 是否需要设置 backlightif(argc ==2&& is_digit_str(argv[1])) {
brightness_set(&dev, strtol(argv[1],NULL,10));
}// 打印当前背光值printf("%d\n", brightness_get(&dev));return0;
}
逻辑很简单的:
先用 locate() 去遍历 /sys/class/backlight 目录,同时根据找到的 backlight 节点去初始化 struct device;
如果用户要求设置背光,则调用 brightness_set();
最后,总是通过 brightness_get() 获取当前背光值;
brightness_get() / brightness_set() 其实就是读写 /sys/class/backlight/${your_backlight_device}/brightness。
总结
今天分享的东西很简单,往往越是简单的东西,生命力越顽强。
如果你也有类似的开源项目,也欢迎推荐给我,
转载自:老吴嵌入式文章来源于一个控制背光的命令行小工具原文链接:https://mp.weixin.qq.com/s/7PkWjxJU_bWhPw4S03rOLA