为什么我的Thinkpad亮度控制会跳过步骤?

问题:笔记本电脑上有16个亮度等级,但按热键Fn+HomeFn+End调整亮度3步 (例如从0到3,或从15到12)。

我发现重要的是要注意, 在登录屏幕上,热键可以正常工作 。 但登录后出现奇怪的行为。

此外, 如果我将焦点放在菜单上(例如,单击firefox中的“ 文件”菜单),热键可以正常工作

xdotool key XF86MonBrightnessDown工作正常,亮度调整1步(用cat /sys/devices/pci0000:00/0000:00:02.0/backlight/acpi_video0/brightness检查)。

我还安装了indicator-brightness – 它显示了16个leves(0-15)。

我尝试在grub中设置acpi_backlight=vendor (灵感来自这个主题: http : acpi_backlight=vendor ,类似的问题)。 它的工作原理是热键变得很好。 但是出现了OSD通知,xdotool和亮度指示器的问题。 所以我认为这不是一个正确的解决方案。

登录后似乎干扰了热键处理方案。 有任何想法吗?

编辑(附加信息)

  • 我观察到热键在硬件级别工作 – 我可以在打开笔记本电脑后立即调整亮度(例如在BIOS屏幕上)。

  • $ killall gnome-settings-daemon热键之后,将亮度调整一步,但不会显示任何通知。 很快gnome-settings-daemon恢复,三步问题返回。

  • acpi_listen给出以下输出(两个键顺序):

     $ acpi_listen ibm/hotkey HKEY 00000080 00001010 video LCD0 00000086 00000000 ibm/hotkey HKEY 00000080 00001011 video LCD0 00000087 00000000 

    此时我认为(1)热键在硬件级别工作; (2) ibm/hotkey负责热键; (3) video也要照顾。 因此,出现三步问题。

    我尝试将video列入黑名单(我预计这将导致双步行为),但没有任何改变。

作为一种解决方法,我在CompizConfig设置管理器中创建了自己的热键 – 如此处所述,但使用--clearmodifiers参数:

 xdotool key --clearmodifiers XF86MonBrightnessUp xdotool key --clearmodifiers XF86MonBrightnessDown 

所以现在我可以使用初始热键或新热键进行更精细的调整。

打开问题

已经讨论过双重步骤的情况: 联想ThinkPad,亮度function键分两步而不是一步,寻找解决方法 :

硬件只是这样做,然后发出一个信号说按钮被按下了。 您可以在系统 – >首选项 – >键盘快捷键中为此操作取消设置快捷方式吗?

但我很想知道,

  1. 为什么我会遇到三步问题?
  2. 如何取消设置此热键的处理?

如果有人解释,我将非常感激。

1按键的3个步骤来自哪里?

一个按键有三个亮度步骤,因为:

  1. 标准ACPI /video驱动程序调整步骤1
  2. thinkpad_acpi驱动程序告诉BIOS调整步骤2但仍然转发按键事件
  3. GNOME电源守护程序拦截此按键并告诉ACPI再次调整第3步

1.禁用video驱动程序自行调整亮度

这摆脱了上面三个步骤之一(步骤1)。

  • 打开终端
  • 输入sudo sh -c 'echo -n 0 > /sys/module/video/parameters/brightness_switch_enabled'
  • 测试,现在你应该以两步为亮度控制
  • 要在启动时自动禁用此function,请在您喜欢的编辑器中打开/etc/rc.local然后在最后一行( exit 0 )之前添加:

      echo -n 0> / sys / module / video / parameters / brightness_switch_enabled 

