Fn键如何工作?


26

我想知道Fn笔记本电脑中的按键如何工作。我认为存在一个内核模块,可以捕获Fn密钥并调用一些脚本来执行某些操作。在我的笔记本电脑中,Fn+ F2切换无线和蓝牙的电源。

这是的输出acpi_listen,当我按Fn+时F2

hotkey ATKD 0000005d 00000019
hotkey ATKD 0000007e 00000009

并且,folloing是输出xevFn+F2

keycode 238 press
keycode 238 release
keycode 237 press
keycode 237 release

我想每当我按下Fn+ F2两个事件就会跳出。我试图找到对此键执行了什么操作。任何想法表示赞赏;)

Answers:


26

Synetech提供了有关一个非常可读的解释Fn按键这里

技术细节

当您按下键盘上的某个键时,键盘控制器(键盘内部的一个小的 IC芯片 )会检测电路并对其进行处理,以解码出按下了哪个键,然后将扫描码发送 至主板。操作系统从BIOS接收扫描代码,然后执行其处理该按键所需要的任何操作。

使用大多数键,这很简单。如果按下该A 键,其键盘控制器会将扫描代码发送到主板,然后将其传递到操作系统,该操作系统通常会打印“ A”。(如果操作系统检测到当前按住其中一个修饰键,那么它可能会做一些不同的事情。实际上,您可以将其配置为在A按下带有或不带有修饰键的键时执行所需的操作。)

现在的Fn钥匙很特别。当您单独按下它时,什么也不会发生,因为它是一个修饰键,而不是(通常)打算自己做任何事情。当您按住它并按下另一个键时,键盘控制器会检测到它,并在其内置表中查找以查看是否为已知组合。如果该组合不在表中,那么它将忽略它,但是如果该组合在表中,则它将查找关联的扫描代码并发送。

操作系统最终会看到什么?它并不能看到的扫描码Fn键和其他按键扫描码。相反,它将看到与Fn-combo所设置的任何功能相关联的单个扫描代码。例如,如果笔记本电脑制造商已将Fn+ Down Arrow组合键设置 为减小音量,则操作系统会看到与Volume Down某些键盘实际上具有的关联的扫描代码。

另请注意,该Fn密钥独立于操作系统运行。

此外,本文可能会帮助您指出正确的方向:

内核具有自己scancodekeycode映射表,因此它将特定的扫描码映射到键码。您可以查看/usr/include/linux/input.h来查看内核用于将扫描码映射到键码的映射–称为a keymap


后记

我可能需要稍微改变一下先前的说法,即Fn密钥完全独立于操作系统而工作。在这里不赘述更多技术细节,结果似乎是您的操作系统可能不“支持”全部或某些键盘Fn按键,例如:


1
谢谢,关于Fn键的有趣信息,实际上,我想找到scancode与“键码238”相关的OS句柄的哪一部分。
soroosh 2013年

3
也许本文可以帮助您指出正确的方向?“内核具有自己scancodekeycode映射表,因此它将特定的扫描码映射到键码。您可以查看/usr/include/linux/input.h来查看内核用于将扫描码映射到键码的过程–称为a keymap。”
关于natty的细节,

1
那篇文章很完美,这就是我想要的
soroosh 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.