定义涉及 Fn 键的键盘快捷键

mox*_*mox 27 linux keyboard keyboard-shortcuts ubuntu

我习惯于按Fn+Left模拟HomeFn+RightEnd

在带有物理键HomeEnd键的键盘上,使用这些Fn键盘快捷键不起作用。

如何FnUbuntu Linux上映射自定义键盘快捷键?

Mar*_*mas 22

与 Alt 和 Ctrl 等修饰符不同,按下 Fn 键永远不会与操作系统通信。该键仅修改其他键的扫描码,因此按Fn+Right将模拟 End 键,即使它可能实际上不存在,但操作系统无法区分它们。这种行为完全由键盘电子设备控制,因此不能在不干扰电路或微控制器的情况下进行更改。

  • 好吧,在我装有 Debian 10 的戴尔机器上,按下 Fn 键时,`xev` 不显示任何内容。 (4认同)
  • 有一种操作系统和计算机绝对是这条规则的例外,那就是 mac 笔记本电脑。您实际上可以使用 Karabiner 修改此密钥。thinkpads 也会将此键发送到操作系统,但它不像 Mac 上的修饰键。 (2认同)
  • 这不是真的。`xev` 显示 `Fn` 按键。 (2认同)

joe*_*dle 16

在大多数系统上,无法检测Fn密钥本身,但您可以尝试使用:

$ xev | grep --line-buffered keysym
Run Code Online (Sandbox Code Playgroud)

找出哪些键Fn-LeftFn-Right发送。(grep只是减少噪音。)

如果幸运的话,这些按键会将不重要的按键发送到机器,然后您可以重新映射它们。

例如,在我的系统上,xev显示我的Fn-Left按键实际上发送了一个XF86AudioPrev事件:

state 0x0, keycode 173 (keysym 0x1008ff16, XF86AudioPrev), same_screen YES,
Run Code Online (Sandbox Code Playgroud)

我可以轻松地重新映射它以转换为Home关键事件:

$ xmodmap -e 'keysym XF86AudioPrev = Home'
Run Code Online (Sandbox Code Playgroud)

希望您能够对 End、PageUp 和 PageDown 执行相同的操作。

不幸的是,如果 xev 在您按下时没有收到任何独特的信息,Fn-Left那么您就不走运了。

真的很遗憾,Fn按键没有像其他修饰键那样直接发送。如果是这样,我们将有更多的权力通过软件配置它们的含义。


big*_*107 6

xev在终端打开。当我按下它可以检测ShiftCtrlAlt,和WinSuper),但是当我按下Fn键它不检测它。

所以软件与Fn密钥无关;由硬件决定向软件发送什么密钥(例如,HomeEnd密钥)。

所以你的键盘必须已经有了它才能做到这一点。