2.重新编译thinkpad_acpi模块以解决双按问题

  • 我们必须阻止thinkpad_acpi通过BIOS调整亮度并让它将按键转发到GNOME,这样GNOME才能做出唯一的调整步骤
  • 这是一个已知的错误 ,已在内核3.4+中修复
  • 要为Ubuntu 12.04 / Precise修复它,我们将修补它的thinkpad_acpi版本并重新编译它:

    1. 安装内核头文件: sudo apt-get install linux-headers-$(uname -r)
    2. 安装构建工具sudo apt-get install build-essential
    3. 创建一个临时目录并更改为它:
        mkdir~ / tpacpi-bright && cd~ / tpacpi-bright 
    4. 从Ubuntu内核git存储库下载并修补源文件thinkpad_acpi.c

        wget -O-“http://kernel.ubuntu.com/git?p = ubuntu / ubuntu-precise.git; \
       A = blob_plain; F =驱动程序/平台/ 86 / thinkpad_acpi.c; HB = HEAD“\
       |  sed -e's / tp_features.bright_acpimode && acpi_video / acpi_video / g'\
       > thinkpad_acpi.c 
    5. 在下载thinkpad_acpi.c的同一文件夹中,您将需要一个“Makefile”。 您可以使用以下命令直接从此Pastebin下载它:

        wget -OMakefile http://pastebin.com/raw.php?i=ybpnxeUT 

    或者将下面的内容粘贴到名为Makefile中:

     obj-m + = thinkpad_acpi.o 
    所有: make -C / lib / modules / $(shell uname -r)/ build M = $(PWD)模块
    清洁: make -C / lib / modules / $(shell uname -r)/ build M = $(PWD)clean
    1. 现在输入make来创建模块; 完成后,您将在文件夹中看到thinkpad_acpi.ko文件。
  • 加载后测试修补后的模块:

      sudo rmmod thinkpad_acpi && sudo lsmod thinkpad_acpi.ko 
  • 如果亮度现在已修复并且可以完全控制,请使用修补模块更换库存模块:

     TPDIR = / lib / modules / $(uname -r)/ kernel / drivers / platform / x86
     sudo mv $ TPDIR / thinkpad_acpi.ko $ TPDIR / thinkpad_acpi.ko.stock
     sudo mv~ / tpacpi-bright / thinkpad_acpi.ko $ TPDIR / thinkpad_acpi.ko
    
  • 你可以用make clean build文件夹; 保留它以备将来的内核升级!

我遇到了与你一样的问题,我的系统总是在屏幕关闭的情况下启动。

我想感谢你指出我正确的方向, acpi_backlight=vendor为我做了诀窍而没有遇到任何问题。 我正在使用带有混合显卡的HP G7 1116sg(Intel HD3000 (目前仅因为ubuntu中的混合问题而使用了intel。我之所以这么说,只是因为X220被列为具有相同的图形适配器) / Radeon HD6870)和Ubuntu 12.04。

只是想说grub的变化对我没有任何明显的问题。

祝你找到解决方案。

/sys/module/video/parameters/brightness_switch_enabled0使我无法通过快捷键在tty和xfce 4.10中控制Thinkpad X230上的亮度。 我不得不告诉xfce4-power-manager不要改变关键事件的亮度。 您可以通过设置两个隐藏配置键之一来完成此操作。 第一个是:

 xfconf-query -c xfce4-power-manager -n -t bool -p /xfce4-power-manager/change-brightness-on-key-events -s false 

第二个:

 xfconf-query -c xfce4-power-manager -n -t bool -p /xfce4-power-manager/show-brightness-popup -s false 

注意:这两个设置都禁用了我系统上的亮度弹出屏幕,但至少我得到了所有16个亮度等级!

您可以在此页面和本页 底部阅读有关此问题的更多信息。

在我的联想S205笔记本电脑中我遇到了这个问题,其中video驱动程序和gnome都调整了亮度。

但是我禁用brightness_switch_enabled属性的经验是gnome很慢并且在更新背光时看起来很活泼 – 例如,如果我将按键保持几秒钟然后放开,gnome仍需要5-10秒来处理事件。

所以相反,我更喜欢让video驱动程序进行调整,并停止gnome做这些。

 sudo chmod -x /usr/lib/gnome-settings-daemon/gsd-backlight-helper 

禁用gsd-backlight-helper对我来说gsd-backlight-helper 。 我抓取了互联网,似乎没有用户可见的选项来做同样的事情。

我确实失去了亮度OSD但现在亮度变化立即被处理,作为奖励,我仍然对tty进行亮度控制。