키보드에 한영키가 따로 없고, 오른쪽 alt키에 통합이 되어 있다.
키 맵핑을 해주지 않으면 한글로 변환을 할 수가 없다.. 물론 shift + space 로 사용하거나 다른 키로 설정해서 사용할 수 있겠지만
슈퍼키(리눅스에서 윈도우 키같은거) 와 다른 키 조합으로 구성해야는 걸로 알고 있다.
그래서 xmodmap로 사용했었는데 문제가 계속 키 맵핑이 초기화되는 문제가 발생!
이를 해결하는 방법을 알아보자~
CentOS 8, (리눅스이면 거의 다 될 것 같음.)
나름 기계식 키보드를 사용하다보니~ 한글키가 없다.. 원가절감(?)에 의해서
오른쪽 ALT키가 한/영 변환키가 되어 있는데..
흠.. 리눅스에서는 이거를 바꿔주려면 xmodmap 명령어로 키를 바꿔줄 수가 있다.
물론 .bashrc 파일에 xmodmap 을 실행하도록 해주면 재부팅할 때마다 잘 된다.
(자세한 설명은 생략 ^^; 새로운 키 맵핑을 해 줄 것이라서)
CentOS 8 와 Ubuntu 18.04 , 20 에서도 잘 되는 것 확인
그래서 잘 사용하고 있었는데.. 어느 순간부터 키 맴핑한것이 풀리기 시작..
웹 브라우저나, 아니면 vscode 등이나.. 여하튼 어느 프로그램이든..
대개 오른쪽 alt키를 누르게 되면 상단 메뉴를 선택할 수 있게 되는데;;
이게 자꾸 실행이 되어서 엄청 짜증 발생;;; 😡
계속 이런일이 발생하다보니.. 로그아웃을 하거나, 5분 이상 자리를 비워 절전모드가 된 경우에 다시 로그인을 할 경우에 키 맵핑이 초기화가 되는 것을 발견;
이래저래 하다가 결국 해결책 발견!! 😙
그래서 해결책은 바로 endev 파일을 수정해주면 된다!
파일을 열어준 후에 sudo 로 (vi / vim 편집기로 열어준다)
sudo vim /usr/share/X11/xkb/keycodes/evdev
먼저 <RALT> = 108; 을 찾아야 한다. 먼저 / (슬래쉬) 누른 후 RALT 를 누른 후에 엔터 (대소문자 구별함에 주의)를 누르자
단어에 하이라이트가 될 것이다.
<RALT> = 108이 아니면 n을 누르자 그러면 RALT 매치 되는 다음 단어를 보여준다.
찾았으면..
i 를 눌러서 INSERT 모드로 수정을 해주는데 간단하게 주석처리만 해주면 된다.
앞에 // (슬래쉬) 2개 추가
//<RALT> = 108;
ESC를 눌러서 편집모드에 빠져나온다음에 다시 / 를 누르고
이번에는 HNGL을 찾는다
엔터를 누르면 하이라이트가 되어서 찾아졌다면 다시 i를 눌러서
//<HNGL> = 130; // Hangul Latin toggle //주석처리 할 것
<HNGL> = 108; //추가
ESC를 눌러서 편집모드에서 나온 후에
: (콜론)을 누르고 wq 입력한 후에 엔터치고 빠져나온다
이제 재부팅을 하면 끝
-참고로 .bashrc 에서 사용했던 키맵핑했던 것은 지움, 부팅시 xmodmap 을 실행 안해도 잘 된다
$init 6
그냥.. (삽질)의 기록들...
xmodmap으로 키 맵핑을 했던 것을 다시 GUI 상의 login 할 때 되게 할려고
~/.bashrc 를 실행하게 할려고 ~/.profile 도 만들어 보고 ~/.bash_profile 에서
설정도 변경해 보았지만 다 소용없었다.
.bashrc 관련해서 그나마 공부를 해보고 나름 사용도 해봤기 때문에 조금 알고 있다고 생각했는데..
역시 뭔가 실전으로 배우니 효과가 훨씬 좋고 기억에 오래남을 것 같다...
.bashrc 자체는 터미널 non-login일 때 실행이 되는 파일이므로 셸 즉, 터미널만 키면 실행이 된다.
즉 기존 터미널이 있으면 그냥 새로운 탭 클릭 또는 새로운 창을 열어서
새로운 터미널 세션만 열어만 주면 바로 한글 alt키 기능으로 바뀐다.
터미널 열면 == .bashrc가 실행이 된다는 것
하지만 Graphical login 을 하게되면 또 소용이 없는 현상.. ;;
X window, X11 display server로 GUI를 사용하는 거 같은데..
그리고
.bash_profile 은 login 일 때 사용이 되어진다.
예를 들어서 ssh로 로그인을 한다던가..
터미널로 유저 로그인을 해야하는 경우에는 .bash_profile 이 실행이 되는 것..
bash 쉘만 사용이 된다고 한다.
이것도 역시 GUI 환경으로 로그인을 할 때는 소용이 없었다...
"터미널은 필수로 사용하기에 항상 기본으로 열려있기는 하지만 이번 경우는 관계가 없는 듯 했다"
또 .profile 같은 경우에는 다른 셸에서도 대부분 실행이 된다고 해서
혹시나 했지만 역시나 .. 안됨
/etc/X11/xinit/xinitrc , xinitrc-common 파일을 수정해보라는 글도 있었지만 다 소용없음 ㅋㅋ
결국
/usr/share/X11/xkb/keycodes/evdev 파일을 수정해주니~
바로 해결되었다!!! 🤪
절전모드에 다시 로그인을 해도 잘 되고, 로그아웃 후 로그인도 잘 된다~ 굿~!!
참고:
X11은 the X Window System을 말하며, X11 프로토콜을 가능하게 해주는 라이브러리가 포함되어 폰트, 키보드 레이아웃의 연관이 되어 있고, 현재는 X.Org Foundation에서 유지되고 있다. X11은 오브젝트, 윈도우나 기본적인 버튼, 메뉴, 텍스트 표시 등을 만들 수 있게 도와준다고 함. 대부분의 X11 은 GUI 환경을 가지고 있음.
대충 알아봤는데,, 잘 모르겠다.. ㅋㅋㅋㅋ, wayland도 있고,
GNOME, KDE 등의 데스크탑 환경이 있는데..
어쨌든 X.org가 문제가 좀 많다고 하는 것 같은데.. 아 잘 모르겠다..
다음에 기회가 되면 좀 더 알아보는 걸로..