Archlinux下启用Thinkpad功能键

不知道是Thinkpad的问题,还是Archlinux的问题,自从由Ubuntu换到了Archlinux之后,我的T43就没有成功搞定过Thinkpad的这些功能键,所以Fn这个键就成了个摆设,每次需要开启蓝牙或者关闭屏幕的时候,我能做的事情就是敲一些命令,实在有点烦。今天在网上找了一些,确实是有解决办法的,而且并不复杂,我们需要做的事情就是修改/etc/acpi/handler.sh这个问题,在这里面配置下功能键对应的命令。

开始之前,先确定你已经在/etc/rc.conf里面加载了ibm_acpi这个Module。这是我们进行修改和配置的先决条件,接下里将原本的/etc/acpi/handler.sh备份一下,尽管来说很多时候并不是需要这么做,鉴于我们都是新手,防止出现意外还是备份一下比较安全。这些都搞定之后,把下面的这段代码保存为新的/etc/acpi/handler.sh。

#!/bin/sh
# Default acpi script that takes an entry for all actions

# NOTE: This is a 2.6-centric script.  If you use 2.4.x, you'll have to
#       modify it to not use /sys

set $*

case "$1" in
    ibm/hotkey)
        case "$2" in
            HKEY)
                case "$4" in
                    00001002) # Lock screen
                        xscreensaver-command -lock
                        ;;
                    00001003) # swithing display off
                     xset dpms force off
;;
                    00001004) # Suspend to RAM
                        /usr/sbin/pm-suspend
                        ;;
                    00001005) # Switch Bluetooth
                        if [ "$(grep "status.*enabled" /proc/acpi/ibm/bluetooth)" ]; then
                            echo "disable" > /proc/acpi/ibm/bluetooth
                        else
                            echo "enable" > /proc/acpi/ibm/bluetooth
                        fi
                        ;;
                    00001007) # Toggle external display
                        if [ "$(xrandr -q | grep "VGA connected")" ]; then
                            if [ "$(xrandr -q | grep "VGA connected [0-9]")" ]; then
                                xrandr --output VGA --off
                            else
                                xrandr --output VGA --auto
                            fi
                        else
                            xrandr --output VGA --off
                        fi
                        ;;
                    #00001008) # Toggle Trackpoint/Touchpad
                    #    ;;
                    #00001009) # Eject from dock
                    #    ;;
                    0000100c) # Hibernate
/usr/sbin/pm-hibernate
                        ;;
                    #00001014) # Toggle zoom
                    #    ;;
                    #00001018) # ThinkVantage button
                    #    ;;
                esac
                ;;
        esac
        ;;
    button/lid)
        case "$2" in
            LID)
                case "$3" in
                    00000080) # Lid opened/closed
                        grep open /proc/acpi/button/lid/LID/state || hibernate -F /etc/hibernate/ususpend-ram.conf
                        ;;
                esac
                ;;
        esac
        ;;
    ac_adapter)
        case "$2" in
            AC)
                case "$4" in
                    00000001) # AC plugged
                        echo -n performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
                        ;;
                    00000000) # AC unplugged
                        echo -n ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
                        ;;
                esac
                ;;
        esac
        ;;
    video)
        case "$2" in
            LCD0)
                case "$3" in
                    00000086) # Brightness up
                        brightness +
                        ;;
                    00000087) # Brightness down
                        brightness -
                        ;;
                esac
                ;;
        esac
        ;;
esac

在保存好之后,其实你可以根据自己的需要修改一些对应的命令,进而调整一些功能键。在我的这个配置下面,Fn+F2是使用xscreensaver锁定屏幕;Fn+F3是关闭显示屏幕;Fn+F4是挂起,这里我使用的是pm-suspend;Fn+F5是切换蓝牙的开关;Fn+F7是启动外接显示器或者投影仪之类的;Fn+F12是休眠。基本上就是这样,同时还启用了调整屏幕亮度,打开上面小灯等功能。至少在我的T43上面这些功能都没有问题。

这些都搞定之后你只需要sudo /etc/rc.d/acpi restart,重启启动acpi就好了,现在赶紧来试试看吧,那些你熟悉的功能键是不是都找回来了?

本文主要参考Arch Linux Forum

Popularity: 77% [?]

也许你对这些文章还有兴趣

收藏到QQ书签

2 条评论 to “ Archlinux下启用Thinkpad功能键 ”

  1. 什么时候它的易用性得到本质上的提高,就用它了

    That5 发表的最新文章..科恩兄弟

    回复留言

  2. 按你说的方法做了,不起作用啊,一个按键都不能用,这是怎么回事?感觉没有监听到事件啊。
    我单独运行sudo pm-suspend能进入待机状态,但运行sudo pm-hibernate后又会立刻启动起来,休眠失败,运行xset dpms force off能关闭屏幕,这些都能证明命令是有用的,问题应该出在监听上,我restart了acpid,也重启了电脑还是不行。
    Asins´s last blog ..修正IE6不支持position:fixed的bug My ComLuv Profile

    回复留言

参与评论

CommentLuv Enabled