Linux 配置 Apple Magic Keyboard

Published on Feb 06, 2021

因为疫情原因,最近都是在家办公。在家用的一直都是自己的笔记本(荣耀 MagicBook), 笔记本用的时间也蛮久了,感觉 Ctrl 键按着有点不太对劲,为防本子上的键盘真的坏掉, 吓的我赶紧拿出闲置很久的苹果蓝牙键盘给它接上。

我用的 Manjaro 系统,桌面环境 Xfce ,蓝牙 GUI 管理器 Blueman

配对和连接

因为都是图形界面操作,蓝牙设备的配对和连接倒没什么好说的。 提一点就是,一定要先配对(pair),再连接(connect)。 我一开始就是没有配对,直接连接了,而且还连接成功了。 出现的问题就是,键盘时而工作,时而不工作,甚至会把系统卡住完全无响应。反正就是一团浆糊。

当然如果你想,也可以在终端使用 bluetoothctl 进行配对和连接的操作。 具体命令参考 Arch Wiki 即可。

设置开机自启

只需要修改蓝牙的配置文件 /etc/bluetooth/main.conf ,在 [Policy] 部分找到或添加 AutoEnable=true 即可.

修改键位

重要的来了,苹果键盘的键位和我本子上键盘的键位布局是有一点差异的。 主要是 Ctrl, Fn, Win(Command), Alt 四个键位。 苹果键盘的键位顺序是 Fn, Ctrl, Alt, Command 。 键位不改的话,在两个键盘上切换的时候,因为肌肉记忆,特别容易按错。

要调整苹果键盘跟本子上的键盘键位一致,要做的就是将 FnCtrl 键位互换, AltCommand 键位互换。

根据 Arch Wiki 描述,要实现这种键位互换,可以使用 hid_apple 模块配置选项。 但是官方的 hid_apple 模块仅支持 Alt 和 Command 互换,为了实现 Fn 和 Ctrl 的互换,还需要重新安装 hid-apple-patched 补丁包。 根据该补丁包文档描述,我直接使用的 Arch 三方包 hid-apple-patched-git-dkms 。 不过该包目前已经没人维护了,该包原作者 2021-01-10 说自己已经不在 Macbook Pro 上使用 archlinux 了。 有同学介意的话,也可以自己编译安装。 要注意的就是,hid_apple 属于内核模块,自己编译安装之后,需要重新创建内核镜像。

sudo mkinitcpio -P

安装好 hid-apple 补丁包之后,将配置文件 /usr/lib/modprobe.d/hid_apple.conf 复制到 /etc/modprobe.d/hid_apple.conf 。 然后按需修改配置项:

# Enable PC-like layout by default.
# To override, copy this file to /etc/modprobe.d/hid_apple.conf and make
# desired changes. Note that /etc/modprobe.d/hid_apple.conf will completely
# replace this file, and the content is NOT merged.
#
# Option reference: https://github.com/free5lot/hid-apple-patched#configuration
options hid_apple fnmode=1
options hid_apple swap_fn_leftctrl=1
options hid_apple swap_opt_cmd=1
options hid_apple rightalt_as_rightctrl=1
options hid_apple ejectcd_as_delete=1

配置文件修改之后也要重新创建内核镜像。 然后重新加载 hid_apple 模块。

sudo modprobe -r hid_apple
sudo modprobe hid_apple

至此,苹果键盘改键完成。 再也不用担心切换键盘时犯错了。