[Canna-dev 360] romaji-yuusen & Nfer key

Back to archive index

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 の場合、無変換を入力した時点で、問題なく「ん」が確定されます。

							井汲 景太




Canna-dev メーリングリストの案内
Back to archive index