如何在 Arch 中永久激活功能键

如何在 Arch 中永久激活功能键

搜索后我发现这个问题这解释了如何激活功能键,但变化似乎不是永久性的。

每次启动时文件内容/sys/module/hid_apple/parameters/fnmode都会返回到3

为什么3? 允许的参数不是在范围内吗0-2

我怎样才能使文件更改/sys/module/hid_apple/parameters/fnmode永久生效?

答案1

为什么是 3?允许的参数不是仅在 0-2 范围内吗?

不,该选项3是在 2022 年为 Linux 5.18 添加的,而您正在阅读的文档似乎是在 ~2012 年最后更新的。

$ modinfo hid-apple
parm:           fnmode:Mode of fn key on Apple keyboards (0 = disabled,
                1 = fkeyslast, 2 = fkeysfirst, [3] = auto) (uint)

如何才能使 /sys/module/hid_apple/parameters/fnmode 文件的更改永久生效?

它是一个模块参数,因此您可以通过 a) modprobe 或 b) 内核命令行对其进行配置。

  • 当通过 modprobe 加载模块时,它们的参数将从文件中读取/etc/modprobe.d(参见man modprobe.d手册页):

    options hid-apple fnmode=2
    

    不要忘记重新运行mkinitcpio -P以将文件复制到 initramfs 中(因为这很可能是模块实际加载时的情况)。

  • 也可以通过内核命令行(通过 GRUB 或类似方式)指定默认参数:

    linux root=... rw hid_apple.fnmode=2
    

    (至少,我认为这应该可行。)

答案2

这不是最佳解决方案,但目前我已经这样做了:

  1. 创建 systemd 服务文件:使用nano具有超级用户权限的文本编辑器创建一个新的 systemd 服务文件。要运行的命令是sudo nano /etc/systemd/system/fnmode.service.

  2. 填充服务文件:服务文件需要填充以下 systemd 指令:

    [Unit]
    Description=Set hid_apple fnmode
    
    [Service]
    Type=oneshot
    ExecStart=/bin/bash -c 'echo 2 > /sys/module/hid_apple/parameters/fnmode'
    
    [Install]
    WantedBy=multi-user.target
    
  3. 启用 systemd 服务:需要启用 systemd 服务以在系统启动时启动。可以使用以下命令完成此操作sudo systemctl enable fnmode

  4. 启动 systemd 服务:最后,可以立即启动 systemd 服务,而无需重新启动系统。这可以通过命令来完成sudo systemctl start fnmode

相关内容