前提

  • 操作系统: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