ibm/hotkey on R52 laptop
时间:2007-07-29
来源:互联网
搞定了我小黑的休眠(sleep)支持,屏幕关闭,并且让原来ibm的热键和合上屏幕的动作全部得到正确相应!
盛夏一个无比炎热美好的不眠夜!
IBM ThinkPad R52热键的设置:
-------------------------------------------
1. 首先确保已经正确安装acpid。同时,我将内核的thinkpad_acpi编成了模块,并且在rc.conf中自动加载。在/etc/modprobe.conf添加
options ibm_acpi hotkey=enable,0xffff experimental=1 |
Basically, acpid just executes scripts residing in /etc/acpi/actions. Which script to launch at which event is configured in several files in /etc/acpi/events. All actions are documented in /var/log/acpid. |
| - apci | | - actions | | | - instWiFi.sh | | | - lcd_switch.sh | | | - sleep.sh | | - events | | | - anything | | - handler.sh |
3. 将acpi对ibm/hotkey事件的相应加入handler.sh:
ibm/hotkey) case "$2" in HKEY) case "$4" in 00001003) #echo "f3" >/dev/tty5 /etc/acpi/actions/lcd_switch.sh ;; 00001004) #echo "f4" >/dev/tty5 /etc/acpi/actions/sleep.sh ;; 00001005) #echo "f7" >/dev/tty5 /etc/acpi/actions/instWiFi.sh ;; 00001007) #echo "f7" >/dev/tty5 echo video_switch > /proc/acpi/ibm/video ;; 00001008) #echo "f8" >/dev/tty5 echo eject > /proc/acpi/ibm/bay ;; 0000100c) #echo "f12" >/dev/tty5 /sbin/halt ;; esac ;; *) logger "ibm_acpi undefined:$2";; esac ;; |
$ cat lcd_switch.sh #!/bin/sh flag=/tmp/thinkpad_lcd_off if [ -e $flag ]; then /usr/sbin/radeontool light onrm -f $flag else /usr/sbin/radeontool light off >$flag fi |
$ cat instWiFi.sh #!/bin/sh #echo Feel Freedom,using WiFi! if lsmod |grep -q 'ipw2200' then rmmod ipw2200 ieee80211 ieee80211_crypt;pkill dhcpcd else modprobe ipw2200;iwconfig eth1 essid default key 7db579d6f3;dhcpcd eth1 fi |
$ cat sleep.sh #!/bin/sh # if launched through a lid event and lid is open, do nothing echo "$1" | grep "button/lid" && grep -q open /proc/acpi/button/lid/LID/state && exit 0 # remove USB 1.1 driver rmmod uhci_hcd # sync filesystem and clock sync /sbin/hwclock --systohc # switch to console FGCONSOLE=`fgconsole` chvt 6 /usr/sbin/radeontool light off # go to sleep echo -n "mem" > /sys/power/state # readjust the clock (it might be off a bit after suspend) /sbin/hwclock --adjust /sbin/hwclock --hctosys # reload USB 1.1 driver modprobe uhci_hcd # turn on the backlight and switch back to X radeontool light on chvt $FGCONSOLE |
--lcd_switch.sh提供了关闭屏幕的功能(需要radeontool的支持);
--sleep.sh提供了休眠的功能,修改后的休眠脚本(需要radeontool的支持);
--instWiFi.sh提供了无线连接和断开的功能(需要首先配置好无线:安装wireless_tools和ipw2200-fw,并且编译内核时提供了无线支持)。
记得chmod +x /etc/acpi/actions/*
5. 安装radeontool, http://www.thinkwiki.org/wiki/Radeontool
6. $/etc/rc.d/acpid restart,然后就可以看看各个热键是否起作用了。
IBM ThinkPad 合上屏幕休眠的设置:
---------------------------------------------
IBM休眠的快捷方式有两个:
1. 按Fn+F4
2. 合上机盖
分别在handler.sh上对应:
1. ibm/hotkey HKEY 00000080 00001004
2. ibm/hotkey HKEY 00000080 00005001 #ThinkPad对笔记本加上的热键,只有thinkpad会产生
button/lid LID 00000080 00000007 #正常合上机盖所产生的信号,适合于所有的笔记本
于是,对于情况2,我们在handler.sh中加入相应的处理方法:
... button/lid) #echo "LID switched!">/dev/tty5 /etc/acpi/actions/sleep.sh #添加这句 ;; ... |
原理:
--------------------------------------
我们来看看acpid的工作原理:
1. 首先,我们按下某热键,此处我们举例Fn+F4 ;
2. acpid监听并截获这个按键组合,我们可以用acpi_listen命令来手动查看不同按键组合产生不同的信号:
$ acpi_listen ibm/hotkey HKEY 00000080 00001004 #这是我的机器上Fn+F4产生的中断信号 |
$ cat anything event=.* action=/etc/acpi/handler.sh %e |
$ vim /etc/acpid/events/sleep event=ibm/hotkey HKEY 00000080 00001004 #ThinkPad Fn+F4产生的中断信号 action=/etc/acpi/actions/sleep.sh #遇到这个中断信号则执行该脚本 |
set $* case "$1" in ibm/hotkey) case "$2" in HKEY) case "$4" in 00001004) #echo "f4" >/dev/tty5,终于分析完Fn+F4信号了 /etc/acpi/actions/sleep.sh #激活相应事件处理程序 ;; ... |
5. /etc/acpi/actions/sleep.sh被执行。
Links:
-------------------------------------------
1. 笔记本上使用ArchLinux:
http://www.archlinux.org.cn/main/?q=node/76#sec-4
2. How to configure acpid:
http://www.thinkwiki.org/wiki/How_to...#Action_Script
3. Radeontool:
http://www.thinkwiki.org/wiki/Randontool
4. Debian GNU/Linux on IBM T41P
http://pthichat.net/index.php/2004/1...ux-on-ibm-t41p
5. Debian + IBM-R40(迅驰)
http://www.linuxsir.org/bbs/showthread.php?t=238459
Future Work:
----------------------------------------
1. 现在我的Ctrl+Alt+F1~F8不能用啦,chvt的时候,屏幕会变黑,不停闪动,但是没有字符界面出来;
2. Ctrl+Alt+BackSpace退出X的时候,出现情况和上面一样,我想是我的图形界面出问题了,并且我猜这个和acpid有关,是我昨天晚上安装了acpid,cpudyn后出现的问题;
3. 我的ipw2200,ieee80211,ieee80211_crypt模块开机会自启动,也就是说刚刚开机时lsmod就能查看到这些模块,我的rc.conf下没有自启动这些模块,怎么把这些自启动关掉。
如果各位看官有谁能解决这些问题,在此谢过了。
作者: littleprince.zh 发布时间: 2007-07-29
作者: fboxster 发布时间: 2007-07-30
作者: wd_afei 发布时间: 2007-07-30
作者: flytigerboy 发布时间: 2008-01-14
作者: Tru64 发布时间: 2008-01-14
作者: flytigerboy 发布时间: 2008-01-18
作者: dreamawake 发布时间: 2008-01-19
作者: dreamawake
本文发表在http://peterpannju.blogbus.com/logs/7173241.html,作者有转载声明的哦:)
|
作者: littleprince.zh 发布时间: 2009-10-06
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28