Ikumi Keita
ikumi****@ikumi*****
2007年 8月 1日 (水) 23:04:25 JST
かんなで、ちょっと奇妙な動作を見つけました。kinput2 では発生しないので、 jrKanjiString にのみ関係する問題ではないかと思います。 【 概要 】 ある条件で、文字列「ん」が未確定状態のまま、何を入力しても状態が変化し なくなる。 【 詳細 】 canna client がかんな/emacs であるとき、以下の条件が重なると、以降 libcanna がキー入力を処理してくれなくなる。 (1) romaji-yuusen が t である (2) 通常のローマ字かな変換テーブルを使っていて、ローマ字かな変換の状態が 「n」が未確定のときに、 (3) 「無変換」キーの入力が libcanna に伝えられる(jrKanjiString の第2引 数に、CANNA_KEY_Nfer が与えられる) 「キー入力を処理してくれなくなる」というのは、具体的には、「ん」が未確 定文字となったままになる。Enter や C-g を入力しても効かず、それら以外の キーも何を入力しても状態が変化しない。例外として、直後にもう一度「無変換」 キーを入力した場合のみ、「ん」が普通に確定して正常な状態に戻る。 未確定文字列は、(3)の時点で「n」から「ん」に変化する。 (2) で、「n」以外が未確定文字列のときは、この問題は発生しない。 標準の emcws では、無変換キーを入力してもそれが libcannna に渡ることは ないので、問題は発覚しません。現象を再現するには、かんなを有効にして作っ た emcws で、以下の elisp を評価してみてください。 (progn (canna-key-proc ?n) ; 「n」を入力 (canna-key-proc canna-key-nfer) ; 「無変換」キーを入力 (canna-key-proc ?a) ; 「a」を入力(何でもよい) (message "確定:%s 未確定:%s" canna-kakutei-string canna-henkan-string)) 結果は、確定文字列が空文字列で、未確定文字列が「ん」となります。その状態 になった後、 (canna-key-proc ?b) (引数は何でもよい) や (canna-do-function canna-func-kakutei) (canna-func-quit でも同じ) を何度か評価してみても (message "確定:%s 未確定:%s" canna-kakutei-string canna-henkan-string) の返す結果は変わりません。 この状態では以降日本語入力ができなくなるので、M-x canna-reset で libcanna の状態をリセットしてください(この操作は有効です)。 なお、もし始めに、 (progn (canna-key-proc ?n) ; 「n」を入力 (canna-key-proc canna-key-nfer) ; 「無変換」キーを入力 (canna-key-proc canna-key-nfer) ; 続けて「無変換」キーを入力 (message "確定:%s 未確定:%s" canna-kakutei-string canna-henkan-string)) を評価していれば、特に問題なく「ん」が確定します。 実験には、以下の2行からなる .canna を使いました。 (load "/usr/local/canna/share/canna/default.canna") (setq romaji-yuusen t) かんなのバージョンは 3.7p3, 3.8devel2 のどちらでも変わりません。emacs のバージョンは、emacs21+emcws20031213, emacs22+emcws200706010358 のどち らでも同じになります。 kinput2 の場合、無変換を入力した時点で、問題なく「ん」が確定されます。 井汲 景太