如何使用 setxkbmap (永久)设置键盘映射?它给出了一个错误

如何使用 setxkbmap (永久)设置键盘映射?它给出了一个错误

我正在深入研究自定义键盘映射。基本上,我只想用 Ctrl_L 切换 Alt_L,用 Ctrl_R 切换 Alt_R(有点像 MacBook 上的 Command)。在文件中/usr/share/X11/xkb/symbols/ctrl已经有一个 Alt_L 与 Ctrl_L 交换的定义(因此添加相反一侧的定义应该是小菜一碟),称为swap_lalt_lctl。但是,当我输入以下内容时:

setxkbmap -layout us -option ctrl:swap_lalt_lctl

在终端中,我收到以下错误:

Error loading new keyboard description

我已经花了几个小时在谷歌上搜索并尝试不同的方法来解决问题,例如:sudo、清除缓存、重新启动、在命令中明确说明机器信息,但似乎没有任何效果。奇怪的是,它setxkbmap -layout us工作得很好,而且setxkbmap与其他选项一起似乎也有效。看来它只影响ctrl:选项。

如果有人可以帮助我,建议一些解决方案,我将非常感激。

哦,并lsb_release -a给出:

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 22.04.1 LTS
Release:    22.04
Codename:   jammy

在不深入研究 xkb 的情况下,我得到的最接近的是在 Gnome-Tweaks 工具中设置“Ctrl 映射到 Alt,Alt 映射到 Win”选项。

答案1

如果我没记错的话,要永久保留更改,Xorg就必须使用/etc/X11/xorg.conf.d/配置文件对其进行配置。对于键盘配置,该10-keyboard.conf文件是必需的:

Section "InputClass"
        Identifier "system-keyboard"
        MatchIsKeyboard "on"
        Option "XkbLayout"  "es"
        Option "XkbModel"   "pc104"
        Option "XkbVariant" "deadtilde,dvorak"
        Option "XkbOptions" "grp:alt_shift_toggle"
EndSection

就我而言,我使用西班牙语配置,但在您的情况下,它可能会根据需要而有所不同。

相关内容