使用 Compizconfig 键绑定运行命令

使用 Compizconfig 键绑定运行命令

我正在尝试调高/调低键盘按键的亮度。

通过acpi_listen按下调高/调低亮度,我得到了以下结果:

video DD03 00000087 00000000
video DD03 00000086 00000000

跑步showkey

keycode 225 press
keycode 225 release
keycode 224 press
keycode 224 release

我已经设置了 compizconfi

答案1

有很多方法可以使用软件调整显示器、笔记本电脑或集成面板(如 iMac)的屏幕背光,但根据硬件和型号的不同,有时只有一些选项可用。

例子:

  • 亮度由供应商指定的热键控制。并且没有操作系统调整亮度的界面。
  • 亮度由操作系统控制:
  • 亮度可以通过 ACPI 控制
  • 亮度可以通过图形驱动程序控制。

Wiki 上有一篇出色的文章,总结了实现此目的的可能方法: https://wiki.archlinux.org/index.php/Backlight

但是ACPIxbacklight如果xcalib无法调整亮度级别,我们可以使用setpci命令直接操作显卡。这是我们将在本教程中使用的方法。

笔记:仅当上述程序无法完成您想要完成的任务并且不是首选方法时才应使用此方法。然而,在许多情况下,这是唯一可以完成任务的方法。


我们要做的是将setpci命令绑定到键盘上的组合键,xbindkeys,这样当按下某些键时,亮度就会调高或调低。

好的,我们开始吧!

  • 首先我们需要确定设备地址您的显卡,在大多数情况下,它会是,00:02.0但并非总是如此,所以这里是如何检查的。

打开终端窗口并在命令提示符下输入以下内容:

lspci |grep -i vga

这将返回一行显示诸如供应商、型号、版本等信息...感兴趣的部分位于最开始,应如下所示:

00:02.0

笔记: 输出可能会有所不同

这是设备地址您的显卡,我们将使用它和setpci命令来控制您的亮度级别。所以写下来!


  • 接下来我们需要下载xbindkeys。这个程序会将命令实际绑定setpci到键盘上的按键组合上。

打开终端窗口并在命令提示符下输入以下内容:

sudo apt-get install xbindkeys

  • 现在我们要在我们的xbindkeys启动时将使用的目录 。

打开一个终端窗口(如果还没有),然后切换到目录。在命令提示符下键入以下命令:

touch .xbindkeysrc

这将创建一个文件,我们将在其中输入配置,xbindkeys每次启动时都会读取该文件

touch .xbindkeys.noauto

这只是创建一个空白文件,但它至关重要,因为当它存在时,它会xbindkeys阻止在启动时自动启动。虽然我们想xbindkeys自动启动,但我们想自己控制它,因为 Xserver 在启动过程中过早地启动它。这导致我们所做的配置有时无法正常运行。我们将添加一个xb_start.sh名为启动应用程序本教程后面将介绍启动过程。


让我们来看看各个键的作用是什么!!

为了节省时间,我将自动假设X服务器已经识别了键盘上用来改变亮度的按键,只是按下这些按键时它不会做任何事情。在我的情况下是Fn+Up ArrowDown Arrow

但我们不能只把这些词放在Fn我们Up ArrowDown Arrow配置文件中,我们必须找出键码是。

在大多数情况下,它们将会密钥代码 232调低亮度,然后密钥代码 233来调节亮度,但我们最好确定一下。

打开终端窗口并在命令提示符下输入以下内容:

xmodmap -pke |grep -i xf86monbrightness

这应该返回两行类似于以下内容的内容:

keycode 232 = XF86MonBrightnessDown NoSymbol XF86MonBrightnessDown

keycode 233 = XF86MonBrightnessUp NoSymbol XF86MonBrightnessUp

我们关心的是以下数字关键代码。在本例中是232233把所有数字都写下来,因为我们稍后会用到它们。


让我们开始将它们整合在一起吧!!

  • 现在,我们将使用收集并记下的信息,向.xbindkeysrc你之前在目录。

使用您最喜欢的文本编辑器打开该.xbindkeysrc文件,然后复制并粘贴或键入以下行,然后保存

笔记: 如果232233你之前记下的键码不一样,请在此文件中更改它们

