[Macemacsjp-users 234] Re: Inline patch (2004/12/29)

Back to archive index

HASHIMOTO Taiichi taiic****@cl*****
2005年 2月 5日 (土) 10:15:56 JST


はしもとです.


>> あまり,実装としてはよくないと思っているので,次のリリース時には,何もバインド
>> されていないようにしようと思っています.
>
> よろしくお願いします。
>
> 漢字入力モードのままで、read only buffer (たとえば mew の一覧表示) に移ると
> Command-SPACE で漢字入力をオフにできないのも同じ原因でしょうか?

それは,全く別の問題です.というか,仕様です.


通常のアプリケーションでは,キーの入力はOS側で処理され,適当な文字列にし,
アプリケーションに文字列が渡されます.アプリケーションは,渡された文字列を
表示するだけです.

Emacsの場合,自分でキーイベントを発生させて,自分自身で処理を行います.
おかげで高度なショートカットやIMを実装できるのですが,Windows,MacOS,XIM等の
外部のIMを利用して入力を行おうと思った場合,外部のIMとEmacsの間でキーイベント
の同期をとらなければなりません.


結果からいうと,read only buffer では,IM にキーを渡していません.

なぜなら,IMにキーを渡してしまった場合,Emacsでは入力されていないにも関わらず,
IMでは,入力ができたように振る舞ってしまい.アプリケーションとIMの間で,うまく
同期できなくなってしまうためです.本当は,IMでの処理をキャンセルすることができ
れば,IMに入力を渡しても良いのですが,どうもそんなAPIは存在しないようです.

他にも,いくつかの場面で,強制的にキーをIMに渡さないようにしています.
例えば,Mewのパスワード入力時とか.


しかし,Emacsは,自分でキーイベントを処理することを前提に開発が進められてきた
ため,外部のIMを利用すると,入力が非常に困難だったり,期待した動作をしないこ
とがよくあります.個人的には,IM は外部で扱う方が良いように思うのですが,OSに
よって処理しなければならないことが違うので,統一的なAPIを実現するのは困難なよ
うです.

しかし,オープンソースなアプリケーションですから,頑張ればそのうちなんとかなる
でしょう.

- taiichi




Macemacsjp-users メーリングリストの案内
Back to archive index