소개

한 글자를 입력할 때 키를 한 번만 누르면 되는 로마자나 키릴 문자 등과 달리, 한글은 낱자를 조합하여 한 음절자를 만들기 때문에 입력 과정이 복잡합니다. 중간 조합 상태가 존재하며, 순차적으로 들어온 입력을 각각 낱자에 대응시키고, 낱자들을 한 글자로 조합하고, 음절의 경계를 구분하는 로직이 필요합니다.

타닥은 한글 입력기의 사용자화를 위해 날개셋 한글 입력기의 작동 원리를 사용하였습니다. 아래 그림은 타닥의 내부 처리 과정을 간단히 나타낸 것입니다.

로드 중...

입력 프로세서(날개셋의 ‘입력 스키마에 대응’)는 사용자가 문자 입력을 위해 한 동작(하드웨어 키보드의 키 누름/뗌, 소프트웨어 키보드의 화면 터치/뗌 동작)을 감지하고, 이를 어떤 동작 코드로 변환할지를 결정합니다. 이 동작 코드는 출력 프로세서로 전달됩니다.

출력 프로세서(날개셋의 ‘문자 생성기에 대응’)는 입력 프로세서에서 전달받은 동작 코드를 어떻게 실행할지 결정합니다. 동일한 낱자가 연속으로 입력되면 어떤 낱자로 결합할지, 음절 결합은 어떻게 할지, 음절 경계의 구분은 어떻게 판단할지 등을 결정합니다.

동작 코드(날개셋의 ‘날개셋문자’에 대응)는 입력기가 수행할 동작을 나타냅니다. 일반 문자 입력, 한글 낱자 입력, 특수 동작, 상태 변경 등이 있습니다.

일반 문자 입력
전달된 문자를 별도 처리 없이 바로 입력합니다. UTF-16 인코딩 기준 3글자까지 동시에 입력하는 다중 문자도 존재합니다.
두벌식 한글
두벌식 방식으로 처리되는 한글 낱자입니다. 상황에 따라 종성은 다음 글자의 초성으로 넘어갈 수 있습니다. 여러 낱자를 동시에 입력할 수도 있습니다.
세벌식 한글
세벌식 방식으로 처리되는 한글 낱자입니다. 종성 입력 직후 중성이 입력되더라도 초성으로 바뀌지 않습니다. 여러 낱자를 동시에 입력할 수도 있습니다.
특수 동작
한글 조합과 관련하여 수행할 수 있는 특수한 동작들입니다. 특정 성분 삭제, 낱자 단위 삭제, 초·종성 변환, 조합 종료, 종성 넘기기, 변환 수행 등이 있습니다.
상태 변경
한글 조합 관련 내부 상태를 변경합니다.
키 입력 전달
날개셋 한글 입력기와의 호환을 위해 존재하는 동작입니다. 타닥에서는 입력된 키 코드에 대응하는 문자를 입력하는 것 외의 동작은 하지 않습니다.