我想知道Fn我的笔记本电脑上的按键是如何工作的。我认为存在一个内核模块,它可以捕获Fn按键并调用一些脚本来执行某些操作。在我的笔记本电脑中,Fn+F2切换无线和蓝牙的电源。
acpi_listen
这是当我按下Fn+时的输出F2
hotkey ATKD 0000005d 00000019
hotkey ATKD 0000007e 00000009
xev
以下是for Fn+的输出F2
keycode 238 press
keycode 238 release
keycode 237 press
keycode 237 release
我猜只要我按下Fn+F2就会跳出两个事件。我试图找出这些键执行的操作。任何想法都值得赞赏 ;)
答案1
西奈特Fn对按键给出了非常易读的解释这里
技术细节
当你按下键盘上的某个键时,键盘控制器(一个小的 集成电路芯片 里面键盘)检测电路并对其进行处理以解码按下了哪个键,然后发送 扫描码到母板. 操作系统从BIOS然后执行处理该按键所需的任何操作。
对于大多数按键来说,这都很简单。如果你按下按键A ,其键盘控制器会将扫描码发送到主板,然后主板会将其传递给操作系统反过来通常会打印“A”。 (如果操作系统检测到当前按下了其中一个修饰键,则它可能会执行不同的操作。 实际上,您可以将其配置为在A按下该键时执行任何您想要的操作,无论是否使用修饰键。)
现在这个Fn键很特殊。当你单独按下它时,什么也不会发生,因为它只修饰键,通常不打算单独执行任何操作。当您按住它并按下另一个键时,键盘控制器会检测到该情况并在其内置表中查找它是否是已知组合。如果组合不在表中,则它会忽略它,但如果组合在表中,则它会查找关联的扫描码并发送该扫描码。
操作系统最终会看到什么?确实如此不是它会查看该键的扫描码Fn和另一个键的扫描码。相反,它会看到与 Fn 组合键所设置的任何功能相关联的单个扫描码。例如,如果笔记本电脑制造商已将 Fn+Down Arrow组合键设置为降低音量,则操作系统会看到与 相关联的扫描码Volume Down,而有些键盘实际上有 。
还要注意的是,Fn关键工作独立来自操作系统。
而且,本文可能会帮助你指明正确的方向:
内核有自己的
scancode
映射keycode
表,因此它将某个扫描码映射到键码。您可以查看 /usr/include/linux/input.h 以了解内核使用什么进行扫描码到键码的映射 - 它称为keymap
。
后记
我可能需要在一定程度上违背之前的说法,即Fn按键完全可以工作独立操作系统;这里不讨论更多技术细节,结果似乎是您的操作系统可能不“支持”键盘的全部或部分Fn按键,例如: