忍者ブログ

素人翻訳

適当に翻訳する。

【備忘録】XFilterEvent と IMdkit について。

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)日本語入力の流れ」が参考になる。

PR

Design Doc(設計趣旨)について

Google等の企業ではDesign Doc(設計趣旨)というものを使っているらしい。
20年前のX11 Xineramaの開発でも似たようなものが使われていた。

「Design Document for the Xinerama Extension to the X Window System」という題名だが、これは設計書ではなく、設計の思想・経緯などを書いたものであった。

新しい協業の手法として紹介されるものの中には、X11 関連の開発ですでに採用されていたものがあったりする。

カレンダー

12 2025/01 02
S M T W T F S
1 2 4
5 6 7 8 9 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

最新コメント

[09/07 NONAME]
[08/18 NONAME]
[05/18 NONAME]
[04/09 NONAME]
[03/21 NONAME]

最新記事

(01/10)
(01/03)
(12/20)
(12/08)
(11/20)
(10/30)
(10/24)
(09/20)
(09/16)
(09/11)
(09/03)
(09/02)
(08/27)
(08/17)
(07/31)
(07/30)
(07/19)
(07/13)
(05/02)
(03/17)
(11/01)
(07/20)
(05/17)
(04/20)
(03/10)

ブログ内検索

広告

バーコード

広告