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

Viv*_*sas 5 keyboard backlight lenovo brightness 16.04

我有一台新的 Lenovo Ideapad 500S,上面运行着新的 Ubuntu 16.04.1。不幸的是,亮度升高/降低键不起作用。(它们在 Windows 中运行良好。)

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

使用、、和 等GRUB_CMDLINE_LINUX_DEFAULT选项/etc/default/grub多次编辑该行后,我可以确认这会更改其中的软链接,而我目前只在那里。acpi_backlight=vendorvideo.use_native_backlight=1acpi_osi=Linuxacpi_osi=/sys/class/backlight/intel_backlight

运行echo <NUM> | 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)。输出是:

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
Run Code Online (Sandbox Code Playgroud)

附加输出:

$ 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
Run Code Online (Sandbox Code Playgroud)

Viv*_*sas 1

我最终使用几个解决方法解决了这个问题。

第一步是让按键可被检测到。我有一台类似型号的笔记本电脑(Lenovo Z400),我查看了为其生成的键码。基于此,我将其放入我的/etc/rc.local/

setkeycodes e054 225 # Brightness up -> brightness up
setkeycodes e04c 224 # Brightness down -> brightness down
Run Code Online (Sandbox Code Playgroud)

第二步是让按键改变亮度。我首先注意到运行xdotool key 232xdotool key 233完美地增加和减少了亮度(包括 Unity 中的更改通知)。然后我尝试了两件事来使亮度发挥作用。

首先,我注意到xev现在向我显示了事件XF86MonBrightnessUpXF86MonBrightnessDown两个键,这意味着在 X 级别一切工作正常。因此,我只是使用 Ubuntu 的快捷方式管理器并将两个键(被读取为 XF86 等效键)注册到xdotool命令中。这太棒了!

然而,几周后,由于我更改了一些软件包/驱动程序,xev停止报告 XF86 事件,因此上述方法不起作用。然而,acpi_listen表明video/brightnessdown事件video/brightnessup正在生成,因此,经过一番谷歌搜索后,我将以下内容放入一个新文件中/etc/acpi/events/ideapad-monitor-brightness-up

setkeycodes e054 225 # Brightness up -> brightness up
setkeycodes e04c 224 # Brightness down -> brightness down
Run Code Online (Sandbox Code Playgroud)

还有一个ideapad-monitor-brightness-down与 和 等效的文件xdotool key 232解决了问题。从那以后就没有出现过任何问题。:)