前提
操作系统:Fedora44
桌面环境:Gnome50+Wayland
键盘:HHKB或HHKB Studio
背景
首先,我先介绍一下QWERT和HHKB键盘布局,主要关注一下Control键的位置。
HHKB键盘布局如下图所示:

https://hhkeyboard.us/blog/2020/the-mystery-behind-the-ctrl-key-and-unique-hhkb-layout
大部分笔记本内置键盘布局如下图所示:

HHKB Studio是我日常使用最频繁的键盘,主要是更喜欢Control键的位置。
但是日常使用过程中,避免不了偶尔会使用到笔记本的内置键盘,突然的切换会导致我使用起来特别痛苦。
尽管Gnome有Tweak工具可以修改Control键和CapsLock键的位置,但是每次切换起来特别麻烦,且无法针对某个键盘进行配置。
临时解决方案
在Gnome42上,我们可以通过以下命令来随时修改键盘映射:
gsettings set org.gnome.desktop.input-sources xkb-options "['ctrl:swapcaps', 'altwin:swap_lalt_lwin']"同时,我们也可以通过以下命令重置键盘映射:
gsettings set org.gnome.desktop.input-sources xkb-options "[]"注意:这种方法似乎只在Gnome42上生效。
这样就可以非常丝滑地在内置键盘和HHKB键盘之间来回切换。
终极解决方案
临时解决方案中有一个问题在于没办法单独为某个键盘设置键位,实际使用体验并不是很轻松。
不过,keyd项目可以完美解决此问题。
首先,我们可以通过熟悉的包管理器安装它,然后执行以下命令开机自启并启用:
sudo systemctl enable keyd --now启动完成之后,我们需要通过以下命令查询键盘id:
sudo keyd monitor找到对应的键盘id后,需要/etc/keyd/新增keyd配置文default.conf,配置示例如下所示:
[ids]
0001:0001:0xxxxxxxx
[main]
# 交换 CapsLock 和 左Ctrl
capslock = leftcontrol
leftcontrol = capslock
# 交换 左Alt 和 左Win (Meta/Super)
leftalt = leftmeta
leftmeta = leftalt配置完成之后,执行以下命令重载配置:
sudo keyd reload