<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Function Keys on ousfifty's blog</title><link>https://blog.ous50.moe/en/tags/function-keys/</link><description>Recent content in Function Keys on ousfifty's blog</description><generator>Hugo -- gohugo.io</generator><language>en-US</language><copyright>ousfifty 2020-</copyright><lastBuildDate>Tue, 08 Nov 2022 02:06:00 +0000</lastBuildDate><atom:link href="https://blog.ous50.moe/en/tags/function-keys/index.xml" rel="self" type="application/rss+xml"/><item><title>Fixing the brightness function keys in Legion laptops with discrete graphics option enabled</title><link>https://blog.ous50.moe/en/p/fixing-the-brightness-function-keys-in-legion-laptops-with-discrete-graphics-option-enabled/</link><pubDate>Tue, 08 Nov 2022 02:06:00 +0000</pubDate><guid>https://blog.ous50.moe/en/p/fixing-the-brightness-function-keys-in-legion-laptops-with-discrete-graphics-option-enabled/</guid><description>&lt;h2 id="intro"&gt;&lt;a href="#intro" class="header-anchor"&gt;&lt;/a&gt;Intro
&lt;/h2&gt;&lt;p&gt;Lenovo Legion series Laptops uses IdeaPad ACPI and ones in normal configuration can use nearly all of the function keys except for F9(Favorite key), F11(tab switching key) and F12(Calculator key), since ACPI key functions is not defined:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo acpi_listen
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 8FC0DE0C-B4E4- 000000d0 &lt;span class="m"&gt;00000000&lt;/span&gt; &lt;span class="c1"&gt;#F9&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;^&lt;span class="o"&gt;[&lt;/span&gt;^&lt;span class="o"&gt;[[&lt;/span&gt;27&lt;span class="p"&gt;;&lt;/span&gt;5&lt;span class="p"&gt;;&lt;/span&gt;9~ &lt;span class="c1"&gt;#F11 &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;8FC0DE0C-B4E4- 000000d0 &lt;span class="m"&gt;00000000&lt;/span&gt; &lt;span class="c1"&gt;#F12&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;But for users have &amp;ldquo;discrete graphics&amp;rdquo; option switched on in BIOS, F5(Brightness Up) and F6(Brightness Down) is not working, although running &lt;code&gt;acpi_listen&lt;/code&gt; shows everything is normal:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo acpi_listen
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;video/brightnessup BRTUP &lt;span class="m"&gt;00000086&lt;/span&gt; &lt;span class="m"&gt;00000000&lt;/span&gt; &lt;span class="c1"&gt;#F6&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;video/brightnessdown BRTDN &lt;span class="m"&gt;00000087&lt;/span&gt; &lt;span class="m"&gt;00000000&lt;/span&gt; &lt;span class="c1"&gt;#F5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;​	The reason is the device controlling backlight now has changed to &lt;code&gt;nvidia_0&lt;/code&gt;, not correspond to the defined acpi actions. For Arch Linux users You can install &lt;a class="link" href="https://wiki.archlinux.org/title/Backlight#xbacklight" target="_blank" rel="noopener"
 &gt;xbacklight&lt;/a&gt; to tweak the backlight via command line. But that experience is extremely awful: everytime you want to adjust, you have to turn on console and run xbacklight with root permission. This article is aimed to fix the malfunctioned key.&lt;/p&gt;
