適当に翻訳する。
XFilterEvent は、入力メソッドのために X イベントのフィルタ処理を行うものである。
XFilterEvent の実際の動作は、条件に合う限りの個数だけ、登録してある XFilterEventProc 型の関数を呼び出すというものである。
実行される関数の登録作業を行っているコードは、次のファイルの中にある。
X11R7.7/lib/libX11-1.5.0/modules/im/ximcp/imLcIc.c
X11R7.7/lib/libX11-1.5.0/modules/im/ximcp/imRm.c
X11R7.7/lib/libX11-1.5.0/modules/im/ximcp/imInsClbk.c
X11R7.7/lib/libX11-1.5.0/modules/im/ximcp/imTrX.c
X11R7.7/lib/libX11-1.5.0/modules/im/ximcp/imDefFlt.c
登録には _XRegisterFilterByType 関数もしくは _XRegisterFilterByMask 関数を使う。
登録されている関数(実際に True や False を返す関数)の定義は、次のファイルの中にある。
「_XimLocalFilter」・・・X11R7.7/lib/libX11-1.5.0/modules/im/ximcp/imLcFlt.c
「_XimFilterPropertyNotify」・・・X11R7.7/lib/libX11-1.5.0/modules/im/ximcp/imInsClbk.c
「_XimXFilterWaitEvent」・・・/lib/libX11-1.5.0/modules/im/ximcp/imTrX.c
True・False の実際の判定作業は「_XimFilterWaitEvent」・・・X11R7.7/lib/libX11-1.5.0/modules/im/ximcp/imTransR.c に任せる。
「_XimFilterKeypress」・・・X11R7.7/lib/libX11-1.5.0/modules/im/ximcp/imDefFlt.c
実際の判定作業は同ファイル内の「_XimProtoKeypressFilter」に任せる。
「_XimFilterKeyrelease」・・・X11R7.7/lib/libX11-1.5.0/modules/im/ximcp/imDefFlt.c
実際の判定作業は同ファイル内の「_XimProtoKeyreleaseFilter」に任せる。
「_XimFilterServerDestroy」・・・X11R7.7/lib/libX11-1.5.0/modules/im/ximcp/imDefFlt.c
「_XimThaiFilter」・・・X11R7.7/lib/libX11-1.5.0/modules/im/ximcp/imThaiFlt.c
「_XimTransFilterWaitEvent」・・・X11R7.7/lib/libX11-1.5.0/modules/im/ximcp/imTrans.c
実際の判定作業は、「_XimFilterWaitEvent」・・・X11R7.7/lib/libX11-1.5.0/modules/im/ximcp/imTransR.c に任せる。
----------
X 環境で IM サーバを実装するには、IMdkit を使う。
0 から自分でコードを書く必要は無い。
IMdkit の API は、「IM Server Developers Kit - C Language Interface(日本語訳)」にある。
ai56go 氏の「XIM(X Input Method)日本語入力の流れ」が参考になる。
Google等の企業ではDesign Doc(設計趣旨)というものを使っているらしい。
20年前のX11 Xineramaの開発でも似たようなものが使われていた。
「Design Document for the Xinerama Extension to the X Window System」という題名だが、これは設計書ではなく、設計の思想・経緯などを書いたものであった。
新しい協業の手法として紹介されるものの中には、X11 関連の開発ですでに採用されていたものがあったりする。
カレンダー
カテゴリー
最新コメント
最新記事
ブログ内検索
広告