YAMAMOTO Kengo / YamaKen
yamak****@bp*****
2007年 1月 13日 (土) 09:41:46 JST
ヤマケンです。毎度ながら返事が遅くてすいません。 At Tue, 21 Nov 2006 11:41:49 +0900, handa****@m17n***** wrote: > > In article <20061****@mbox0*****>, YAMAMOTO Kengo / YamaKen <yamak****@bp*****> writes: > > > > > save_config()の方はIMのclose時に暗黙に呼び出したりせず、明示的な > > > > 実行のみとして欲しいです。 > > > > > > これはそうする予定です。ただ、 > > > > > > > これはキーバインドを全てuim側に吸い出 > > > > して設定し、m17n-lib側のキーバインドを無効にする形態での利用を可 > > > > 能にするためです。 > > > > > > これがよく分からないのですが、m17n-lib側のキーバインドには > > > minput_save_config でセーブされたものも入っているのですか? > > > はい。 > > > まず、uim-m17n-*は一旦起動するとm17n側のキーバインドをuim側に読 > > み出した後で全て無効にし、その上でuim独自の設定があれば追加で読 > > み込みます。IMの操作は全てuimがキーシーケンスを解釈し、commandに > > 変換してm17nに渡します。 > > うーん、なんか誤解があるような。command は m17n-lib に渡すキー > イベントではありません。例えば (Right) および(C-f) というキー > シーケンス(どちらも長さ1)が `next-candidate' というコマン > ドに割当てられているとします。で、 *.mim の中で例えば > > (map > ... > (change-candidate > ... > (next-candidate (select @+)) > ...) > ...) > > とあれば next-candidate の部分が実は > > (map > ... > (change-candidate > ... > ((Right) (select @+)) > ((C-f) (select @+)) > ...) > ...) > > のことだと読み換えられてこの *.mim ファイルがロードされます。 > これによってユーザが Right キーを押したら (select @+) が実行 > さます。 > > だから「m17n側のキーバインド」を無効にすると、上記の読み換え > が行えなくなるので、ロードに失敗します。 これは完全に勘違いしていました。解説ありがとうございます。要は m17n libのcommandというものは、command名をキーワードとしたマクロ 展開、またはuimで言うところのdefine-key相当の機能だという事です ね。 そして、外部からはあるcommand名にどんなキーがバインドされている かを知ったり設定したりする事はできるが、command名そのものの指定 による操作の実行は想定されていないという事で合ってるでしょうか? だとしたら、例えば以下のようにコマンド名を擬似的なキー名としたキー バインド設定はできないでしょうか。何か適当なプリフィクスを付けて 通常のキーと名前空間を分ける等して。設定さえ可能であれば、名前の 生成やm17n側でのセーブ前にこれを除去する等の処理はuim内で完結で きます。 (map ... (change-candidate ... ((%next-candidate) (select @+)) ...) ...) ------------------------------------------------ YAMAMOTO Kengo / YamaKen yamak****@bp***** FAMILY Given / Nick http://en.wikipedia.org/wiki/Japanese_name