skkinput3's page

 [最新情報] 

[2003/10/12]

snap20031012b に仕切り直しました。KinputServer_RemoveClient 内で KinputClient_Destroy を呼び出しているがために、Kinput Client を「起動」「終了」を繰り返すと、skkinput が落ちます。そのバグを修正しました。(修正できたかテスト中です)

snap20031012 を置きました。lbind.c で rbDelete が正しく呼ばれていなかったバグの修正及び make-temp-file を実装、が主な変更点です。(以前の make-temp-filename は実際に file まで作ってしまうという実装でしたので、temp-filename attack は通らないのですが、skk10 の修正にあわせました。)

[2003/05/28]

snap20030524 を置きました。TSUMURA Tomoaki さんの O_FSYNC の問題を解消する patch を merge しました。patch ありがとうございます。あと、TRootWindowWidget の onDestroy の中で child widget を破棄することで heap を破壊していたバグを修正しました。

[2003/02/05]

snap2003/02/05 を置きました。release-3.06 から memory leak のバグを幾つか fix しました。が、これで完全に解決できたかは追跡中です。

[2003/01/30]

skkinput-3.0.6 を release しました。skkinput-3.0.5 からの変更は、stfiles.c の O_SYNC を O_FSYNC に修正したこと、です。浜田さん、レポートありがとうございました。

[2003/01/10]

skkinput-3.0.5 を release しました。

Qt-3.1.1 では修正されていることを確認しましたので、下記の非公式 patch は既に無用の長物です。

[2002/12/26]

Qt-3.1.0 で OnTheSpot input style で入力していると、入力が cancel されることがあります。これは Qt 側の問題です。非公式パッチを作成しました。不要になったので消します。

[2002/12/06]

skkinput3-snap20021206 を置きました。snap20021205 からの変更は、Skkinput.conf の設定で skk10.62a compatible mode の install が可能になったこと、です。ただ、OffTheSpot Window Style で入力中のテキストが表示される Window の位置がずれるバグが(xedit + ASTEC-X で確認)解決できていません...。ASTEC-X の問題なのか否か...。

[2002/12/05]

skkinput3-snap20021205 を置きました。snap20021129 からの変更は、focus まわりの trouble (を解決しようと試みた)です。Yahoo! chat の applet で上手く入力できないバグを追い掛けていますが、まだ fix できていません。次の版で skkinput2 ともども修正する予定です。

[2002/11/29]

skkinput3-snap20021129 を置きました。skkinput-3.0.4 からの変更は、skk10.62a 化が主です。

[2002/11/?]

skkinput-3.0_4 を release しました。sourceforge.jp から download 可能です。(更新が遅れました。すみません)

[2002/10/31]

skkinput-3.0_3 を release しました。snap2002/10/26 からの変更は「SIGINT, SIGQUIT を catch して、辞書のセーブ処理の後終了」を追加した、です。

[2002/10/26]

snapshot2002/10/26 を cvs commit しました。追加された機能は SIGHUP で辞書の save & 設定の再読み込みが可能になったことです。その他 bug fix が幾つかあります。

[2002/10/16]

skkinput-3.0_2 を release しました。

 [目次] 

 [software の紹介] 

skkinput3 (以下、特に version を記す必要がない場合には skkinput と略す) は、kinput protocol/kinput2 protocol/X Input Method(X11R6標準)を用いた X Window System 上で動作する日本語入力のためのアプリケーションです。Ximp Protocol のコードは入っておりません。(*1)

skkinput は、SKK に付属している skkserv と BSD 系 UNIX のソケットを利用してかな漢字変換を行います。skkserv が利用できない場合にローカル辞書だけを用いて日本語入力が可能です。ただし、skkserv を起こしに行く機能はサポートされておりません。

skkinput2 と異なり skkinput3 は emacs-lisp の簡易 interpreter として動作し、skk8.6 の skk.el を読み込んで、仮名漢字入力を行います。得られる結果は同じなのですが、大きな変更点はこの一点に集約されます。変換結果の候補にユーザからのキーを要求するものがあった場合に、その差は顕著に現れます。skkinput2 では対応できませんでした。

 [install 方法] 

