<날개셋> 한글 입력기가 받아들이는 입력 단위는 여러 종류가 있다.

가장 먼저, 딱히 내부적인 메카니즘 없이 유니코드 문자를 있는 그대로 받아들이는 '일반 문자'가 있어서 심지어 한글 자모도 그냥 일반 문자처럼 입력시킬 수 있다.
오토마타를 거쳐 조합되는 한글은 입력 단위 차원에서 세벌식과 두벌식으로 종류가 나뉘어 있다. 그래서 한 글자판 안에 세벌식 자모 글쇠와 두벌식 자모 글쇠가 따로 존재할 수 있다.

이 외에 한글 입력기 내부의 상태를 다양하게 바꾸는 특수글쇠가 존재하며, Bksp라든가 한자 키는 그런 특수글쇠의 일종으로 처리된다. 다만 Bksp는 한자 키와는 달리, 한글 입력기가 처리할 때도 있고 그렇지 않고 응용 프로그램이 자체적으로 처리할 때도 있기 때문에, 키 위치를 한글 입력기가 마음대로 옮길 수 없다는 차이가 존재한다.

<날개셋> 한글 입력기는 흠좀무스럽게도 여러 자모를 한꺼번에 배당해서 중성과 종성을 한번에 입력한다든가, 심지어 지금 글자의 종성과 다음 글자의 초성을 한번에 입력할 수 있으며, 숫자 키패드처럼 '000'(UTF16 기준 최대 6바이트) 같은 문자열을 한 글쇠에 배당할 수도 있다. 이건 지난 5.65버전부터 가능해졌는데, 예전에는 그런 두세 글자를 한꺼번에 입력하려면 "<날개셋> 고급 입력기"의 사용자 정의 조합을 써야만 했었다.

이렇듯, 이 프로그램은 내부 구조가 대인배스러우며, 사용자 정의 가능성의 폭이 매우 크다.
그런데 '상태 전이'는 도대체 뭘 하는 놈일까?
이건 나름 무려 <날개셋> 한글 입력기 3.0 시절부터 있었던 기능이다. (2004년.. 그 엄청난 옛날!)
얘는 이름으로부터 알 수 있듯이, 오토마타의 내부 상태 번호를 지정된 코드값으로 바꿔 준다.

보통 오토마타 상태는 한글 자모를 입력하면서 그 입력값에 따라서 바뀌는 법인데,
그렇게 하지 않고 오토마타 상태만 바꿈으로써 그 이후의 한글 입력기의 동작 방식을 바꾸는 일종의 특수글쇠와 비슷한 효과를 낸다.
상태 전이 글쇠는 한글을 조합하고 있는 중에만 사용할 수 있으며, 0번 상태로 가게 해서 조합을 중단시키게 할 수도 없다. 다시 말해 상태 전이는 언제나 nonzero끼리만 가능하다.

가령, 평소에는 이어치기 방식으로 한글을 입력하다가 어쩌다가 가끔 모아치기나 무한 낱자 수정 같은 걸 일시적으로 쓰고 싶을 때, 두 방식의 오토마타를 모두 설계해 놓은 뒤 두 상태를 전환하는 기능을 배당하면 된다.
그 메카니즘은 다음과 같다.

초-중-종성 순서대로 들어온 입력만 허용하는 이어치기 오토마타는 다음과 같다. 수식을 해석하여 표로 나타낸 것이다.

현상태 비고
0 1 2 3  
1 1 2 3
2 0 2 3 중, 초중
3 0 0 3 중, 중종, 초중종, 초종

그 반면, 모아치기 오토마타는 다음과 같다.

현상태 비고
0 1 2 2  
1 1 3 3
2 3 2 2 중, 종, 중종
3 0 3 3 초중, 초중종, 초종

결국, 이어치기든 모아치기든 처음에 초성만 입력되었을 때는 공통으로 1번 상태이지만, 2번과 3번 상태는 각 성분이 입력된 상태가 서로 다를 수 있다.

두 오토마타를 합쳐야 하기 때문에, 서로 공유하는 한글 상태별로 오토마타 상태를 더 늘리도록 하겠다. 즉,

이어치기: 초 / 중,초중 / 종,중종,초중종,초종
모아치기: 초 / 중,종,중종 / 초중,초중종,초종

이었으니까 이들의 공통분모는

초 / 중 / 초중 / 종,중종 / 초중종,초종

으로 더욱 세분화할 수 있다. 중-중종과 초중종-초종만이 모아치기와 이어치기 모두에서 한 묶음으로 따라다니기 때문이다.
이렇게 상태 수만 늘린 채 모아치기 오토마타를 재구성하면 다음과 같다.

현상태 비고
0 1 2 4  
1 1 3 5
2 3 2 4
3 0 3 5 초중
4 5 4 4 종, 중종
5 0 5 5 초중종, 초종

그리고 동일한 상태에 따라 이어치기 오토마타를 expand하되, 1~5라는 상태 번호에다가 10을 더하여 11~15를 만들면 다음과 같다.

현상태 비고
0 11 12 14  
11 11 13 15
12 0 12 14
13 0 13 15 초중
14 0 0 14 종, 중종
15 0 0 15 초중종, 초종

이 오토마타들을 한데 집어넣어 주면 이렇게 된다.

