sor*_*osh 26 shortcut-keys kernel events
我想知道Fn我的笔记本电脑中的按键是如何工作的。我认为存在一个内核模块来捕获Fn密钥并调用一些脚本来做某事。在我的笔记本电脑中,Fn+F2无线和蓝牙的开关电源。
这是acpi_listen
, 当我按Fn+时的输出F2
hotkey ATKD 0000005d 00000019
hotkey ATKD 0000007e 00000009
Run Code Online (Sandbox Code Playgroud)
并且,以下是xev
for Fn+ 的输出F2
keycode 238 press
keycode 238 release
keycode 237 press
keycode 237 release
Run Code Online (Sandbox Code Playgroud)
我想每当我按下Fn+F2两个事件都会跳出。我试图找出为这些键执行了哪些操作。任何想法表示赞赏;)
nut*_*tty 27
Synetech对此处的Fn键进行了非常易读的解释
技术细节
当您按下键盘上的某个键时,键盘控制器(键盘内部的一个小 IC 芯片 )会检测电路并对其进行处理以解码按下的键,然后将扫描码发送 到主板。操作系统从BIOS接收扫描码,然后执行它需要的任何操作以处理该按键。
对于大多数键,这很简单。如果您按下该A 键,它的键盘控制器会将扫描码发送到主板,然后主板将其传递给操作系统,操作系统通常会打印“A”。(如果操作系统检测到其中一个修饰键当前被按下,那么它可能会做一些不同的事情。实际上,您可以将其配置为在A使用或不使用修饰符按下该键时执行您想要的任何操作。)
现在Fn关键是特殊的。当您单独按下它时,没有任何反应,因为它只是一个修饰键,并且(通常)并不意味着自己做任何事情。当您按住它并按下另一个键时,键盘控制器会检测到并查看其内置表格以查看它是否是已知组合。如果组合不在表中,则它只是忽略它,但如果组合在表中,则查找关联的扫描码并发送。
操作系统最终会看到什么?它并不能看到的扫描码Fn键和其他按键扫描码。相反,它会看到与 Fn 组合已设置为的任何功能相关联的单个扫描码。例如,如果笔记本电脑制造商设置了 Fn+Down Arrow组合键来减小音量,那么操作系统会看到与Volume Down某些键盘实际具有的相关联的扫描码。
另请注意,该Fn密钥独立于操作系统工作。
此外,本文可能会帮助您指明正确的方向:
内核有自己的
scancode
tokeycode
映射表,所以它将某个扫描码映射到一个键码。您可以查看 /usr/include/linux/input.h 以查看您的内核用于扫描码到键码映射的内容——它被称为keymap
.
后记
我可能需要对先前的说法有所反驳,即Fn密钥完全独立于操作系统工作;在这里不讨论更多技术细节,结果似乎是您的操作系统可能不“支持”所有或部分键盘Fn键,例如:
归档时间: |
|
查看次数: |
9159 次 |
最近记录: |