或者如果要自己写,要怎么写呢? 如果要说的全面一点,笔记本上的组合键(以及多出来的按键)其实有两种:
一种组合键产生acpi事件。如果这个acpi事件产生的符合标准,那么内核的acpi模块可以直接处理了,一些笔记本就是这样,所以用起来很方便。不过有很多厂家并不这么做,它们的组合键产生的是自定义事件,这时候通用acpi模块就不起作用了。必须有相应的模块来处理这些事件,或者把它们转换成标准的acpi事件。前面说过,内核里面包括了ibm、华硕和东芝这三种笔记本的处理模块,还有人写了一些厂家的acpi模块但是没有进入核心。内核还提供了一个hotkey模块,通过这个模块可以把自定义事件转换成为标准事件,不过这需要用户自己去配置。
另一种组合键产生的是键盘事件。这种组合键相对容易处理,只要配置好键盘布局就好了;或者也可以用setkeycodes和xmodmap自己配置。
就我所见的笔记本(我见过的也不多就是了),一部分机器所有Fn组合键产生的都是acpi事件,比如华硕的某些型号;另一部分所有的按键都是键盘事件,比如部分HP的笔记本;不过最常见的是一台机器上一部分组合键产生acpi事件,其他的组合键产生键盘事件。通常情况下,调节屏幕亮度的组合键都是产生acpi事件的组合键,调节音量的组合键产生的是键盘事件。
acpi事件的处理一般是通过配置acpid的脚本;键盘事件的处理方法就多了去了。GNOME/KDE已经有了简单的实现,再要强大的功能可以自己去找软件。
如果组合键不起作用,从这两个源头找起就比较容易了。 我的toshiba M18据说是某台湾厂商代工的,是不是因为这个原因即使内核有 toshiba模块,Fn组合键也不起作用呢? 我没有东芝的笔记本,所以下面的说法可能不准确。
我看了一下toshiba_acpi的代码,发现它写的很简单,自己并没有处理热键事件,只是提供了一个给你查询热键事件的接口:/proc/acpi/toshiba/keys。一般的说,你需要自己查询热键事件,然后自行处理。
toshiba_acpi的作者自己提供了一个hotkey daemon的示例,在他的主页上有
http://memebeam.org/toys/ToshibaAcpiDriver
另外有一个开源项目http://fnfx.sourceforge.net/好像是专门基于toshiba_acpi来处理Fn热键的。
上面都是我凭空而来的说法,你得自己试试看。
我的toshiba M18据说是某台湾厂商代工的,是不是因为这个原因即使内核有 toshiba模块,Fn组合键也不起作用呢?
页:
1
[2]