Abiwordをコンパイルしてみた。なんの事は無い、ただインライン入力(on the spot)がもしかしたら出来るのではないか?と確かめてみたかっただけ。Webから色々な情報を集めて判断したところ、Abiwordではpreedit(未確定文字の表示)部分をInputMethod側で行う様な仕様になっている為、これがうまく出来ていないのではないかと思われる。
preeditの部分はInputMethod側、アプリソフト側どちらかで行う必要があり、大抵の場合アプリソフト側で行われているものらしい。又、現状のInputMethodで、これを行う事が出来る物は、ほとんど存在しないらしい。(唯一SCIM-Bridge?)AbiwordはInputMethodで出来ない事やれと言う仕様なので、結果うまく表示出来ない物と思われる。
UIMの開発陣はAbiwordのこんな状況に気がついているみたいだが、InputMethod側からアプリ側に通告するのも変だし、逆にInputMethod側の仕事だろうと言われかねないので静観しているのだろうか?WindowsのMS-IMEでも同じ状況だと思われるので、ここはAbiword側でやるようにすれば良いだろうと思うが、開発メンバーの中にInputMethodの状況を理解している者がいるとは思えない。でもきちんと出来るアプリソフトも存在するのだが....
とりあえず一部ソースを変更して動作確認した。試したのは少しバージョンが古い2.6.8、大した意味は無いが、新しい物は必要な物が増えてたりしてエラーが出やすいと思われた為。
abiword-2.6.8/src/sf/xap/unix/xap_UnixFramelmpl.cppの1627行目にあるFALSEをTRUEにしてコンパイルしてみた。他は何も触っていない。
テストなので動けばいいと思いconfigureは以下のとおり適当。(だったと思う。)
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-printing --enable-threads --disable-gucharmap --disable-scripting
GNOME Documentation Library よりGtkIMContextの部分を一部抜粋。
http://library.gnome.org/devel/gtk/stable/GtkIMContext.html
結果。
一応インライン入力出来る様になった。ただし、未確定の部分がどこなのか、下線等で表示されないので判断しづらい。これはAnthyの設定で未確定部分を下線から反転にしても変わり無い。変換候補もランダムな位置に表示されるが、これは他のアプリでもある事なので我慢といった所か?。おそらくSCIM-Bridgeと同程度の入力が出来る物と思われる。入力時の画面のちらつきがSCIM-Bridgeより少ない感じがする。
今回の確認で意外とAbiword側でインライン入力が実現可能なのではないかと思えた。それにしても面倒だ。GtkIMContextはかなり曲者と思える。まず日本語の情報が少なすぎるのと、時代的な背景がよく理解出来ていないので、自分自身全然違う方向に向かっているのかも知れない。
環境Puppy4.3.1JP+SCIM-Anthy