"/usr/local/bin/blevel_down.sh"
c:232
"/usr/local/bin/blevel_up.sh"
c:233

我们在这里做的是告诉我们在按下键盘上调节亮度的按键组合时xbindkeys运行blevel_down.sh脚本。在我的情况下是Fn + Down Arrow。在下一行中,我们告诉它运行blevel_up.shforFn + Up Arrow

笔记: 按键组合各不相同,请检查键盘按键上的图片以确定哪些适合您。


让我们编写脚本吧!

blevel_up.sh和脚本blevel_down.sh是通过向命令传递参数来逐步调高或调低亮度而创建的setpci。因此,当您按下执行调整的任何键时,亮度每次都会稍微调高或调低一点。 用于xb_start.shxbindkeys计算机启动时启动,但允许在启动之前完成其他过程。

笔记:如果您之前确定的显卡设备地址与我们之前确定的不同blevel_up.sh,则blevel_down.sh需要进行相应修改。它们很可能应该相同。

  • 我们将blevel_up.sh首先创建:

打开您最喜欢的文本编辑器,然后将以下内容复制并粘贴或输入到文件中,然后将其保存为主目录中的 blevel_up.sh

#!/bin/bash

if [ ! -f /home/$USER/.blevel ]; then 

    touch /home/$USER/.blevel
    echo "FF" > /home/$USER/.blevel
    state="FF" 

else

    state=`cat /home/$USER/.blevel`

fi

new_state=$(echo "$[0x$state+0x10]")

if [ "$new_state" -gt 255 ]; then 

    sudo setpci -s 00:02.0 F4.B=FF

else

    state=$(echo "obase=16; $new_state" | bc)
    sudo setpci -s 00:02.0 F4.B=$state
    echo $state > /home/$USER/.blevel

fi

  • 现在我们将创建blevel_down.sh脚本:

打开您最喜欢的文本编辑器,然后将以下内容复制并粘贴或输入到文件中,然后将其保存为主目录中的 blevel_down.sh

#!/bin/bash

if [ ! -f /home/$USER/.blevel ]; then 

    touch /home/$USER/.blevel
    echo "FF" > /home/$USER/.blevel
    state="FF" 

else

    state=`cat /home/$USER/.blevel` 

fi

new_state=$(echo "$[0x$state-0x10]")

if [ "$new_state" -lt 15 ]; then 

    sudo setpci -s 00:02.0 F4.B=0F

else

    state=$(echo "obase=16; $new_state" | bc)
    sudo setpci -s 00:02.0 F4.B=$state
    echo $state > /home/$USER/.blevel

fi

  • 现在我们将创建xb_start.sh脚本:

打开您最喜欢的文本编辑器,然后将以下内容复制并粘贴或输入到文件中,然后将其保存为 xb_start.sh 在你的主目录中

#!/bin/bash

sleep 10
/usr/bin/xbindkeys &

让我们使脚本全球化!!

  • 现在我们要做的是将我们刚刚创建的三个脚本从目录/usr/local/bin并设置权限,以便无论谁登录机器都可以执行它们。

打开终端窗口并在命令提示符下输入以下内容:

sudo mv blevel_up.sh blevel_down.sh xb_start.sh /usr/local/bin

sudo chmod 755 /usr/local/bin/blevel_up.sh

sudo chmod 755 /usr/local/bin/blevel_down.sh

sudo chmod 755 /usr/local/bin/xb_start.sh


现在,setpci无需每次输入密码即可运行

由于这setpci会更改某些系统文件,因此普通用户必须在命令setpci前加上sudoeachtime 前缀才能运行该命令。这样每次调整屏幕亮度时都需要输入密码。如果我们在文件中输入特定条目,/etc/sudoers我们就可以解决这个问题。

打开终端窗口并在命令提示符下输入以下内容:

sudo visudo

这将打开文件/etc/sudoers,以便我们可以进行所需的更改。

一直滚动到文件底部并输入以下内容:

ALL ALL = NOPASSWD:/usr/bin/setpci

笔记: 文件区分大小写,因此请在此处准确输入。

保存文件并退出


就快结束了!!

我们需要做的最后一件事是将我们的xb_start.sh脚本添加到我们的启动应用程序中,以便xbindkeys它在我们需要的时候准时启动。

重启并享受!

相关内容