在 Linux 下的 Apple 键盘上,如何在没有 fn 修饰键的情况下使功能键正常工作?

在 Linux 下的 Apple 键盘上,如何在没有 fn 修饰键的情况下使功能键正常工作?

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

有什么方法可以交换这些功能,这样功能键不需要修饰符fn,但其他功能(亮度等)需要修饰符?

答案1

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

IE:

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 上的情况。


正如一些人评论的那样,这种变化是暂时的。您可以将其粘贴到登录 shell 的 RC 文件或 cron 中,这样您就不必担心它。

您还可以更改驱动程序设置以使此更改永久生效,如下所示:

echo options hid_apple fnmode=2 | sudo tee -a /etc/modprobe.d/hid_apple.conf
sudo update-initramfs -u -k all
# reboot when convenient

学分至https://askubuntu.com/a/7553

答案2

对于任何使用较新的 MacBook Pro(2016 及更高版本)的人偶然发现此线程,并且需要苹果斯皮驱动程序使键盘和触摸板工作,以下是如何使其工作,因为我找不到任何其他线程为较新的 Mac 解释这一点。

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

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

# If this returns "applespi", you are using applespi
ls /sys/module | grep -e applespi -e 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”。

答案3

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

# echo 0 > /sys/module/hid_apple/parameters/fnmode

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

答案4

此外,我建议使用以下命令更新内核配置:

sudo update-initramfs -u

相关内容