联想ideapad亮度键在Ubuntu 16.04.1中不生成任何事件
我有一个新的联想Ideapad 500S,上面运行了新的Ubuntu 16.04.1。 不幸的是,亮度上/下键不起作用。 (它们在Windows中运行良好。)
运行acpi_listen
显示为音量acpi_listen
/减小键生成的事件,但不会显示亮度acpi_listen
/减小的事件。 运行xev
也没有给我任何亮度上/下键的输出。
使用acpi_backlight=vendor
, video.use_native_backlight=1
, acpi_osi=Linux
和acpi_osi=
等选项多次编辑/etc/default/grub
的GRUB_CMDLINE_LINUX_DEFAULT
行后,我可以确认这改变了/sys/class/backlight/
的软链接/sys/class/backlight/
我目前只有intel_backlight
。
运行echo | sudo tee /sys/class/backlight/intel_backlight/brightness
echo | sudo tee /sys/class/backlight/intel_backlight/brightness
工作正常并改变亮度,因此从Settings > Brightness and Lock
更改它。
Ubuntu中的任何内容似乎都无法检测到这些密钥,因此我不确定在grub配置中进行任何更改都很重要。
如果有人知道如何解决这个问题,请告诉我,如果有任何其他信息可用于调试此问题。
更新:
将acpi_osi=Linux acpi_backlight=intel_backlight
添加到grub中的行似乎使亮度降低键在xev
生成一些东西(尽管acpi_listen
没有任何acpi_listen
)。 输出是:
KeyPress event, serial 37, synthetic NO, window 0x3c00001, root 0xd3, subw 0x0, time 391361, (728,884), root:(793,936), state 0x0, keycode 120 (keysym 0x0, NoSymbol), same_screen YES, XLookupString gives 0 bytes: XmbLookupString gives 0 bytes: XFilterEvent returns: False KeyRelease event, serial 37, synthetic NO, window 0x3c00001, root 0xd3, subw 0x0, time 391368, (728,884), root:(793,936), state 0x0, keycode 120 (keysym 0x0, NoSymbol), same_screen YES, XLookupString gives 0 bytes: XFilterEvent returns: False
额外产出:
$ lspci -nnk | grep -iA2 vga 00:02.0 VGA compatible controller [0300]: Intel Corporation Sky Lake Integrated Graphics [8086:1916] (rev 07) Subsystem: Lenovo Skylake Integrated Graphics [17aa:3828] Kernel driver in use: i915_bpo
我终于使用了几个解决方法解决了这个问题。
第一步是使密钥可检测。 我有一台类似型号的笔记本电脑(联想Z400),我查看了为它生成了哪些密钥代码。 基于此,我把它放在我的/etc/rc.local/
:
setkeycodes e054 225 # Brightness up -> brightness up setkeycodes e04c 224 # Brightness down -> brightness down
第二步是让按键改变亮度。 我首先注意到运行xdotool key 232
和xdotool key 233
完美地增加和降低了亮度(包括Unity中的更改通知)。 然后我尝试了两件事来让亮度发挥作用。
首先,我注意到xev
现在向我XF86MonBrightnessDown
了两个键的事件XF86MonBrightnessUp
和XF86MonBrightnessDown
,这意味着在X级别上一切正常。 所以我只是使用Ubuntu的快捷方式管理器并将两个密钥(它们被读作XF86等价物)注册到xdotool
命令。 这很棒!
但是,几周之后,由于我改变了一些软件包/驱动程序, xev
停止报告XF86事件,因此上述方法无效。 但是, acpi_listen
显示正在生成video/brightnessdown
和video/brightnessup
事件,因此,在进行了一些谷歌搜索之后,我将以下内容放入一个新文件/etc/acpi/events/ideapad-monitor-brightness-up
:
# same event as reported by acpi_listen event=video/brightnessup BRTUP 00000086 00000000 K action=su vivek -c "export DISPLAY=:0.0; xdotool getactivewindow && xdotool key 233 2>&1 > /tmp/log" # The redirection into /tmp/log probably doesn't make any difference
以及xdotool key 232
的等效ideapad-monitor-brightness-down
文件,解决了这个问题。 从那以后没有任何问题。 🙂
我自2012年以来在Ubuntu 14.04下使用我的旧笔记本电脑(东芝Satellite Core 2 Duo)时没有亮度键的问题,但似乎很多用户都有。 最流行的解决方案是通过键入以下内容来创建文件 :
sudo touch /usr/share/X11/xorg.conf.d/20-intel.conf
然后编辑文件 :
gksu gedit /usr/share/X11/xorg.conf.d/20-intel.conf
然后使用以下命令填充文件 :
Section "Device" Identifier "card0" Driver "intel" Option "Backlight" "intel_backlight" BusID "PCI:0:2:0" EndSection
保存并重启 。
请注意 , BusID
应与以下输出匹配:
lspci -nnk | grep -iA2 vga
如果不同,也可以用lspci
命令中显示的内容替换上面的intel_backlight 。
另一个尝试的选项是使用acpi_backlight=vendor
更改grub命令行。
更新
我刚刚在亮度键上偶然发现了这个Ubuntu网页: https : //wiki.ubuntu.com/Kernel/Debugging/Backlight
当我升级到Ubuntu 16.04它带来了内核16.04并且我遇到了挂起/恢复,薄字体,黑屏而不是壁纸的所有类型的问题,高于正常CPU使用率和比正常温度更热。 我写了许多我在这个答案中采取的步骤: Ubuntu 15.10:各种“类型”的冻结和现在的意外关机解决了我在英特尔Ivy Bridge平台上的大多数问题,它可能很好地帮助你的Sky Lake平台。