리눅스 키보드 설정
저는 현재 그램에서 아치리눅스 + GNOME3 (On X11)를 사용 중이고, IME로는 fcitx를 사용 중입니다. CapsLock이 두 글자씩 적용되는 버그와 한영전환이 제대로 되지 않는 버그를 해결한 방법을 서술하고자 합니다.
CapsLock 버그 수정
CapsLock이 빠르게 전환 시에 두 글자씩 쳐지는 버그는 xkb_symbols 를 수정해서 해결했는데, 원래는 따로 파일을 만들고 하려고 했으나, 귀찮아서 그냥 /usr/share/X11/xkb/symbols/kr
파일을 수정했습니다.
xkb_symbols "kr106"
안에 다음과 같은 내용을 추가해뒀습니다.
replace key <CAPS> {
repeat=no,
type[group1]="ALPHABETIC",
symbols[group1]=[ Caps_Lock, Caps_Lock ],
actions[group1]=[ LockMods(modifiers=Lock), Private(type=3,data[0]=1,data[1]=3,data[2]=3) ]
};
한영키 / 한자키 수정
한영키와 한자키도 비슷한 방법으로 수정했습니다. 사실 그램이라서 101/104키 호환으로 했었어야 했는데 (이미 한자키 / 한글키 수정이 적용돼있음) 그걸 모르고 바보같이 kr106
을 수정했습니다.
replace key <RCTL> { [ Hangul_Hanja ] };
replace key <RALT> {
type[group1]="ONE_LEVEL",
symbols[group1]=[ Hangul ]
};
그리고 setxkbmap -layout "kr(kr106)"
으로 레이아웃을 설정하고, fcitx 설정과 그놈 설정에서 기본 키맵을 한국어로 바꿔두었습니다.
그 후에 fcitx의 전역 설정에서 입력기 전환을 Hangul
로 하시면 해결됩니다.
그럼에도...
그런데 이렇게 설정하고도 xev
명령어로 테스트 해보니 여전히 한글키가 ISO_Level3_Shift
로 잡혔습니다. 그래서 xkbcomp -xkb $DISPLAY "my-file-name"
을 한 후에 xmodmap -e 'keycode 108 = Hangul'
을 실행하고 (임시로 RALT를 한글키로 잡히게 함) 또 xkbcomp
를 실행해서 둘을 비교해보았습니다.
제가 아무리 <RALT>
의 type[group1]
을 Hangul
로 바꿔도 계속 ISO_Level3_Shift
로 잡히는 것을 확인하고, 또한 xkb_symbols
가 pc+kr+kr(kr106):2+inet(evdev)+level3(ralt_switch)
로 잡히는 것도 확인했습니다. 이 후 구글링 한 결과 한 스택오버플로우 글에서 해결책을 찾았습니다.
TL;DR) dconf-editor
를 실행해서 xkb-options
를 검색한 후에 lv3:alt_switch
를 제거해주시면 해결됩니다.
드디어 한글이 제대로 나오네요...