우분투의 한영, 한자 키 의 키코드가 어떻게 됩니까? xmodmap 에서 정해주는 걸로 아는 데 이게 두가지 버전이 있는 거 같습니다. 자세히 말해 121 = Hangul_Hanja 인지 123 = Hangul_Hanja 인지가 궁금합니다.
현재 제 환경은 윈도우 Vista x32 Home edition + VMWare 6.5 위에 Ubuntu 8.10을 깐 상태입니다. 키보드는 윈도우키, 메뉴키, 한글 한자 키 등이 다 달린 한글 106키, PS/2 방식의 키보드 입니다. 모델은 i-rocks KR-6220. 저가 제품 중 가장 널리 쓰이는 평범하고 보편적인 제품이죠.
처음 우분투 8.10을 설치하고 나서는 키보드 설정을 "Generic/일반 105키 (국제 버전) PC"로 하고 키배치를 "대한민국 101/104 키 호환"으로 하니까 한글 입력은 되는데 문제는 일반 한/영키나 한자 키는 전혀 안먹히고 그옆에 있는 오른쪽 ALT키가 한영키로, 오른쪽 Control키가 한자 키로 먹히는 겁니다.
그래서 xev 로 keycode 를 알아내려고 하니 한영키/한자키 모드 아무런 반응이 없더군요. 그 키를 눌러도 xev에 아무 반응이 없는 겁니다. 그래서 윈도우에서 다른 프로그램으로 스캔코드를 체크해보니 한영키는 0xf2, 한자키는 0xf1 이 나오더군요. 일반적인 한글 PS/2 키보드의 스캔코드이죠.
/usr/share/xmodmap/xmodmap.kr 을 보니
…
! KS 103(106) Keyboard on South Korea have two toggle keys
! in addition to us-101(us-104) keys.
! Hangul_Hanja : toggle between Korean alphabet and Chinease alphabet
! Hangul : toggle between Korean alphabet and English alphabet
keycode 121 = Hangul_Hanja
keycode 122 = Hangul
…
이라고 되어 있어서 다음 라인을 /etc/rc.local에 추가 하고 리붓 했습니다.
setkeycodes f2 122 # 한영키
setkeycodes f1 121 # 한자키
이렇게 하니 이제 한영/한자 키 자는 인식하는데 여전히 오른쪽 ALT도 한영키로 동작하더군요. 즉 한영키, 한자키가 각각 2개씩으로 늘어난 셈이죠.
그래서 키보드 설정을 "Generic/한글 106키"로 하고 키배치를 "대한민국"으로 바꾸니 이젠 오른쪽 ALT키, 오른쪽 Control 키는 원래 대로 각각 ALT키, 컨트롤 키로 먹히는 군요. 한영키도 제대로 되고… SCIM 도 정상으로 동작하고…
그런데 문제는 이렇게 하니 한자 키가 먹지를 않습니다. 한자키를 치면 ‘,’ 글자가 입력됩니다. 그래서 xev를 뛰우고 한자키를 쳐보니 KP_Separator 어쩌구 하며 전혀 엉뚱한 키 이름이 나오는 겁니다.
그래서 고민을 하고 웹을 뒤지다가
setkeycodes f2 122 # 한영키
setkeycodes f1 123 # 한자키 <— 121 이 123 으로 바뀌었음.
으로 해야한다는 글을 보았습니다. 그래서 그렇게 해보니 한자키가 제대로 먹히는 군요. 문제가 해결된 거죠.
그런데 제가 궁금한건 이 setkeycodes f1 123 의 123이 어디서 나온거냐는 거죠. 분명히 /usr/share/xmodmap/xmodmap.kr 에는 " keycode 121 = Hangul_Hanja "라고 되어 있는데 어째서 123 이 Hangul_Hanja로 매핑되냐는 겁니다.
제 Home directory를 뒤져봐도 .Xmodmaprc 등의 xmodmap 사용자 설정 파일 따위는 없는데 말이지요. 그러면 Xmodmap이 /usr/share/xmodmap/xmodmap.kr을 config 파일로 사용하고 있지 않다는 말인데 그럼 어느 파일을 현재의 system wide xmapmap 파일로 사용하는지 어디서 keycode 123 = Hangul_Hanja 로 되어 있는지 궁금합니다.
grep Hanja /usr/share/xmodmap/* 를 해봐도 xmodmap.kr: keycode 121 = Hangul_Hanja 밖에 나오지 않습니다. 도대체 123 은 어디서 나온겁니까?