我正在使用 Archlinux。当我编程时,我喜欢交换 Escape 和 Caps Lock。
我知道 gnome 可以做这个工作。但是 Archlinux 中的 Gnome 3.6.2 找不到它。
所以我使用 xmodmap 并创建一个文件:~/.xmodmap
clear Lock
keysym Caps_Lock = Escape
keysym Escape = Caps_Lock
add Lock = Caps_Lock
当我跑步时:
xmodmap ~/.xmodmap
它运作良好。
但是当我登录 gnome 时它无法自动工作,即使我添加xmodmap ~/.xmodmap
了~/.xprofile
。
我做错什么了吗?我该如何解决这个问题?
答案1
避免使用 xmodmap,因为它是另一个必须运行的守护进程。除非触碰其他键,否则更简单且仍然是 Xorg 上游setxkbmap
,可以在extra/xorg-setxkbmap
包中找到。
看类似的问题了解如何在启动 GNOME 时自动启动它,但请使用选项caps:swapescape
。例如,如果您使用startx
和~/.xinitrc
,请将以下内容添加到其中:
setxkbmap -option caps:swapescape
答案2
您应该创建的文件~/.Xmodmap
以大写 X 开头。根据您使用的登录管理器(gdm、xdm 等...),应该~/.Xmodmap
会自动加载,如果没有发生这种情况,正如您的问题所显示的那样,您可以编辑~/.xsession
和~/.xinitrc
文件并添加以下行以强制加载您的~/.Xmodmap
:
[ -f ~/.Xmodmap ] && xmodmap ~/.Xmodmap
答案3
我认为你应该创建一个有名称的文件~/.Xmodmap
(注意大 X)。正如我在/etc/gdm/Xsession
gdm中看到的~/.Xmodmap
,如果它存在,它会加载,所以你不需要~/.xprofile
或类似的 hack :)
答案4
先前的解决方案在 X11 下运行。
Wayland 上的 GNOME
如果您在 Wayland 上有 GNOME,您可以使用这个来将 Esc 与 Caps Lock 键互换:
gsettings set org.gnome.desktop.input-sources xkb-options "['caps:swapescape']"
Wayland 上的 Plasma
如果您在 Wayland 上拥有 Plasma (KDE),请进入系统设置 -> 输入设备 -> 键盘 -> 高级,在第二个“Caps Lock 行为”项中勾选“交换 Esc 和 Caps Lock”。
这已在 Plasma 5.27 上测试过。