让 fn 键在 Macbook pro 11、5 上运行亮度脚本

让 fn 键在 Macbook pro 11、5 上运行亮度脚本

笔记本电脑:MacbookPro 11,5,配备 AMD gpu

操作系统:Lubuntu 17.04

我按照说明进行操作https://wiki.archlinux.org/index.php/MacBookPro11,x并且它成功了。

  1. 在 MacOS X 中禁用自动 gpu 切换(不确定是否有帮助)。
  2. 下载并编译https://github.com/problame/gmux_backlight
  3. sudo setpci -v -H1 -s 00:01.00 BRIDGE_CONTROL=0
  4. sudo gmux_backlight 120
  5. 可以用脚本调整亮度。

问题是

  1. sudo每次都要用
  2. F1/F2 键不会改变亮度。

如何解决这个问题?


更新(以下特登的答案)

将编译后的文件gmux_backlight移至/usr/sbin/

用于sudo visudo让每个用户gmux_backlight输入sudo或不输入密码即可运行。

<username1> ALL=NOPASSWD:/usr/sbin/gmux_backlight
<username2> ALL=NOPASSWD:/usr/sbin/gmux_backlight
<username3> ALL=NOPASSWD:/usr/sbin/gmux_backlight

创建/etc/init.d/gmux_backlight_fixsudo chmod +x编写脚本。

#!/bin/bash -e
setpci -v -H1 -s 00:01.00 BRIDGE_CONTROL=0 >/dev/null

将脚本符号链接到运行级别 2(Ubuntu 的图形运行级别),优先级最低(99),如下所示如何在以 root 身份启动时运行脚本

sudo ln -s /etc/init.d/gmux_backlight_fix /etc/rc2.d/S99gmux_backlight_fix

添加到~/.config/openbox/lubuntu-rc.xml每个用户的部分。

<keyboard>
  <chainQuitKey>C-g</chainQuitKey>

  <!-- My Keys -->
  <keybind key="XF86LaunchA">
    <action name="Execute">
      <command>sudo gmux_backlight -10</command>
    </action>
  </keybind>
  <keybind key="XF86LaunchB">
    <action name="Execute">
      <command>sudo gmux_backlight +10</command>
    </action>
  </keybind>

我使用 Fn-F3 和 Fn-F4 因为 Lubuntu 无法自动检测笔记本电脑上的 Fn-F1 和 Fn-F2。

最初,我编写了一个 bash 脚本,该脚本接受参数并授予每个用户使用 sudo 运行该脚本的权限。一段时间后,我担心有人会破坏该 bash 脚本并使用 sudo 权限运行任何命令。因此,我使用编译后的二进制文件代替我的 bash 脚本。

旧的 bash 脚本是/usr/sbin/gmux_capped_backlight

#!/bin/bash -e

# setpci
setpci -v -H1 -s 00:01.00 BRIDGE_CONTROL=0 >/dev/null

# Get current brightness
CB="$( cat /sys/class/backlight/gmux_backlight/brightness )"

# Split characters of argument
arg=$1
first_char=${arg:0:1}
other_char=${arg:1}

# Desired Brightness
if [ $first_char == "+" ]; then 
    Brightness=$(expr $CB + $other_char)
elif [ $first_char == "-" ]; then
    Brightness=$(expr $CB - $other_char)
else
    Brightness=$arg
fi

# Limit the range of brightness #
Max=1024
Min=0

if [ $Brightness -gt $Max ]; then
    Brightness=$Max
fi
if [ $Brightness -lt $Min ]; then
    Brightness=$Min
fi

答案1

既然您说您已经可以使用脚本进行调整,那么看起来您已经快完成了。您只需要:

  1. 设置sudo允许你的用户无需密码即可执行该特定脚本。首先,打开终端并运行sudo visudo。这将打开你的默认编辑器窗口。将此行添加到文件:

    terdon  ALL=NOPASSWD:/path/to/your/script
    

    显然,请更改terdon为您的用户名,然后更改/path/to/your/script为脚本的路径。如果您能确保路径中没有空格,这将使您的工作更轻松。现在,保存文件并关闭它。

  2. 现在,您无需输入 root 密码即可运行脚本,因此您需要做的就是将提高和降低亮度的命令分配给 F1/F2 键。我不使用 LXDE,但我找到了一个论坛帖子这里~/.config/openbox/lxde-rc.xml这表明你可以通过编辑和添加如下内容来实现:

    <keybind key="F2">
      <action name="Execute">
        <command>/path/to/your/script increaseBrightness</command>
      </action>
    </keybind>
    <keybind key="F1">
      <action name="Execute">
        <command>/path/to/your/script decreaseBrightness</command>
      </action>
    </keybind>
    

    对于这两种情况,使用脚本所需的任何参数来提高/降低亮度。

    或者,您也可以通过安装来执行此操作xbindkeys

    sudo apt-get install xbindkeys
    

    创建默认设置文件:

    xbindkeys --defaults > `~/.xbindkeysrc`
    

    获取您密钥的正确密钥代码。它很可能类似于F1。然后,编辑~/.xbindkeysrc并添加以下内容:

    "/path/to/your/script increaseBrightness"
    F2
    
    "/path/to/your/script decreaseBrightness"
    F1
    

    最后,运行xbindkeys,您的快捷方式应该就可以使用了。将其添加到您的启动程序列表中,这样它就会在您登录时始终运行。

相关内容