2014年5月23日金曜日

アルファベットで入力

ハングル文字やキリル文字など、普通の日本語キーボードから入力しにくい文字があります。
そのような文字と一対一に対応したアルファベットや記号のシーケンスを利用して、入力できるようにしたら便利そうです。
そこで、アルファベットの文字列と入力したい文字をTAB区切りで並べたテキストファイルを読み込んで、それを参照して入力できるスクリプトをpythonとwxPythonを用いて書いてみました。ハングル文字は、unicode上で規則的に並んでいるようです。それを出力するスクリプトもpythonで書いて読み込むファイルを作成しました。



アルファベットの並びと文字の対応ファイルは選択できるようにしたので、ほかの文字セットの入力にも使えそうです。 シンプルなスクリプトですが、使いどころがありそうです。アルファベットで入力するような方法は、そのままのIMEを使って、特別なキー配列を覚える必要もないのがよいですよね。

アルファベットとハングル文字の対応ファイルは次のpython(2.7)スクリプトを実行して、出力をファイルにリダイレクトするとほぼ完成です。

STARTCHAR = ('g', 'kk', 'n', 'd', 'tt', 
             'r', 'm', 'b', 'pp', 's', 
             'ss', '', 'j', 'jj', 'ch', 
             'k', 't', 'p', 'h')

MIDCHAR = ('a', 'ae', 'ya', 'yae', 'eo', 
           'e', 'yeo', 'ye', 'o', 'wa', 
           'wae', 'oe', 'yo', 'u', 'wo', 
           'we', 'wi', 'yu', 'eu', 'ui', 
           'i')

PCHAR = ('', 'g', 'kk', 'gs', 'n', 
         'nj', 'nh', 'd', 'l', 'lg', 
         'lm', 'lb', 'ls', 'lt', 'lp', 
         'lh', 'm', 'b', 'bs', 's', 
         'ss', 'ng', 'j', 'ch', 'k', 
         't', 'p', 'h')

c = 0
for s in STARTCHAR:
    for m in MIDCHAR:
        for p in PCHAR:
            seq = s+m+p
            code = 0xAC00 + c
            uni_line = "%s\t%s" % (seq, unichr(code))
            utf8_line = uni_line.encode('utf-8')
            print utf8_line
            c = c+1