联想ideapad亮度键在Ubuntu 16.04.1中不生成任何事件

我有一个新的联想Ideapad 500S,上面运行了新的Ubuntu 16.04.1。 不幸的是,亮度上/下键不起作用。 (它们在Windows中运行良好。)

运行acpi_listen显示为音量acpi_listen /减小键生成的事件,但不会显示亮度acpi_listen /减小的事件。 运行xev也没有给我任何亮度上/下键的输出。

使用acpi_backlight=vendorvideo.use_native_backlight=1acpi_osi=Linuxacpi_osi=等选项多次编辑/etc/default/grubGRUB_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 232xdotool key 233完美地增加和降低了亮度(包括Unity中的更改通知)。 然后我尝试了两件事来让亮度发挥作用。

首先,我注意到xev现在向我XF86MonBrightnessDown了两个键的事件XF86MonBrightnessUpXF86MonBrightnessDown ,这意味着在X级别上一切正常。 所以我只是使用Ubuntu的快捷方式管理器并将两个密钥(它们被读作XF86等价物)注册到xdotool命令。 这很棒!

但是,几周之后,由于我改变了一些软件包/驱动程序, xev停止报告XF86事件,因此上述方法无效。 但是, acpi_listen显示正在生成video/brightnessdownvideo/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平台。