为什么我的Thinkpad亮度控制会跳过步骤?
问题:笔记本电脑上有16个亮度等级,但按热键Fn+Home
, Fn+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按键的3个步骤来自哪里?
一个按键有三个亮度步骤,因为:
- 标准ACPI /video驱动程序调整步骤1
-
thinkpad_acpi
驱动程序告诉BIOS调整步骤2但仍然转发按键事件 - 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
版本并重新编译它:- 安装内核头文件:
sudo apt-get install linux-headers-$(uname -r)
- 安装构建工具
sudo apt-get install build-essential
- 创建一个临时目录并更改为它:
mkdir~ / tpacpi-bright && cd~ / tpacpi-bright
-
从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
-
在下载
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- 现在输入
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_enabled
为0
使我无法通过快捷键在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进行亮度控制。