OSのすべてが正しい/意図されたレイアウトを報告しているように見えますが、キーボードレイアウトが正しくありません。たとえば、åäöは[';

OSのすべてが正しい/意図されたレイアウトを報告しているように見えますが、キーボードレイアウトが正しくありません。たとえば、åäöは[';

数ヶ月前、私はManjaro 21.xをインストールし(正確なバージョンは覚えていません)、Gnomeバージョンを選択しました。いつものように2つのキーボードレイアウト(USとSE)を持つようにOSを設定しましたが、生活は素晴​​らしかったです。それからGnomeが私には適していないことに気づいたとき、人生はあまり良くなりませんでした。そのため、パッケージマネージャを使用してXFCEをインストールし、以前のXFCEに戻しました。これで、Linuxを起動するたびに(またはログアウトしてから再度ログインするとき)、キーボードレイアウトは実際にはUSのようです。åäöこれは[';OSのどこでも起こります。

トラブルシューティングしようとしましたが、実際には何も見つかりませんでした。オペレーティングシステムは私が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

今すぐログアウト/ログインすると、正しいレイアウトが有効になります。

おすすめ記事