![即使操作系统中的所有内容似乎都报告了正确/想要的布局,键盘布局也是错误的 - 例如 åäö 变成了 [';](https://linux22.com/image/14911/%E5%8D%B3%E4%BD%BF%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E4%B8%AD%E7%9A%84%E6%89%80%E6%9C%89%E5%86%85%E5%AE%B9%E4%BC%BC%E4%B9%8E%E9%83%BD%E6%8A%A5%E5%91%8A%E4%BA%86%E6%AD%A3%E7%A1%AE%2F%E6%83%B3%E8%A6%81%E7%9A%84%E5%B8%83%E5%B1%80%EF%BC%8C%E9%94%AE%E7%9B%98%E5%B8%83%E5%B1%80%E4%B9%9F%E6%98%AF%E9%94%99%E8%AF%AF%E7%9A%84%20-%20%E4%BE%8B%E5%A6%82%20%C3%A5%C3%A4%C3%B6%20%E5%8F%98%E6%88%90%E4%BA%86%20%5B'%3B.png)
几个月前我安装了 Manjaro 21.x(不记得确切的版本)并选择了 Gnome 风格。像往常一样,我将操作系统设置为具有两种键盘布局(美国和SE),生活很棒。然后,当我意识到 Gnome 不适合我时,生活变得不那么美好了。因此,我只需使用包管理器安装 XFCE 即可切换回旧的 XFCE。现在,每当我启动 Linux(或注销并再次登录)时,我的键盘布局实际上似乎是 US,因为每次我写åäö
它都会变成[';
.这种情况发生在操作系统的任何地方。
我尝试对其进行故障排除,但实际上什么也没发现。看来操作系统真的相信我使用 SE 布局。例如,XFCE 中的布局切换器显示 SE:
有趣命令的一些输出(无论我是否遇到问题或解决它,它们都是相同的):
➜ cat /etc/vconsole.conf
KEYMAP=sv-latin1
FONT=
FONT_MAP=
➜ localectl status
System Locale: LANG=en_US.utf8
LC_TIME=sv_SE.utf8
LC_COLLATE=C
VC Keymap: sv-latin1
X11 Layout: se,us
X11 Variant: ,
➜ setxkbmap -print -verbose 10
Setting verbose level to 10
locale is C
Trying to load rules file ./rules/evdev...
Trying to load rules file /usr/share/X11/xkb/rules/evdev...
Success.
Applied rules from evdev:
rules: evdev
model: pc105
layout: se,us
variant: ,
options: grp:win_space_toggle,terminate:ctrl_alt_bksp
Trying to build keymap using the following components:
keycodes: evdev+aliases(qwerty)
types: complete
compat: complete
symbols: pc+se+us:2+inet(evdev)+group(win_space_toggle)+terminate(ctrl_alt_bksp)
geometry: pc(pc105)
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+se+us:2+inet(evdev)+group(win_space_toggle)+terminate(ctrl_alt_bksp)" };
xkb_geometry { include "pc(pc105)" };
};
➜ cat /etc/X11/xorg.conf.d/00-keyboard.conf
# Written by systemd-localed(8), read by systemd-localed and Xorg. It's
# probably wise not to edit this file manually. Use localectl(1) to
# instruct systemd-localed to update it.
Section "InputClass"
Identifier "system-keyboard"
MatchIsKeyboard "on"
Option "XkbLayout" "se,us"
Option "XkbVariant" ","
EndSection
系统信息:
➜ cat /etc/os-release
NAME="Manjaro Linux"
ID=manjaro
ID_LIKE=arch
BUILD_ID=rolling
PRETTY_NAME="Manjaro Linux"
ANSI_COLOR="32;1;24;144;200"
HOME_URL="https://manjaro.org/"
DOCUMENTATION_URL="https://wiki.manjaro.org/"
SUPPORT_URL="https://manjaro.org/"
BUG_REPORT_URL="https://bugs.manjaro.org/"
LOGO=manjarolinux
➜ gnome-shell --version
GNOME Shell 3.38.4
➜ xfce4-about --version
xfce4-about 4.16.0 (Xfce 4.16)
要解决此问题,我所要做的就是通过单击上面屏幕截图中的 SE 或使用我分配的键盘快捷键来更改布局。完成此操作后,布局切换器仍然显示“SE”,我猜这是预料之中的。而且,åäö
现在成为了预期的åäö
。
答案1
克莱因瓶4的答案帮助我找到了解决方案。
长话短说:我创建了~/.Xkbmap
我想要的布局并将其添加se
到其内容中。
在浏览了~/.xinit
从他们的答案中建议的文件中读取的文件后,我开始稍微了解了这个结构。但我花了一段时间,在绝望地尝试运行find /etc -type f -exec grep -Hn setxkbmap {} \;
并查看结果之后:
/etc/lightdm/Xsession:27: setxkbmap `cat "$file"`
/etc/gdm/Xsession:133: setxkbmap `cat "$sysxkbmap"`
/etc/gdm/Xsession:138: setxkbmap `cat "$userxkbmap"`
/etc/gdm/Xsession:149: setxkbmap -symbols "$xkbsymbols"
/etc/gdm/Init/Default:71:SETXKBMAP=`gdmwhich setxkbmap`
我发现可能应该设置键盘布局,~/.Xkbmap
因为查找结果中的两个 Xsession 文件都引用了该文件。
从/etc/gdm/Xsession
我们有:
userxkbmap="$HOME/.Xkbmap"
...
# merge in keymaps
if [ -f "$userxkbmap" ]; then
setxkbmap `cat "$userxkbmap"`
XKB_IN_USE=yes
fi
我们/etc/lightdm/Xsession
有:
# Load keymaps
for file in "/etc/X11/Xkbmap" "$HOME/.Xkbmap"; do
if [ -f "$file" ]; then
echo "Loading keymap: $file"
setxkbmap `cat "$file"`
XKB_IN_USE=yes
fi
done
现在,当我注销/登录时,我会启用正确的布局。
答案2
添加。setxkbmap <layout>
~/.xinitrc