irodo****@irodo*****
irodo****@irodo*****
2005年 6月 3日 (金) 01:30:44 JST
本庄です。 # 自己レスで失礼 At Thu, 02 Jun 2005 10:57:35 +0900, irodo****@irodo***** wrote: > keyboard-coding-system の動作は、IM の on/off に従って変化するようです。 > IM が on になった時に keyboard-coding-system が直ちに sjis-mac になら > ないことの方が問題なのかもしれないですね。 と書いた手前、keyboard-coding-system が切り替わるタイミングについて調 べてみました。 share/emacs/22.0.50/lisp/term/mac-win.el にある、 mac-handle-language-change 関数が keyboard-coding-system を切り替えてい るようです。 切り替えられるタイミングは、「Emacs に modifier キー以外のキー入力が渡っ たとき」です。 インライン入力時は、Emacs にキー入力を渡していないようなので、この関数 が呼ばれず、文字化けが起こるのではないでしょうか? 解決方法を 2 通り考えてみました。 1. 適切なタイミング(IM が日本語になり、かつ入力が行われていない状態) で mac-handle-language-change を呼ぶ方法。 こちらの方がスマートだと思いますが、私の理解できる範囲内では修正不可能 でした。 2. mac-handle-language-change を呼ばないようにする方法。 これは、同じ mac-win.el にある (define-key special-event-map [language-change] 'mac-handle-language-change) 行をコメントアウトすることで実現できます。ただし、日本語以外の環境を利 用する際に影響が出るかもしれません。予期せぬ場所で mac-handle-language-change が呼ばれた場合にも影響が出ると思います。 -- Eiji Honjoh