在 Gnome 快捷键中使用 `hyper` 键

问题描述 投票:0回答:3

我正在尝试使用 Gnome 中涉及超级键的快捷方式。我可以成功添加它们,如下图所示: enter image description here

我的超级键已通过

setxkbmap -option "caps:hyper"
从大写锁定重新映射。

Hyper 在 Emacs 等环境中可以正常工作。 (当我按 Caps-Lock-A 时,Emacs 会说

H-a is undefined
。)

但是当我按下 Caps-Lock-A 时,快捷方式并未执行。 (例如,在终端中,它只需插入字母

a
。)

如何在 Gnome 快捷方式中支持 hyper?(或者以另一种方式涉及大写锁定的快捷方式,但不重新映射到 super,因为我想要单独的 super 和大写锁定快捷方式。)

keyboard-shortcuts gnome gnome-shell
3个回答
3
投票

我找到了一个针对我自己的超级键问题的解决方案,也许这个解决方案也适合您(如果您使用的是 Xorg。我猜该解决方案不适用于 Wayland...):

首先,我在调整程序中将 Caps 映射到 Hyper:

enter image description here

但是当我在 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 在键盘快捷键设置中可以正确识别,并且快捷键可以正常工作。


3
投票

在 Wayland 上,您可以通过创建包含以下内容的

.config/xkb/symbols/capslock
来实现此目的:

xkb_symbols "hyper" {
    key <CAPS> { [ Hyper_L ] };
    modifier_map Mod3 { <CAPS> };
};

0
投票

我如何在 Ubuntu 24.04 上将左侧控制映射到 Wayland 中的 hyper:

步骤1

使用调整应用程序设置键盘选项,在 ctrl 位置下选中“caps lock as ctrl,ctrl as hyper”。

如果您愿意,可以使用命令在终端中确认

dconf read /org/gnome/desktop/input-sources/xkb-options

应该打印

['ctrl:hyper_capscontrol']

步骤2

将此选项的 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
。现在注销并重新登录,它应该可以正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.