한글 키보드와 XKB

767 views
Skip to first unread message

Changwoo Ryu

unread,
Sep 26, 2014, 9:46:27 PM9/26/14
to oss-deskt...@googlegroups.com
안녕하세요. 첫 번째로 XKB 변경에 대해 얘기해 보려고 합니다.

XKB란?
------

리눅스 배포판에 들어가는 한글 관련 사항 중에 XKB 데이터가 있습니다. 이런 게 있나 싶을 정도로 숨겨져 있고 건드릴 일이
없어서 리눅스 데스크톱 사용자 분들도 거의 모르실텐데요. 일단 손 가는대로 설명해 보겠습니다.

XKB는 X11에서 키보드를 정의하는 데이터입니다. 여러가지 종류의 키보드를 어떻게 매핑할까 처리하는 데이터이죠. 데이터에는
Model, Layout, Geometry 등이 있습니다.

- 마지막 Geometry는 그놈셸에서 "키보드 배치 보기"를 할 때 나오는 키보드 그림이 들어 있는 데이터입니다. 실제
동작과는 차이가 없어서 일단 논의에서 배제합니다.

- 다룰 부분은 Model과 Layout입니다. Model은 키보드 하드웨어 모델을 말합니다. 어떤 키가 더 있냐 없냐,
그리고 어떤 하드웨어 코드를 어떤 키코드로 매핑할지 정의합니다. 반면 Layout은 하드웨어에서 입력된 코드를 실제 어떤
입력으로 (X keysym입니다) 처리할까를 정의하는 데이터입니다.

예를 들어 미국에 사는 Dvorak 사용자는 QWERTY 사용자와 같은 model을 사용하지만 레이아웃은 "us"
레이아웃이 아닌 "us(dvorak)" 레이아웃을 사용합니다.

굉장히 복잡한 일도 많이 합니다. 유럽에서 액센트를 입력할 때 어떤 키 조합으로 어떤 액센트를 입력할지를 정의하기도 합니다.
하지만 한글 키보드의 경우에는 별로 어려운 게 없고 한/영 키와 한자 키만 처리하면 됩니다. 왜냐하면 어차피 XKB만 가지고는
한글 입력은 불가능하기 때문이죠. 영문 키 값을 받은 다음 한글로 만드는 복잡한 일은 입력기가 처리합니다. (과거에 세벌식으로
타이핑해서 한글 자모 키를 입력 받은 다음에 세벌식 직결식 글꼴을 이용해서 쓰는 방법으로 XKB만 이용한 한글 입력이 된다고
데모를 하신 적이 있지만, 실용적 의미는 없습니다.)


한국어 관련 사항
----------------

(1) model - 한국에서 팔고 있는 "한/영"과 "한자" 키가 추가된 표준 AT/PS2/USB 키보드는 별도 하드웨어니까
model로 처리해야 할까요?

- 실제로 그렇게 model로 했었습니다. "kr106"이라는 모델을 넣었었는데요. 지금은 삭제됐습니다. 수정 사항이 너무
마이너한 데다가 실제로 모델 데이터가 없어도 "한/영" 키와 "한자" 키는 입력되는데 지장이 없었거든요.

- 추가된 하드웨어는 한/영 및 한자 전용 키인데, 앞에서 말했듯이 별도로 정의하지 않아도 지장이 없어서 앞으로도 별도 한국어
키보드 model 추가는 없이 가려고 합니다.

(2) layout

- kr과 kr(kr104)라는 "variant"가 있습니다. 파생된 레이아웃을 variant라고 부릅니다. 여기서부터는
UI에서 보는 "한국어" 와 "한국어 (101/104 키 호환)"이라고 나오는 키보드입니다.

- kr은 US QWERTY 레이아웃에 한/영 키와 한자 키를 추가한 레이아웃입니다. 그런데 kr로는 설정해 봐야 변화가
없다는 걸 느끼실 겁니다. 한/영 키와 한자 키는 이미 정의되어 있기 때문에 별도로 정의하지 않아도 한/영 키와 한자 키는
입력되기 때문이죠.

- 논란이 될 수 있는 게 kr104 변종입니다. kr104는 kr 레이아웃에 오른쪽 Alt 키와 오른쪽 Ctrl 키를 각각
한/영 키와 한자 키로 바꾼 레이아웃입니다.


문제점
------

그럼 문제가 무엇이냐. kr104가 kr 레이아웃 위에서 바뀌었고 kr은 US QWERTY 위에서 바꿨기 때문에 kr104
사용은 곧 US QWERTY를 사용한다는 가정을 하기 때문에 문제가 됩니다.