基本的には X の Application 一般と同様に xmkmf && make && make install で行います。すなわち、

  1. skkinput3 の source code を適当な作業 directory で展開する。
  2. 展開して出来た directory に移動する。
  3. xmkmf && make && make install

make install する時だけ root になった方がいいかもしれません。極力 root で作業する時間を短くするのが、security 対策としては better かと。

install 時点での設定は Skkinput.conf を修正することになります。基本的な部分は skkinput2 と同じです。

恐らく意味不明なのは次の部分だと思われます。

SKK_MISCDEFS = -DUSE_BLOCKHOOK #-DUSE_ASYNC_XIM

USE_BLOCKHOOK はガーベージコレクタを動かすタイミングを指定します。USE_BLOCKHOOK を指定すると、特に X Event Loop で Event がなく Block している状態の時にガーベージコレクタが動きます。指定してない場合には、Event を処理した後に毎回ガーベージコレクタが走ります。

USE_ASYNC_XIM は XIM の非同期モードで動作することを指定します。恐らくは入れない方が良いでしょう。サーバ(skkinput) から XIM Client を非同期に呼び出すと、どうも応答性が良くないので…。

ELISP_DIR = $(LIBDIR)/skkinput

順序が前後しましたが、ELISP_DIR は emacs-lisp の検索パスの指定です。ここに指定されているパスが load-path として利用されます。

 [よくあるかもしれない質問とその回答] 

  1. 変換開始キーを変更したいのですが。特に Alt+漢字 or Alt+backquote にしたいです。
  2. "o" を入力した時に "お" が変換クライアントに送信されてない状態で残るのですが、これはバグですか?仕様ですか?

[Q.1] 変換開始キーを変更したいのですが。特に Alt+漢字 or Alt+backquote にしたいです。

[A.1] 変換開始キーを修正するためには、Kinput2 Protocol 用の設定及び XIM Protocol 用の設定、そして共通の設定を行わなければなりません。

Kinput2 Protocol においては「変換開始の指定はクライアント側に任されている」です。ですから、skkinput 側には設定する方法がありません。逆にクライアント毎にマメな設定が可能になるという利点があるのですが、面倒さと抱き合わせです。

今、Kinput2 Protocol というと kterm しか思い浮かばないので、KTerm 用の設定を書きます。

kterm*VT100.translations: #override \
	Shift	<Key>space:	begin-conversion()

上記の設定が default の KTerm の変換開始キーの設定です。この設定が $HOME/.Xdefaults もしくは $HOME/.Xresource にあるのでしたら、Shift<Key>space の部分を次のように変更します。無いのでしたら、$HOME/.Xdefaults または $HOME/.Xresource に次の設定を加えましょう。

kterm*VT100.translations: #override \
	Mod1<Key>grave:	begin-conversion()

これで ALT-Backquote で、

kterm*VT100.translations: #override \
	Mod1<Key>kanji:	begin-conversion()

これで ALT-Kanji で変換開始することになります。$HOME/.Xdefaults か $HOME/.Xresource か、どちらに設定を書けば良いのか?は、環境依存です。man X すると…

       XENVIRONMENT
              This  must  point to a file containing X resources.
              The default is $HOME/.Xdefaults-.  Unlike
              __projectroot__/lib/X11/Xresources, it is consulted
              each time an X application starts.

と書かれていますので、default は $HOME/.Xdefaults で良いと思うのですが…。XENVIRONMENT を見て決めましょう。

さて、XIM Protocol の変換開始キーの指定です。これは、

