다. 한글 오토마타 만들기

가상 키보드에서는 한글을 입력할 수 있게 한글 오토마타가 필요합니다. 이번에는 한글 오토마타 라이브러리를 만들어 봅시다.

한글을 입력할 대상 컨트롤에 포커스를 유지하는 방식으로 보조기술을 만들면 키보드 이벤트로 처리할 수 있지만 한글을 입력시키기 위해 포커스를 잠시 변경하면 원하는 한글 입력을 할 수 없습니다. 예를 들어 ‘ㅁ’, ‘ㅏ’ 순으로 키를 누르면 ‘마’로 바뀌길 원하지만 ‘ㅁ ㅏ’로 바뀝니다.

여기에서는 이러한 문제를 해결하기 위해 한글 오토마타를 만들어 볼게요.

완성형 한글 코드는 초성과 중성과 중성의 각 코드값을 다음의 식으로 환산합니다.

한글 코드 값 = 초성*중성개수*종성 개수+중성 *종성개수+종성+BASE 코드(0xAC00)

초성은 모두 19자로 0부터 18의 값을 ㄱ,ㄲ,ㄴ,ㄷ,ㄸ,ㄹ,ㅁ,ㅂ,ㅃ,ㅅ,ㅆ,ㅇ,ㅈ,ㅉ,ㅊ,ㅋ,ㅌ,ㅍ,ㅎ 순으로 결정하였습니다. 중성은 모두 21자로 0부터 20까지 값을 부여하였습니다. 중성은 ㅏ,ㅐ,ㅑ,ㅒ,ㅓ,ㅔ,ㅕ,ㅖ,ㅗ,ㅘ,ㅙ,ㅚ,ㅛ,ㅜ,ㅝ,ㅞ,ㅟ,ㅠ,ㅡ,ㅢ,ㅣ순입니다. 종성은 27자인데 받침이 없는 것까지 코드를 부여하고 있어서 0~27까지 값을 부여하였습니다. 종성은 받침 없음,ㄱ,ㄲ,ㄳ,ㄴ,ㄵ,ㄶ,ㄷ,ㄹ,ㄺ,ㄻ,ㄼ,ㄽ,ㅀ,ㅁ,ㅂ,ㅄ,ㅅ,ㅆ,ㅇ,ㅈ,ㅊ,ㅋ,ㅌ,ㅍ,ㅎ 순입니다.

예를 들어 한글의 첫 글자인 ‘가’ 는 0*21*28+0*28+0+0xAC00 이므로 BASE 코드 값이 됩니다. 그리고 초성의 시작점인 ‘ㄱ’은 0x1100이며 중성의 시작점인 ‘ㅏ’는 0x1161입니다.