&lt;p&gt;​	REMEMBER: you still can not adjust brightness in &amp;ldquo;battery and brightness&amp;rdquo;.&lt;/p&gt;
&lt;h2 id="solution"&gt;&lt;a href="#solution" class="header-anchor"&gt;&lt;/a&gt;Solution
&lt;/h2&gt;&lt;p&gt;​	Just create these files and reboot.&lt;/p&gt;
&lt;h3 id="etcacpieventsfnf6-brightnessup"&gt;&lt;a href="#etcacpieventsfnf6-brightnessup" class="header-anchor"&gt;&lt;/a&gt;/etc/acpi/events/FnF6-brightnessup
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;#FnF6 video/brightnessup BRTUP 00000086 00000000
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;event=video/brightnessup
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;action=https://blog.ous50.moe/etc/acpi/actions/FnF6-brightnessup.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="etcacpiactionsfnf6-brightnessupsh"&gt;&lt;a href="#etcacpiactionsfnf6-brightnessupsh" class="header-anchor"&gt;&lt;/a&gt;/etc/acpi/actions/FnF6-brightnessup.sh
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#!/bin/bash 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Set the static increment value. Keep in mind that this will &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# be done twice. &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# This Value is depended on the actual changing value of the DE(in KDE it&amp;#39;s 6)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;IncVal&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Get the Maximum value for use. &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#MaxVal=$(cat /sys/class/backlight/intel_backlight/max_brightness); &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;read&lt;/span&gt; -r MaxVal &amp;lt; &lt;span class="s2"&gt;&amp;#34;/sys/class/backlight/nvidia_0/max_brightness&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Get the current brightness value. &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#CurrVal=$(cat /sys/class/backlight/nvidia_0/brightness); &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;read&lt;/span&gt; -r CurrVal &amp;lt; &lt;span class="s2"&gt;&amp;#34;/sys/class/backlight/nvidia_0/brightness&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Set the new value minus the decrement value. &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;NewVal&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$((&lt;/span&gt;&lt;span class="nv"&gt;$CurrVal&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nv"&gt;$IncVal&lt;/span&gt;&lt;span class="k"&gt;))&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$NewVal&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Set it to the threshold of the max value. &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;ThresholdVal&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$((&lt;/span&gt;&lt;span class="nv"&gt;$NewVal&lt;/span&gt;&amp;lt;&lt;span class="nv"&gt;$MaxVal&lt;/span&gt;?&lt;span class="nv"&gt;$NewVal&lt;/span&gt;:&lt;span class="nv"&gt;$MaxVal&lt;/span&gt;&lt;span class="k"&gt;))&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$ThresholdVal&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Set the new value directly. &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; -n &lt;span class="nv"&gt;$ThresholdVal&lt;/span&gt; &amp;gt; /sys/class/backlight/nvidia_0/brightness 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;logger &lt;span class="s2"&gt;&amp;#34;[ACPI] brightnessup |&lt;/span&gt;&lt;span class="nv"&gt;$CurrVal&lt;/span&gt;&lt;span class="s2"&gt;| |&lt;/span&gt;&lt;span class="nv"&gt;$NewVal&lt;/span&gt;&lt;span class="s2"&gt;| |&lt;/span&gt;&lt;span class="nv"&gt;$ThresholdVal&lt;/span&gt;&lt;span class="s2"&gt;|&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="etcacpieventsfnf5-brightnessdown"&gt;&lt;a href="#etcacpieventsfnf5-brightnessdown" class="header-anchor"&gt;&lt;/a&gt;/etc/acpi/events/FnF5-brightnessdown
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;#FnF5 video/brightnessdown BRTDN 00000087 00000000 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;event=video/brightnessdown 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;action=https://blog.ous50.moe/etc/acpi/actions/FnF5-brightnessdown.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="etcacpiactionsfnf5-brightnessdownsh"&gt;&lt;a href="#etcacpiactionsfnf5-brightnessdownsh" class="header-anchor"&gt;&lt;/a&gt;/etc/acpi/actions/FnF5-brightnessdown.sh
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#!/bin/bash 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Set the static decrement value. Keep in mind that this will &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# be done twice. &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# This Value is depended on the actual changing value of the DE(in KDE it&amp;#39;s 6)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;DecVal&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Set the Minimum we will accept. &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;MinVal&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Get the current brightness value. &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#CurrVal=$(cat /sys/class/backlight/nvidia_0/brightness); &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;read&lt;/span&gt; -r CurrVal &amp;lt; &lt;span class="s2"&gt;&amp;#34;/sys/class/backlight/nvidia_0/brightness&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Set the new value minus the decrement value. &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;NewVal&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$((&lt;/span&gt;&lt;span class="nv"&gt;$CurrVal&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nv"&gt;$DecVal&lt;/span&gt;&lt;span class="k"&gt;))&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$NewVal&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Set it to the threshold of the min value. &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;ThresholdVal&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$((&lt;/span&gt;&lt;span class="nv"&gt;$NewVal&lt;/span&gt;&amp;gt;&lt;span class="nv"&gt;$MinVal&lt;/span&gt;?&lt;span class="nv"&gt;$NewVal&lt;/span&gt;:&lt;span class="nv"&gt;$MinVal&lt;/span&gt;&lt;span class="k"&gt;))&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$ThresholdVal&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Set the new value directly. &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; -n &lt;span class="nv"&gt;$ThresholdVal&lt;/span&gt; &amp;gt; /sys/class/backlight/nvidia_0/brightness 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;logger &lt;span class="s2"&gt;&amp;#34;[ACPI] brightnessdown |&lt;/span&gt;&lt;span class="nv"&gt;$CurrVal&lt;/span&gt;&lt;span class="s2"&gt;| |&lt;/span&gt;&lt;span class="nv"&gt;$NewVal&lt;/span&gt;&lt;span class="s2"&gt;| |&lt;/span&gt;&lt;span class="nv"&gt;$ThresholdVal&lt;/span&gt;&lt;span class="s2"&gt;|&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item></channel></rss>