Skkinput*ConversionStartKeys:	[M-`], [M-Kanji]

を $HOME/.Xdefaults もしくは $HOME/.Xresource に書けば良いです。(Shift-Space の設定を残す場合には、[M-space], [S-kp-space] も書いて下さい。

この設定が反映されるのは、skkinput の起動直後です。ですから、skkinput を一度終了させて、xrdb .Xdefaults で .Xdefaults の設定を X server に反映させてから、skkinput を起こし直して下さい。

で、変換終了キーですが、これは skkinput の keymap を修正します。ちなみに XIM Protocol は変換終了キーも Protocol の内部で処理できる筈なのですが、「変換開始キーと変換終了キーを同じにできない」というバグがあります。これは Xlib を読むとすぐに分かるのですが、変換開始キーとしてキーを処理した後、変換終了キーとしてキーを処理するからです。(片方を通ったら、もう片方を通らないとか、今は変換中だったらとかいう判定がない)

話がそれました。

次の設定を $HOME/.skkinput.el に加えて下さい。

(define-key im-local-map [453509216] 'im-end-conversion)
(define-key im-local-map [453574433] 'im-end-conversion)

この 453509216 の意味ですが、16進数に直すと 0x1B080060 になります。

数値意味
0x1BX KeySym + ModMask でキーを指定する。
0x08Mod1 Mask に一致。X.h を参照。
0x0060XK_grave。keysymdef.h を参照。

ですから、Mod1+XK_grave に im-end-conversion の機能を加えたという意味になります。453574433 の方も同じようにして、Mod1+XK_Kanji になることが分かります。

まとめると

ビット説明
31...24 0x1B (固定)。ModMask + XKeySym を直接使う charset
23...16 ModMask
15... 0 KeySym

具体的にこのキーに割り当てたい、という場合には xev を利用して、その時の KeySym, Mask を見るのがいいでしょう。

Shift-Space や Control-Backslash で変換が終了するのもまずい場合には、

(define-key im-local-map [453050400] 'im-key-notify)
(define-key im-local-map [28]        'im-key-filter)

と $HOME/.skkinput.el に加えることで、これらのキーに割り当てられていた機能を消すことができます。

[Q.2] "o" を入力した時に "お" が変換クライアントに送信されてない状態で残るのですが、これはバグですか?仕様ですか?

[A.2] 仕様です。

修正しました。skkime 側の実装では、"o" で "お" が入力されているので、調べたところ、j-read-char の直前で確定テキストを flush するようにすれば良いということが分かりました。snap20031012 では修正されている筈です。

 [TODO 一覧] 

 [download] 

snap20031012b

snap20030524

snap20030205

3.0.6-release

3.0.5-release

snapshot 2002/12/06

snapshot 2002/12/05

snapshot 2002/11/29

Release-3.0.3 (2002/10/31)

snapshot 2002/10/26

Release-3.0.2 (2002/10/16)

snapshot 2002/10/13

 [変更履歴] 

[平成15年1月30日(木)]

[平成15年1月10日(金)]

ddskk の動作実験を開始しています。ddskk 互換 mode で動かすと、重さと memory の使用量は並ではなくなってしまいますが…。

[平成14年12月06日(金)]

skk10 互換モードで動作させると yes-or-no をまだ実装していないので、辞書ファイルセーブで signal で転ぶ可能性があります。skk8 互換モードが辞書コードに jis を仮定しているのですが、skk10 互換モードの default が euc なため、辞書のサイズが縮んでいるぞ..「はい or いいえ」と尋ねられるわけです。

[平成14年12月05日(金)]

[平成14年11月29日(金)]

skk10 互換モードは重いです。skk.el を読み込むあたりで、特に。symbol の検索時に使っている binary tree を colored tree に直すことで速度を改善できないか考え中です。

[平成14年11月?日(?)]

skkinput-3.0_4 を release しました。

[平成14年10月31日(木)]

skkinput-3.0_3 を release しました。

[平成14年10月26日(土)]

[平成14年10月16日(水)]

skkinput-3.0_2 を release しました。

[平成14年10月13日(日)]

 [その他、現状など] 

開発マシンを壊してから、何とか次マシンの用意までこぎつけました(平成14年10月14日(月)現在)。

skkinput3 自身については圧倒的に document が不足しています。もちろん、私の不徳の致すところ…なのですが。更に加えて言えば、test も不足しています。忘れていたチェック項目を見付けてはメモしている、そんな状態です。

TODO リストですが、次のようになっています。


 [footnote] 

(*1) Ximp Protocol をしゃべる変換クライアントが見付からないために、未実装になりました。コードは書けるのですが、動くかどうか全く未知数というのでは…。


[戻る]