Chinaunix首页 | 论坛 | 博客
  • 博客访问: 210397
  • 博文数量: 145
  • 博客积分: 3000
  • 博客等级: 中校
  • 技术积分: 1720
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-14 18:42
文章分类

全部博文(145)

文章存档

2011年(1)

2009年(144)

我的朋友

分类: LINUX

2009-08-09 19:51:03

by tangke  2009-08-11

在我的ASUS M2000的笔记本上,最近在研究hal ,dbus等等之间的关系。

$vi /usr/share/hal/fdi/information/10freedesktop/30-keymap-misc.fdi
屏蔽了关于键盘部分的相关代码
     
          e06f:mute
          e06d:volumeup
          e06e:volumedown
     


把这部分全部屏蔽掉之后,发现通过Fn+F10,Fn+F11,Fn+F12等等快捷键还是会起作用,那么估计这一块可能是在acpid里面做的了,和HAL没有关系了。

我们直接去查相关的acpid的配置信息
$cd /etc/acpid/events/
$mv /etc/acpid/events/asus-* ~/
$/etc/init.d/acpid stop
$/etc/init.d/acpid start
在通过Fn+F10等快捷键去设的话,发现已经不起作用了,那就说明问题就在这里了。
后来我又试了一下Fn+F5,Fn+F6发现还是可以起作用,那就说明背光的开关可能是通过直接内核来做的,即使我把acpid这个daemon程序关闭了之后,还是会起作用。

后来我又通过acpi_listen这个程序来进行调试,
当我按下组合键时会出现:
hotkey ATKD 00000030 00000003
hotkey ATKD 00000030 00000004
hotkey ATKD 00000030 00000005
hotkey ATKD 00000030 00000006
hotkey ATKD 00000030 00000007
hotkey ATKD 00000030 00000008
hotkey ATKD 00000030 00000009
hotkey ATKD 00000030 0000000a
hotkey ATKD 00000030 0000000b
hotkey ATKD 00000030 0000000c
hotkey ATKD 00000030 0000000d
hotkey ATKD 00000030 0000000e
hotkey ATKD 00000030 0000000f
hotkey ATKD 00000030 00000010
hotkey ATKD 00000030 00000011
hotkey ATKD 00000030 00000012
hotkey ATKD 00000030 00000013
hotkey ATKD 00000030 00000014
hotkey ATKD 00000030 00000015
hotkey ATKD 00000030 00000016
当然我按下某些键会出现某些信息
比如
Fn+F1
Fn+F2 wireless
Fn+F5
Fn+F6
Fn+F7
Fn+F8
Fn+F10
Fn+F11
Fn+F12
当然我有另外几个按钮没有定义,那么我就来定义一下他们吧!
首先来确定一下:
hotkey ATKD 0000005c 00000005  终端gnome-terminal
hotkey ATKD 00000050 00000004  电子邮件thunderbird
hotkey ATKD 00000051 00000004  firefox-3.5
hotkey ATKD 00000052 00000003  stardict中文翻译
hotkey ATKD 00000053 00000003  聊天工具QQ

如果有问题的话,我们可以直接通过acpid -d来启动调试模式,甚至我们可以修改acpid的source code来做这个事情。
下面是我一个修改的mailbtn.sh
getXconsole;
if [ x"$XAUTHORITY" != x"" ]; then
    . /usr/share/acpi-support/key-constants
#    acpi_fakekey $KEY_MAIL   # [was: 236]
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/tangke/Desktop/thunderbird/
    export PATH=$PATH:/home/tangke/Desktop/thunderbird/
    thunderbird-bin
fi

2.那么我还有没有弄清楚的是,为什么通过acpi_fakekey $KEY_MAIL就可以直接会引起volume,brightness等等的变化
我看了一下acpi_fakekey的源代码,比较简单就是往/dev/input/event4里面写东西进去。
我想可能的原因是因为有某些程序去探测了这个文件,但是为什么不直接通过/var/run/acpid.socket这个文件去进行交互呢?

这一点是我不理解的地方

后来发现是一个gnome-settings-daemon 程序在做这个事情,只要我把gnome-settings-daemon这个程序杀了,即使通过acpi_fakekey $KEY_BRIGHTNESSUP之后,也不会有反应了,那么就是说这个软件探测了/dev/input/event4这个文件的变化。
阅读(488) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~