OS의 모든 것이 올바른/의도된 레이아웃을 보고하는 것처럼 보이지만 키보드 레이아웃이 잘못되었습니다. 예를 들어 åäö는 [';

OS의 모든 것이 올바른/의도된 레이아웃을 보고하는 것처럼 보이지만 키보드 레이아웃이 잘못되었습니다. 예를 들어 åäö는 [';

몇 달 전에 저는 Manjaro 21.x를 설치했고(정확한 버전은 기억나지 않습니다) Gnome 버전을 선택했습니다. 평소와 같이 두 가지 키보드 레이아웃(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

이제 로그아웃/로그인하면 올바른 레이아웃이 활성화됩니다.

답변2

에 추가하세요.setxkbmap <layout>~/.xinitrc

관련 정보