如何在Linux中的Apple Keyboard上交换功能键的“ fn”使用


43

我有一个苹果薄型键盘(USB),如果我想按原样使用其中一个功能键,还必须先按“ fn”键。否则,它将尝试执行按键的其他功能,例如增加或减小显示强度,更改音量/静音等。

同样,对于常规键盘,fn键实际上位于“插入”键的位置。我该如何解决所有这些问题?

我真的很喜欢这款键盘,因为它使我的打字更加轻松,也更加安静。但是有时有些不同的映射使我感到困惑。

谢谢 :-)

Answers:


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

或者,如果出现权限问题:

echo 0 | sudo tee /sys/module/hid_apple/parameters/fnmode

这将防止您必须重新启动。添加该选项是一个好主意,因此更改将在重新启动后继续存在。

  • 0 =禁用Fn键
  • 1 =默认情况下按下Fn键
  • 2 =默认释放Fn键

/drivers/hid/hid-apple.c 第42行

Apple键盘上的fn键模式(0 =禁用,[1] = fkeyslast,2 = fkeysfirst)


1
看来我没有使用Apple驱动程序,所以这对我不起作用。我有一个非品牌的苹果键盘(Razor Black Widow)。
基辅利

1
@Kieveli当人们说Apple键盘不是通用的意思时,它们的意思是在Apple硬件中。如果硬件不是Apple,那么您将不会使用Apple的驱动程序。您必须找出最先使用哪个驱动程序
DallaRosa 2014年

4
对于Ubuntu 14.04.3,@ cynyr的回答不起作用。您将获得“权限被拒绝”。工作之一在这里:echo 2 | sudo tee / sys / module / hid_apple / parameters / fnmode
akikara

有关许可的问题,请参阅[ askubuntu.com/questions/103643/…–
Diogo

35

上面关于设置什么选项的答案/etc/modprobe.d有点过时了。幸运的是,有关于Apple Keyboard支持的详细文档

  1. 编辑或创建文件/etc/modprobe.d/hid_apple.conf,例如:

    gksudo gedit /etc/modprobe.d/hid_apple.conf

  2. 将此行添加到以前打开的文件。

    options hid_apple fnmode=2

  3. 保存文件并执行以下命令,以通知hid_apple模块重新加载其配置。

    sudo update-initramfs -u

  4. 重启

我个人建议sudo update-initramfs -u -k all为您所有的内核更新它(一旦您确信该设置可以按预期工作)。

将fnmode设置为/sys仍然可以使用相同的方式:

sudo -s 'echo 2 > /sys/module/hid_apple/parameters/fnmode'

两种方法中的值如下:

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


您所需echo 2 > /sys/module/hid_apple/parameters/fnmode要做的就是以root用户身份运行(至少在Fedora发行版上),以使FN作为主要用户,而Mac控件成为次要用户。哦耶!!谢谢,wuputah!
Ilia Rostovtsev 2014年

奖励:如果要使〜键起作用,还应该设置iso_layout = 0。我的hid_apple.conf看起来像这样:options hid_apple fnmode = 2 iso_layout = 0
Thales Ceolin

5

这里

我们如何交换Fn键的功能?

首先编辑/etc/modprobe.d/options

须藤nano /etc/modprobe.d/options

并确保它有线

选项隐藏pb_fnmode = 2

然后保存并退出。最后,我们需要更新ramfs:

须藤更新initramfs -u -v -k uname -r

然后重新启动!


1

这在Fedora 24上对我有用

  1. 创建一个新文件以供SystemD启动。

    gedit /usr/lib/systemd/system/mac-keyboard.service

    确保文件包含以下内容

    [Unit]
     Description=mac-keyboard
    [Service]
     Type=oneshot
     ExecStart=/bin/sh -c "echo 2 > /sys/module/hid_apple/parameters/fnmode"
     ExecStop=/bin/sh -c "echo 1 > /sys/module/hid_apple/parameters/fnmode"
     RemainAfterExit=yes
    [Install]
     WantedBy=multi-user.target
    
  2. 重新加载SystemD以读取新文件

    systemctl --system daemon-reload

  3. 启动SystemD服务。

    systemctl start mac-keyboard.service

  4. 启用服务以在启动时启动。

    systemctl enable mac-keyboard.service

参考:https : //www.dalemacartney.com/2013/06/14/changing-the-default-function-key-behaviour-in-fedora/


0
sudo add-apt-repository ppa:daniel.pavel/solaar
sudo apt-get update
sudo apt-get install solaar
solaar

使用Mac键盘,您将获得一个单选按钮 toggle fn

http://i.stack.imgur.com/9omc6.png

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.