基于WMI的热键无法正常工作

Modified on: Sat, 30 Jun 2018 09:34:30 +0800

在我的Dell latitude e6540上,WMI热键 Fn + Up Fn + Down 无效。我在我的内核中编译了所有必要的模块:

CONFIG_DELL_LAPTOP=m CONFIG_DELL_WMI=m CONFIG_DELL_WMI_AIO=m

在先前的型号(Latitude e6520)上,一切正常,无需额外设置。我在两台笔记本电脑上使用相同的(自定义构建)内核3.16.6。在e6520 wmi上,在e6540上没有。

我仍然可以使用echo

更改亮度

CONFIG_DELL_LAPTOP=m
CONFIG_DELL_WMI=m
CONFIG_DELL_WMI_AIO=m

但显然仅作为root

Fn + 向上 Fn + 向下不会更改/sys/class/backlight/acpi_video0/brightness。在之前的模型中,它确实会改变值。

有一件事我注意到,在旧型号上,最大值是15。在新模型上,它是95。看起来这个机制内部可能已经发生了变化。

因此我的问题:
如何让WMI热键在我的新笔记本电脑上运行?

我正在使用Debian wheezy和自定义内核3.16.6。我也尝试过分发内核3.16(来自Wheezy-backports的linux-image-3.16-0.bpo.2-amd64),而且wmi键也不起作用。

更新:

我刚刚注意到,当我在BIOS中时,WMI热键正常工作!
令人惊讶的是,当我启动进入linux时它们不起作用。

以下是dmesg的输出。提到dell_wmi: Received unknown WMI event看起来与我的问题有关,但我在旧笔记本电脑上得到了相同的消息,其中wmi热键正在工作。因此,仅凭这一点就不会成为问题所在。

echo 35 > /sys/class/backlight/acpi_video0/brightness

UPDATE2

在修补WMI模块后,我得到以下消息: Fn + Up Fn + Down < / p>

dmesg | egrep -i '(dell|wmi)'
[Tue Apr 15 22:04:30 2014] DMI: Dell Inc. Latitude E6540/05V0V4, BIOS A05 09/03/2013
[Tue Apr 15 22:04:30 2014] ACPI: RSDP 00000000000eee60 00024 (v02 DELL  )
[Tue Apr 15 22:04:30 2014] ACPI: XSDT 00000000d8fe0080 0007C (v01 DELL    CBX3    01072009 AMI  00010013)
[Tue Apr 15 22:04:30 2014] ACPI: FACP 00000000d8fed7e8 0010C (v05 DELL    CBX3    01072009 AMI  00010013)
[Tue Apr 15 22:04:30 2014] ACPI: DSDT 00000000d8fe0188 0D659 (v02 DELL    CBX3    00000014 INTL 20091112)
[Tue Apr 15 22:04:30 2014] ACPI: APIC 00000000d8fed8f8 00072 (v03 DELL    CBX3    01072009 AMI  00010013)
[Tue Apr 15 22:04:30 2014] ACPI: FPDT 00000000d8fed970 00044 (v01 DELL    CBX3    01072009 AMI  00010013)
[Tue Apr 15 22:04:30 2014] ACPI: HPET 00000000d8feed38 00038 (v01 DELL    CBX3    01072009 AMI. 00000005)
[Tue Apr 15 22:04:30 2014] ACPI: MCFG 00000000d8fef148 0003C (v01 DELL    CBX3    01072009 MSFT 00000097)
[Tue Apr 15 22:04:38 2014] dcdbas dcdbas: Dell Systems Management Base Driver (version 5.6.0-3.2)
[Tue Apr 15 22:04:39 2014] wmi: Mapper loaded
[Tue Apr 15 22:04:39 2014] input: Dell WMI hotkeys as /devices/virtual/input/input10
[Wed Apr 16 18:30:04 2014] dell_wmi: Received unknown WMI event (0x0)
[Fri Apr 18 17:09:41 2014] dell_wmi: Received unknown WMI event (0x0)
[Fri Apr 18 17:09:41 2014] dell_wmi: Received unknown WMI event (0x0)
[Fri Apr 18 17:09:49 2014] dell_wmi: Received unknown WMI event (0x0)

UPDATE3

同样有趣的是,笔记本电脑预装了Ubuntu 12.04,wmi键在Ubuntu上运行。

最佳答案

您可以安装xbacklight,这是一个使用RandR。然后,要激活它,请使用沿这些行绑定到两个键的简单脚本:

#!/usr/bin/env bash
up() {
    xbacklight -inc 10
}

down() {
    xbacklight -dec 10
}

notify() {
    bright=$(&lt;/sys/class/backlight/acpi_video0/actual_brightness)
    if [[ "$bright" -eq 95 ]]; then
        score="100%"
    else score="$(( $bright * 100 / 95 ))"
    fi
    printf '%s\n' "Backlight set to ${score}%" | dzen2 -p 3
}

if [[ $1 = up ]]; then
    up && notify
elif [[ $1 = down ]]; then
    down && notify
fi

将您的通知方法换成正常设置的一部分,例如,notify-send


相关问答

添加新评论