수정중인 patch, hangul.map 파일은 아래에 있다.
/ktrans/ktrans-fix-korean.patch
/ktrans/hangul.map
9front ktrans의 한글 입력은 망가진 채 방치되어 있다. 사용 설명서의 한국어 란에는 무언가 적혀 있었다.
/man/ktrans(1):144,147
KOREAN
Mapping is done by emulating a Dubeolsik layout, with each
latin character mapping to a single Jamo. Sequences of up to
three Jamo are automatically converted to Hangul syllables.
세 자모가 모이면 자동으로 음절로 변환된다며 문제 없다는 듯이 한다. 수동으로 변환하는 방법은 없기에, 받침 없는 두 자모 음절은 입력할 수 없다. 단일 자음은 입력할 수 없지만 단일 모음은 입력할 수 있다. 자음으로 시작하면 세 자모가 모여 음절을 만들기를 기다리지만, 모음으로 시작하면 음절을 구성할 수 없기에 단일 모음이 입력된다. 음절이 소리의 단위인 건 생각해도 이런 데 쓰이는 말인 건 잊은 지 오래인데, 만드신 분께서 한글을 신경쓰신 것 같다. 한글을 쓰신 것 같지는 않다.
/lib/ktrans/hangul.map:56,58
rK 과
rH 괘
rL 괴
map 파일은 ``` hi ひ qnpfr 뷁 로마자 글자 ``` 형식 파일이다.
만드신 분께서 한글 자판을 쓰신 것 같지는 않다. 위의 hangul.map 파일처럼 쓰는 자판이 존재하는지는 몰라도, 사용 설명서의 Dubeolsik layout은 아닐 것이다. 틀림없이 떠먹여줄 사람은 없고, 숟가락을 들고 움직이는 것은 내 몫이 될 것이다.
첫 번째 필요는 map 파일이다. 지금 9front의 map 파일은 내용이 틀려서, 완성형 글자만 있어서, 어째서 저째서 쓸 수 없는 물건이다. 쓸 수 있는 파일을 만들어야 한다.
두벌식 입력 기준으로, 각 유니코드 한글 문자에 대응하는 로마자 쿼티 입력값 문자열을 만들 수 있어야 했다. 그 부산물로 /Hacks/hanguldis.go를 남겨 두고, ktrans/genmap.go를 작성해 밑바닥이 될 map 파일을 생성했다. ktrans가 map 파일을 읽는 방식의 특성 상, 자모가 많은 글자가 먼저 등장하고 자모가 적은 글자가 나중에 등장해야 한다. 방식에 맞춰주기 위해 1열 로마자의 길이 순서대로 파일을 정렬했다: cat draft.map | awk '{printf "%d%s\n", length($1), $0}' | sort -nr | sed 's/^[0-9]//' > hangul.map
다음은 한글 입력에 알맞는 lkup 기능을 새로이 구현하는 일이었다.
구현은 /ktrans/ktrans-fix-korean.patch에 있고, 설명은 여기에…: link
비록 별 게 아니라도 내 코드를 9front에서 볼 수 있길!