영문 키보드를 Dvorak이나 Colemak으로 사용하면 kr104로 설정할 수가 없는 것이죠. Dvorak/Colemak을
포기하거나 한/영키를 포기하거나 선택을 해야 합니다. kr(dvorak), kr(kr104_dvorak),
kr(colemak), kr(kr104_colemak) 따위의 가능한 조합을 정의해야 할까요?


변경 제안
---------

이런 상황에 대처하고자 XKB의 한국어 관련 데이터를 영문 키보드 종류에 따라 유연성을 확보하는 방법으로 변경하고자 합니다.

이제 한/영 키와 한자 키는 XKB Layout option으로 만들어집니다. (option은 세세하게 키보드 레이아웃을
바꾸는 기능을 합니다. 예를 들어 많이 쓰는 option이지만 "ctrl(nocaps)"라는 옵션으로 Caps Lock 키를
Ctrl 키로 바꿉니다.)

즉 이제 독립적인 한국어 전용 레이아웃은 호환성으로 남겨두거나, UI 목적으로만 만들어 두고 옵션으로 어떤 키를 한/영 키나
한자 키로 바꿀 것인를 추가하는 방법으로 한글 키보드 환경을 만들 수 있게 됩니다.

오른쪽 alt를 한/영 키로 바꾸는 옵션을 "kr(ralt_hangul)", 오른쪽 ctrl을 한자 키로 바꾸는 옵션을
"kr(rctrl_hanja)"라고 정의한다면, kr104는
"us+kr(ralt_hangul)+kr(rctrl_hanja)"와 같이 됩니다. Dvorak 사용자는
"us(dvorak)+kr(ralt_hangul)+kr(rctrl_hanja)"와 같이 됩니다. (손으로 타이핑할 걱정할 안
해도 됩니다 ^^)

Changwoo Ryu

unread,
Sep 27, 2014, 6:02:19 PM9/27/14
to oss-deskt...@googlegroups.com
지금 다시 보니까 너무 내부적인 이야기라서 잘 감이 안 잡힐 것 같은데요.

다음과 같이, 한글 키 옵션을 추가하면 dvorak이든 유럽 키보드이든 오른쪽 alt와 ctrl이 한/영 한자 키가 된다는 이야기입니다.

http://imgur.com/8rJM2gw

일단 다음과 fdo 버그질라에 제출해 놨습니다. 번역이 필요한 패치라서 다음 버전에는 적용이 어렵겠지만요.

https://bugs.freedesktop.org/show_bug.cgi?id=84404



2014년 9월 27일 오전 10:46, Changwoo Ryu <cw...@debian.org>님이 작성:

DoHwan Kim

unread,
Sep 27, 2014, 10:55:19 PM9/27/14
to oss-deskt...@googlegroups.com
현재 제가 겪는 가장 큰 문제는, 다른 키배치로 변경하는 키를 ALT로 바꾼 후, 한영키처럼 쓰는 와중에.. 몇몇 GTK 위젯, 혹은 몇몇 사이트에서 사용하는 입력부분에서 문제가 생깁니다.
그 대체적인 특성이 라벨처럼 생겼다가 클릭하면 인풋박스로 변경되어 입력을 받는 부류인데요. 이럴 경우, alt를 누르면 입력이 취소되어 버려서 라벨상태로 돌아가버리는 특성이 있습니다.
구체적인 예는, 그놈3 에서 사용자 이름 변경하는 부분, 브라우저로 구글 독스에서 문서를 열고 그 내부에서 문자열 검색을 수행할 경우 가 있습니다.

2014년 9월 28일 일요일 오전 7시 2분 19초 UTC+9, Changwoo Ryu 님의 말:

Changwoo Ryu

unread,
Sep 28, 2014, 12:36:31 AM9/28/14
to oss-deskt...@googlegroups.com
2014년 9월 28일 오전 11:55, DoHwan Kim <bar...@gmail.com>님이 작성:
> 현재 제가 겪는 가장 큰 문제는, 다른 키배치로 변경하는 키를 ALT로 바꾼 후, 한영키처럼 쓰는 와중에.. 몇몇 GTK 위젯, 혹은
> 몇몇 사이트에서 사용하는 입력부분에서 문제가 생깁니다.
> 그 대체적인 특성이 라벨처럼 생겼다가 클릭하면 인풋박스로 변경되어 입력을 받는 부류인데요. 이럴 경우, alt를 누르면 입력이 취소되어
> 버려서 라벨상태로 돌아가버리는 특성이 있습니다.
> 구체적인 예는, 그놈3 에서 사용자 이름 변경하는 부분, 브라우저로 구글 독스에서 문서를 열고 그 내부에서 문자열 검색을 수행할 경우 가
> 있습니다.

