在Linux下的Apple Keyboard上,如何在没有fn修饰键的情况下使功能键起作用?


19

我在Linux上使用Apple有线键盘。默认情况下,功能键(F1,F2,F3等)需要fn按下才能使它们起作用。如果没有该fn键,这些键将控制屏幕亮度,音量和音乐曲目控制等功能。

有什么方法可以交换它们,因此功能键不需要fn修饰符,而其他功能(亮度等)需要吗?

Answers:


24

您需要添加02/sys/module/hid_apple/parameters/fnmode

即:

echo 2 > /sys/module/hid_apple/parameters/fnmode

关于这两个值之间的差异似乎有些困惑。引用Ubuntu文档

  1. 0 =禁用:禁用'fn'键。按“ fn” +“ F8”的行为就像您仅按“ F8”
  2. 1 = fkeyslast:功能键用作最后一个键。按“ F8”键将用作特殊键。按下'fn'+'F8'会像F8一样。
  3. 2 = fkeysfirst:功能键用作第一键。按“ F8”键的行为类似于F8。按“ fn” +“ F8”将用作特殊键(播放/暂停)。

请注意,这在Fedora上也适用于我。


它是fnmode =下划线
Yauhen

非常感谢!!!
Shivam

3

我发现更改此修饰符的行为非常简单,因为以root 身份将文件中的值/sys/module/hid_apple/parameters/fnmode从更改10。例如:

#回声0> / sys / module / hid_apple / parameters / fnmode

请注意,在某些较旧的linux版本中,此文件位于中/sys/module/apple/parameters/fnmode。此外,重新启动后此更改将不会保留。


2

对于那些拒绝访问并且不能简单地以“ sudo”作为前缀的用户,请使用:

sudo nano /sys/module/hid_apple/parameters/fnmode

将其更改为2或其他,然后Ctrl+X保存。


更好的办法是echo 2| sudo tee /sys/module/hid_apple/parameters/fnmode,但所有这些解决方案再接再厉(瞬态....一种方法systemd如Fedora比如环境): echo "w /sys/module/hid_apple/parameters/fnmode - - - - 2" | sudo tee /etc/tmpfiles.d/rev_fn_key.conf
nhed

2

对于使用较新的MacBook Pro(2016年及更高版本)之一而需要使用applespi驱动程序来使键盘和触摸板正常工作的人,此方法是使该工作正常进行的方法,因为我找不到其他线程对此进行解释。较新的Mac。

据我了解,驱动程序有效地替代了hid_apple模块的角色,因此要编辑的文件略有不同。

首先,要验证您使用的是applespi驱动程序,而不是hid_apple驱动程序,请检查以下哪些命令(使用终端)返回了某些内容。哪个都会告诉您当前正在使用哪个驱动程序:

# If this returns "applespi", you are using applespi
ls /sys/module | grep applespi

# If this returns "hid_apple", you are using hid_apple
ls /sys/module | grep hid_apple

临时测试设置(重启后将重置设置):

echo 2 | sudo tee -a /sys/module/applespi/parameters/fnmode

永久应用更改(在重启后继续):

# Add the option for the fn key
echo options applespi fnmode=2 | sudo tee -a /etc/modprobe.d/applespi.conf
# Update initramfs bootfile
sudo update-initramfs -u -k all
# Reboot to test (optional)
sudo reboot

对于使用hid_apple模块的旧版MacBook Pro,请在命令中使用“ hid_apple”而不是“ applespi”。


1

较早的讨论中,给出了带有内核引导参数的解决方案,该参数可能是更可取的(系统范围的应用程序,仅修改其中的一行/etc/default/grub等)。

仅根据该解决方案,fnmode将设置为2而不是0。我只是尝试设置hid_apple/parameters/fnmode2,它也具有所需的效果。也许逻辑仅仅是'1→“要求Fn访问F1F2F3,...”与所有其他值?


嗨,RJVB,欢迎来到unix.SE。我已经编辑了您的答案以改善格式。看一下源代码,学习一些技巧。
DRS
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.