为什么我的 Thinkpad 亮度控制会跳过步骤?

And*_*rey 15 display 12.04

问题:我的笔记本电脑上有 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 个级别(0-15)。

我尝试acpi_backlight=vendor在 grub 中设置(受本主题启发:http : //ubuntuforums.org/showthread.php?t=1909184有类似问题)。它的工作原理是热键工作正常。但是出现了 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
    
    Run Code Online (Sandbox Code Playgroud)

    此时我认为(1)热键在硬件级别工作;(2)ibm/hotkey照顾热键;(3) 也video照顾。因此,出现了三步问题。

    我尝试将视频列入黑名单(我预计这会导致双步行为),但没有任何改变。

作为一种变通方法,我创建了CompizConfig设置管理器中我自己的热键-描述在这里,但--clearmodifiers参数:

xdotool key --clearmodifiers XF86MonBrightnessUp
xdotool key --clearmodifiers XF86MonBrightnessDown
Run Code Online (Sandbox Code Playgroud)

所以现在我可以使用初始热键或新热键进行更精细的调整。

开放问题

已经讨论了双步的情况:联想ThinkPad,亮度功能键使两步而不是一步,寻找解决方法

硬件只是这样做,然后还会发出一个信号,表明按钮已被按下。也许您可以在系统 -> 首选项 -> 键盘快捷键中取消设置此操作的快捷方式?

但我很想知道,

  1. 为什么我得到三重一步的问题?
  2. 如何取消设置处理此热键?

如果有人解释,我将不胜感激。

ish*_*ish 14

1 次按键的 3 个步骤从何而来?

一次按键可以获得三个亮度等级,因为:

  1. 标准 ACPI/视频驱动程序调整步骤 1
  2. thinkpad_acpi司机告诉BIOS调整第2步,但仍转发按键事件
  3. GNOME power daemon 拦截这个按键并告诉 ACPI 再次调整第 3 步

1.禁止显卡驱动自行调节亮度

这摆脱了上述三个步骤(步骤 1)之一。

  • 打开终端
  • 类型 sudo sh -c 'echo -n 0 > /sys/module/video/parameters/brightness_switch_enabled'
  • 测试,现在你应该有步骤的亮度控制2
  • 要在启动时自动禁用此功能,请/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并重新编译它:

    1. 安装内核头文件: sudo apt-get install linux-headers-$(uname -r)
    2. 安装构建工具 sudo apt-get install build-essential
    3. 创建一个临时目录并更改为:
      mkdir ~/tpacpi-bright && cd ~/tpacpi-bright
    4. thinkpad_acpi.c从 Ubuntu 内核 git 存储库下载并修补源文件:

      wget -O- "http://kernel.ubuntu.com/git?p=ubuntu/ubuntu-precise.git;\
      a=blob_plain;f=drivers/platform/x86/thinkpad_acpi.c;hb=HEAD"\
      | sed -e 's/tp_features.bright_acpimode && acpi_video/acpi_video/g' \
      > thinkpad_acpi.c
    5. 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
    1. 现在键入make以创建模块;完成后,您将thinkpad_acpi.ko在文件夹中看到一个文件。
  • 加载后测试修补模块:

    须藤 rmmod thinkpad_acpi && 须藤 lsmod thinkpad_acpi.ko
  • 如果亮度现在固定并且可以让您完全控制,请使用修补模块替换库存模块:

    TPDIR=/lib/modules/$(uname -r)/kernel/drivers/platform/x86
    须藤 mv $TPDIR/thinkpad_acpi.ko $TPDIR/thinkpad_acpi.ko.stock
    须藤 mv ~/tpacpi-bright/thinkpad_acpi.ko $TPDIR/thinkpad_acpi.ko
    
  • 您可以使用以下命令清理构建文件夹make clean;保留它以备将来的内核升级!