Apple 键盘 fn 不适用于蓝牙,但适用于 USB

Apple 键盘 fn 不适用于蓝牙,但适用于 USB

Apple Magic Keyboard(无线)无法正常工作,Fn 键不起作用,F1-F12 默认没有媒体键,而它们应该有。

以下方法不能解决问题: echo 2 | sudo tee /sys/module/hid_apple/parameters/fnmode

我发现 USB 和蓝牙使用的驱动程序不一样,事实确实如此:

  • USB 用途:usbhid
  • 蓝牙用途:hid-generic

我偶然发现这个驱动程序仓库 hid-apple这似乎解决了我遇到的问题。但它是 2011 年的,我不确定它是否能解决问题,因为我已经在运行它了:

$ lsmod | grep hid_apple
hid_apple  16384  0
hid        122880  7 
hidp,usbhid,hid_apple,hid_generic,hid_logitech_dj,hid_logitech_hidpp

因此看来蓝牙应该使用hid_appleusbhid驱动程序?

如果是这样: 如何配置蓝牙键盘使用的驱动程序?

我还发现了以下错误,该错误似乎已经修复。 https://bugzilla.kernel.org/show_bug.cgi?id=99881#c41

我正在使用带内核的 Ubuntu 18.044.17.0-rc4。我使用这个内核是因为它是唯一一个能让我的 Realtek 8822be 蓝牙/Wi-Fi 芯片运行的内核。

答案1

我的 Apple 蓝牙键盘型号 A1644 上的按键fn可以调低屏幕亮度(键符为 XF86MonBrightnessDown)。我感兴趣的是使用Ctrl+PageDownCtrl+更改 Firefox 中的选项卡PageUp,这需要使用fn向上/向下箭头(PageUp/ PageDown)。解决方案(受到这次交流的启发) 是更改fn为修饰键(ShiftAltGrShift+ AltGr),然后为向上/向下箭头设置相应的键符。我使用 xev 找出的键码fn是 232(向上和向下箭头分别为 111 和 116)。如链接中所述,等号后的第一个键符(字符或功能键名称)是与裸键相对应的键符,然后是与带有 的键相对应的键符Shift,然后是AltGr,最后是带有Shift+ 的AltGr键。然后我使用以下内容进行映射和设置修饰符:

xmodmap -e 'keycode 232 = Mode_switch'
xmodmap -e 'keycode 111 = Up Up Prior'
xmodmap -e 'keycode 116 = Down Down Next'

除了向上(111)和向下(116)箭头外,您还可以使用F1- F12

答案2

Linux 内核 5.6 已修复此问题。还有一个第三方模块隐藏苹果补丁其中包括修复并允许更多选项来交换密钥,并且可以安装在任何内核上。

答案3

按照上述类似的步骤这里,我将我的 Ubuntu 内核升级到 5.6.3(5.6 存在 wifi 连接问题),现在我的键盘可以顺利运行。

上述链接中提到的步骤如下(针对升级到5.6.3):

  • 根据您的操作系统类型,依次下载并安装软件包:

    1. linux-headers-5.6.3-xxxxxx_all.deb
    2. linux-headers-5.6.3-xxx-generic(/lowlatency)_xxx_amd64.deb
    3. linux-modules-5.6.3-xxx-generic(/lowlatency)_xxx_amd64.deb
    4. linux-image-xxx-5.6.3-xxx-generic(/lowlatency)_xxx_amd64.deb

选择通用的建立一个共同的系统,低延迟对于低延迟系统(例如录制音频),amd64对于 64 位系统,或臂丛arm64等适用于其他操作系统类型。


或者,您可以通过终端命令(通过 Ctrl+Alt+T 打开终端)下载并安装内核二进制文件:

对于 64 位操作系统:

cd /tmp/

wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.6.3/linux-headers-5.6.3-050603_5.6.3-050603.202004080837_all.deb

wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.6.3/linux-headers-5.6.3-050603-generic_5.6.3-050603.202004080837_amd64.deb

wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.6.3/linux-image-unsigned-5.6.3-050603-generic_5.6.3-050603.202004080837_amd64.deb

wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.6.3/linux-modules-5.6.3-050603-generic_5.6.3-050603.202004080837_amd64.deb

sudo dpkg -i *.deb

我用了签署我的内核,因为它在启动时抱怨签名无效(由于激活了安全启动)。ubuntu 博客中提到了类似且更详细的模块签名说明在这里。

相关内容