我正在尝试使用 Gnome 中涉及超级键的快捷方式。我可以成功添加它们,如下图所示:
我的超级键已通过
setxkbmap -option "caps:hyper"
从大写锁定重新映射。
Hyper 在 Emacs 等环境中可以正常工作。 (当我按 Caps-Lock-A 时,Emacs 会说
H-a is undefined
。)
但是当我按下 Caps-Lock-A 时,快捷方式并未执行。 (例如,在终端中,它只需插入字母
a
。)
如何在 Gnome 快捷方式中支持 hyper?(或者以另一种方式涉及大写锁定的快捷方式,但不重新映射到 super,因为我想要单独的 super 和大写锁定快捷方式。)
我找到了一个针对我自己的超级键问题的解决方案,也许这个解决方案也适合您(如果您使用的是 Xorg。我猜该解决方案不适用于 Wayland...):
首先,我在调整程序中将 Caps 映射到 Hyper:
但是当我在 Gnome 设置中添加快捷方式时,该快捷方式被识别为 Super 而不是 Hyper。问题似乎是 Super 和 Hyper 都映射到 xmodmap 中的 mod4:
$ xmodmap -pm
xmodmap: up to 5 keys per modifier, (keycodes in parentheses):
shift Shift_L (0x32), Shift_R (0x3e)
lock
control Control_L (0x25), Control_R (0x69)
mod1 Alt_L (0x40), Meta_L (0xcd)
mod2 Num_Lock (0x4d)
mod3
mod4 Hyper_L (0x42), Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf)
mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)
此命令将 Hyper_L 移动到 mod3:
$ xmodmap -e "remove mod4 = Hyper_L" -e "add mod3 = Hyper_L"
使用以下内容创建
$HOME/.config/autostart/xmodmap.desktop
以在启动时运行此 xmodmap 命令:
[Desktop Entry]
Name=Xmodmap
Exec=xmodmap -e "remove mod4 = Hyper_L" -e "add mod3 = Hyper_L"
Terminal=false
Type=Application
现在 Hyper 在键盘快捷键设置中可以正确识别,并且快捷键可以正常工作。
在 Wayland 上,您可以通过创建包含以下内容的
.config/xkb/symbols/capslock
来实现此目的:
xkb_symbols "hyper" {
key <CAPS> { [ Hyper_L ] };
modifier_map Mod3 { <CAPS> };
};
我如何在 Ubuntu 24.04 上将左侧控制映射到 Wayland 中的 hyper:
使用调整应用程序设置键盘选项,在 ctrl 位置下选中“caps lock as ctrl,ctrl as hyper”。
如果您愿意,可以使用命令在终端中确认
dconf read /org/gnome/desktop/input-sources/xkb-options
应该打印
['ctrl:hyper_capscontrol']
将此选项的 mod4 更改为 mod3。
上述设置将使 /usr/share/X11/xkb/symbols/ctrl 将左控制设置为 hyper 和 mod 4。如果您创建文件 ~/.config/xkb/symbols/ctrl 将加载该文件而不是系统一。
因此,我从前者复制到后者,将Mod4更改为Mod3:
// Make the left Ctrl key a left Hyper,
// and the CapsLock key a left Control.
partial modifier_keys
xkb_symbols "hyper_capscontrol" {
replace key <CAPS> { [ Control_L ], type[group1] = "ONE_LEVEL" };
replace key <LCTL> { [ Hyper_L ] };
modifier_map Control { <CAPS> };
modifier_map Mod3 { <LCTL> };
};
将其存储为
~/.config/xkb/symbols/ctrl
。现在注销并重新登录,它应该可以正常工作。