0 → A ? 1 : B ? 2 : C ? 4 : 0
1 → A ? 1 : B ? 3 : C ? 5 : 0
2 → A ? 3 : B ? 2 : C ? 4 : 0
3 → B ? 3 : C ? 5 : 0
4 → A ? 5 : B|C ? 4 : 0
5 → B|C ? 5 : 0
11 → A ? 11 : B ? 13 : 15
12 → B ? 12 : C ? 14 : 0
13 → B ? 13 : C ? 15 : 0
14 → C ? 14 : 0
15 → C ? 15 : 0

그리고 적당한 글쇠에다가 다음 수식을 넣어 준다.

C1|T+(T>=10 ? -10 : 10)

C1은 '상태 전이'를 나타내는 접두사이다. T는 오토마타 상태 번호를 나타내는데, 이게 10보다 큰 상태이면 10을 빼 주고, 그렇지 않으면 10을 더한다. 따라서 1 ↔ 11, 13 ↔ 3 같은 오토마타 상태를 왔다갔다 할 수 있다. 초성과 중성만 입력된 상태의 모아치기 상태(3) 혹은 이어치기 상태(13)처럼 말이다.

지금까지 설명한 것처럼 오토마타를 짜면, 기본적으로 모아치기가 시작하는데 상태 전이를 해 주면 이어치기가 되게 할 수 있다.
그러나 0번 상태에 대한 수식을 A ? 1 : B ? 2 : C ? 4 : 0 대신, A ? 11 : B ? 12 : C ? 14 : 0 로 지정해서 이어치기 상태로 먼저 가게 하면, 기본적으로 이어치기인데 상태 전이를 해 주면 잠깐 모아치기가 되게 할 수도 있다.

즉, ㅏ를 입력했는데 평소 같으면 초성 ㄱ을 누르면 ㅏㄱ가 따로 갈라져 버릴 것이다. 이때 상태 전이 키를 잠시 누르면, 그 상태에서 '아'나 '악'을 어느 순서대로든 입력할 수 있는 상태가 된다. 상태 전이 기능은 바로 이런 식으로 활용할 수가 있다. 글자판을 바꿀 때와는 달리, 한글 조합 상태가 그대로 유지된다!

오랜만에 <날개셋> 한글 입력기의 레어템 테크닉에 대한 글을 썼는데 전달이 잘 됐으려나 모르겠다.
주어진 유한한 요소만 고침으로써 컴퓨터에서 한글을 내가 원하는 어떤 창의적인 형태로든 다룰 수 있게 하고, 그 과정에서 세벌식 글자판의 우수성을 부각시키는 것이 이 프로그램의 개발 목적이다.

IME도 개발돼 있긴 하지만 <날개셋> 한글 입력기의 대표 프로그램은 역시 편집기라는 전용 프로그램이다. 그야말로 윈도우 95 스타일의 기본 GUI를 그대로 답습하고 있는 소박한 프로그램이지만 이 작은 에디터가 본인에게는 마치 내 정신의 고향 같다. ^^;;

Posted by 사무엘

2011/09/21 08:28 2011/09/21 08:28
Response
No Trackback , 4 Comments
RSS :
http://moogi.new21.org/tc/rss/response/572

Trackback URL : http://moogi.new21.org/tc/trackback/572

Comments List

  1. 특백 2011/09/23 21:55 # M/D Reply Permalink

    흠.. 오토마타 같은 경우 아직 C언어스러운 날개셋 수식과 더불어 손을 못 대 봤습니다.
    뭔가 재미있는 게 나올 수도 있을 것 같은데(네벌식이라든지)

    1. 사무엘 2011/09/23 23:38 # M/D Permalink

      이런 매니악한 글에 댓글을 달 분은 아무래도 특백 님 같은 분밖에 없을 거라고 생각했는데, 드디어 댓글을 남겨 주셨군요. ^^;;

      글쇠배열과 낱자 결합 규칙뿐만이 아니라 오토마타를 알아야 한글 입력기의 동작 방식을 완전히 마스터할 수 있습니다.
      글쇠배열이나 오토마타나 동일한 C언어 문법 수식이니 어려울 게 없습니다.
      시간이 나면 연구 많이 해 보세요. ^^

    2. 특백 2011/09/24 11:46 # M/D Permalink

      실제 동작하게 구현해 봐야 어떻게 돌아가는지 알겠는데요.
      참고로 글쇠배열에서 상태 전이 등을 사용할 수 있다는 건 처음 알았습니다.

      시간나면 가상 낱자 말고 진짜 오토마타 사용해서 네벌식이나 만들어 봐야겠네요. 근데 시간이 안 나서 문제. ㅜㅜ

  2. 특백 2011/09/25 21:26 # M/D Reply Permalink

    아, T가 오토마타 번호였군요. (그걸 인제 처음 알다니)

Leave a comment
« Previous : 1 : ... 1711 : 1712 : 1713 : 1714 : 1715 : 1716 : 1717 : 1718 : 1719 : ... 2204 : Next »

블로그 이미지

그런즉 이제 애호박, 단호박, 늙은호박 이 셋은 항상 있으나, 그 중에 제일은 늙은호박이니라.

- 사무엘

Archives

Authors

  1. 사무엘

Calendar

«   2024/11   »
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

Site Stats

Total hits:
2982861
Today:
598
Yesterday:
1381