오른쪽 Alt를 누를 때 한글 키가 아니라 그냥 "Alt"로 인식된다면 한국어 키보드 레이아웃으로 설정하지 않은 상태인데요.
이런 상태로 오른쪽 Alt를 한영전환으로 사용했을 때 문제는, Alt 키가 애초에 modifier key이기 때문에 말씀하신
것처럼 modifier 상태를 보고 동작하는 프로그램에서는 한영전환 외에 이상한 동작을 할 수 있다는 겁니다. 그래서 "키보드
설정하지 말고 그냥 오른쪽 Alt 그대로 단축키로 쓰자"라고 할 수가 없습니다.

다른 이슈와도 관련이 있습니다. 아쉽게도 지금 "kr(kr104)" 레이아웃의 오류 때문에 같은 문제가 있습니다. 그래서
"Alt + Hangul"과 같은 키가 입력이 되는 바람에 역시 modifier 상태를 보고 동작하는 프로그램에서 오동작할 수
있습니다. 이건 다음 버그이고요.

https://bugs.freedesktop.org/show_bug.cgi?id=71696

앞에서 말씀드린 한글 키 옵션 추가 패치에 위 버그에 대한 수정 사항도 포함되어 있습니다.

Changwoo Ryu

unread,
Feb 1, 2015, 3:15:30 PM2/1/15
to oss-deskt...@googlegroups.com
> https://bugs.freedesktop.org/show_bug.cgi?id=84404

1월28일자로 xkeyboard-config 2.14에 적용되었습니다.

말 많은 하모니카 리눅스가 이 패치를 미리 적용했더군요. 번역 업데이트가 없어서 XKB 옵션은 gnome-tweak-tools
따위에서 영문으로 나옵니다.

ChangSeok Oh

unread,
Feb 2, 2015, 3:08:10 AM2/2/15
to oss-deskt...@googlegroups.com
수고하셨습니다. =)

ChangSeok

2015년 2월 2일 오전 5:15, Changwoo Ryu <cw...@debian.org>님이 작성:

--
Google 그룹스 'oss-desktop-korean' 그룹에 가입했으므로 본 메일이 전송되었습니다.
이 그룹에서 탈퇴하고 더 이상 이메일을 받지 않으려면 oss-desktop-kor...@googlegroups.com에 이메일을 보내세요.
이 그룹에 게시하려면 oss-deskt...@googlegroups.com(으)로 이메일을 보내세요.
웹에서 이 토론을 보려면 https://groups.google.com/d/msgid/oss-desktop-korean/CAEe2ifVZjW9Dd4jMjZZbJJoA4T8gczhdF4RMeuhRFWUSdhkM3g%40mail.gmail.com 을(를) 방문하세요.
더 많은 옵션을 보려면 https://groups.google.com/d/optout을(를) 방문하세요.

Sunjin Yang

unread,
Feb 2, 2015, 5:59:36 AM2/2/15
to oss-deskt...@googlegroups.com
엊그제 아치 리눅스에도 패키지가 업데이트되어서 http://imgur.com/8rJM2gw 설정처럼 해보니 ibus 한글 입력기에서도 잘 되네요.

수고하셨습니다. :)

--
Sunjin Yang

2015년 2월 2일 오후 2:47, ChangSeok Oh <chan...@gnome.org>님이 작성:

--
이 메일은 Google 그룹스 'oss-desktop-korean' 그룹에 가입한 분들에게 전송되는 메시지입니다.

이 그룹에서 탈퇴하고 더 이상 이메일을 받지 않으려면 oss-desktop-kor...@googlegroups.com에 이메일을 보내세요.
이 그룹에 게시하려면 oss-deskt...@googlegroups.com에 이메일을 보내세요.
웹에서 이 토론을 보려면 https://groups.google.com/d/msgid/oss-desktop-korean/CAJa2qc495X9xhw4QgjONi6g%2BCKvgSyoxXVYU5e0cO7m0rzQdQA%40mail.gmail.com을(를) 방문하세요.

Changwoo Ryu

unread,
Feb 4, 2016, 10:38:09 PM2/4/16
to oss-deskt...@googlegroups.com
2014년 9월 27일 오전 10:46, Changwoo Ryu <cw...@debian.org>님이 작성:
> XKB는 X11에서 키보드를 정의하는 데이터입니다.

이제 슬슬 wayland를 사용한 데스크톱이 쓸만해 지고 있는데요. 페도라에서는 버전 24부터 기본으로 한다는 얘기도 있습니다.

그러면 XKB는 X11과 함께 사라지는 것이냐? 하면 그렇지는 않습니다. wayland에서도 그대로 사용합니다.

동일한 데이터를 사용하고 중립적인 xkbcommon 라이브러리를 사용해서 구현되어 있습니다. http://xkbcommon.org/
Reply all
Reply to author
Forward
0 new messages