. 한글의 입력

대한민국의 한글이라는 문자는 알파벳과는 비교가 되지 않을 만큼 복잡한 체계를 가지고 있다. 초성, 중성, 종성이 모여야 하나의 완성된 음절을 이루며 가능한 조합이 있고 그렇지 않은 조합도 있다. 같은 낱글자도 어떤 문자와 조합되는가에 따라 모양이 달라지는데 가, , , , 괙 같은 글자들을 보면 기역의 모양이 얼마나 다양한지 알 수 있다. 그래서 문자가 조립되는 중에 모양을 수시로 바꿔야 한다. 우리나라 글이니 따로 설명하지 않아도 알파벳보다는 훨씬 더 복잡하고 어렵다는 것은 너무나도 잘 알 것이다.

그나마 한글은 좀 쉬운 편에 속한다. 일본어나 중국어는 잘 모르기 때문에 정확한 비교를 하기는 어렵지만 적어도 한글보다는 훨씬 더 복잡한 것으로 알고 있다. 한글은 모아쓰기를 할 뿐이지 풀어서 쓰면 결국 알파벳과 유사하고 낱글자의 수가 많지 않지만 한자를 입력하려면 고도의 숙련이 필요할 것이다. 우리나라 글은 한자가 옵션이지만 일본어는 한자가 없으면 글이 안될 정도이기 때문에 역시 한글보다는 훨씬 더 입력하기 까다롭다.

이런 복잡한 문자의 조립과정을 응용 프로그램이 직접 해야 한다면 정말 끔찍한 일일 것이다. 실제로 도스 시절에는 한글 오토마타(문자 조립기)를 직접 만들어서 사용했었고 나도 만들어본 적이 있는데 꽤나 어렵다. 다행히 윈도우즈에는 한글 입력을 도와주는 장치가 있는데 이 장치를 IME(Input Method Editor)라고 한다. IME는 문자들의 조립규칙을 알고 있으며 미리 정해진 복잡한 규칙에 따라 입력된 키를 해석하여 문자들을 조립한다. 다음은 한글 오토마타의 동작 예이다.

현재까지 입력된 문자와 새로 입력된 문자를 보고 철저한 조립규칙에 따라 문자를 만들어 나간다. IME는 현재 문자와 어떤 문자가 결합될 수 있는지에 대한 정보를 가지고 있는데, 예를 들어 모음 ㅗ와 모음 ㅏ를 합치면 ㅘ가 되고 모음 ㅛ와 모음 ㅣ는 결합할 수 없다. 자음도 마찬가지로 ㄻ, ㄼ 등은 가능하지만 ㄹ과 ㄷ은 결합되지 않는다. 또한 한글에는 해당되지 않지만 한자의 경우 입력된 음으로부터 후보 문자목록을 보여주고 선택만 하면 문자를 만들어주기도 한다.

IME를 프로그래밍하면 문자의 조립과정에 개입할 수 있고 조립방법을 다르게 바꿀 수도 있다. IME는 주로 한국, 중국, 일본 등 동양 3국을 위해 존재하는데 여기서는 한글에 대해서만 중점적으로 알아본다. 국제적인 소프트웨어를 만들기 위해서는 일본어 IME나 중국어 IME도 알아야겠지만 필자가 일본어와 중국어를 잘 모르니 한글밖에 다룰 수가 없다.