*root-window, off-the-spot, over-the-spot, on-the-spot [#ie63be86] 手元の本で XIM の入力方法について調べてみる. X11R5 が出始めた時代の本なので,内容は古くなってると思うが,基本的なところはそれほど変わっていないだろう. :root-window| クライアントウィンドウの外に XIM 入力ウィンドウ :off-the-spot| クライアントウィンドウの隅に XIM 入力ウィンドウ :over-the-spot| クライアントウィンドウの入力ウィンドウの上に XIM 入力ウィンドウ :on-the-spot| クライアント側で入力を制御・表示 kinput2 では,それらしきライブラリがリンクされていないにも関わらずアンチエイリアジングフォントで表示されている. つまり,on-the-spot 入力になっているものと思われる. 一方,nicolatter では,off-the-spot 入力になってしまっている. つまり,状況としては -kinput2 では on-the-spot 入力をサポートしているようだ -が,nicolatter では on-the-spot 入力はできないらしい かつ -gtk+ が on-the-spot 入力をサポートしていて -かつ,over-the-spot 入力をサポートしていない~ もしくは off-the-spot よりも消極的な選択肢である というところなのかなぁ. *親指シフト,動作せり [#vfc43f2c] 親指シフトキーボードローマ字入力というのも悲しいので,nicolatter のソースコードと kinput2 のソースコードを追っかける. jserver との接続の部分を見比べてみると,両者を見比べてみると,特に大きな違いはない. nicolatter のほうが jl_open_lang() を使っていて,kinput2 は jl_open() を使っているが,結局はヘッダのマクロで吸収されているので同じことなのである. 最初は C++ と C ライブラリの API ミスマッチかと思ったが,そういうわけではないようである. 試しに C で同様のプログラムをちょろっと書いてみて動かしてみたところ,nicolatter と同様,jserver に接続できない状態. で,「ポート番号が狂ってるのかな」と kinput2 が動いている状態でおもむろに netstat を取ってみると… >こいつ,UNIX ドメインソケットで動いてるではないかい 引数に -jserver localhost って書いたのに. kinput2 のうそつき. というわけで,nicolatter のほうも強引に UNIX ドメインソケットで接続するよう,jl_open_lang() の引数をいじると… 無事動作しました. けど,オンザスポット,というか,その場変換できないんだよなぁ. あと,文節調整のキープレス・リリースがクライアント側に伝わってたりして,まだなんか妙. まぁ,今日のところは「とりあえず動いた」ということでよしとしよう. *本日のツッコミ [#s523d9cd] #comment