SKKIME使いのためのXKeymacs
キーボードユーティリィティ XKeymacs 3.48改 20110426b

ご注意

 改造版につき、オリジナル版と微妙に動作が異なる箇所があります。
 前の版から移行するにあたり、必ず以下の点を確認してから使ってください。特に強調表示されている箇所はよく確認されることをお勧めします。

Mule/Meadow/Emacs/Xyzzy などのEmacs操作系のエディタ
sh/bash/csh/tcsh/pdksh/zsh などのUnix系シェル
AstecX/Xwin などのX-Windowサーバ
Lisp Works Personal Edition
Tera Term Pro
Visual Slick Edit

改造元

 XKeymacs 3.48ベース
 XKeymacs 3.48は通常の場所では公開されていないのですが、設定ファイルおよびドキュメント類は 3.47 のものをそのまま流用可能です。
 原作となるXKeymacs 3.47は作者様のサイトよりダウンロード可能です。

インストール方法

 原作であるXKeymacs 3.47のアーカイブを展開し、そこへ本アーカイブ内の実行ファイルを上書きしてください。
 原作では etc フォルダ以下に設定ファイルがありますが、ディスク容量が気になる場合はフォルダごと削除してしまっても構いません。実行ファイル単独の状態でも問題なく動きます。

 32ビットOSの場合は、32ビット版バイナリ(XKeymacs.exe)のみを実行してください。
 64ビットOSの場合は、32ビット版バイナリ(XKeymacs.exe)および64ビット版バイナリ(XKeymacs64.exe)を同時に実行してください。順番はどちらが先でもOKです。(実は起動順序によってIMEに関連する細かな動作が変わります。詳細は後述)

改造箇所

64ビット版アプリケーションは、プロセス名の末尾に " *64" と表示されます。レジストリ等への設定でもこの名称が用いられます。
従来の32ビット版単独では64ビットアプリケーションの切り替わりを検出できないため、64ビット環境では32ビット版バイナリと64ビット版バイナリの両方を同時に実行すると、自動的に双方が同期を取りながら動作します。片側だけ動かした場合は、反対側のアプリケーションの識別ができない状態(従来の「64ビット版」ビルドと同様)の動作となります。

設定の同期処理の実装が不十分なため、32ビット側のダイアログで設定を行った場合、64ビット側でもダイアログを開いて(ダイアログ上では更新されているように見えますが内部は更新されていないので)そのままOKを押して双方に設定を反映させる必要があります。この部分は次期バージョンでGUIを一本化する際に併せて修正する予定です。

フックした瞬間や同じ系列のイベントが連続した場合に情報をキャッシュし処理を減らしました。その他、API呼び出しや文字列コピー・比較処理等の回数を削減を行なって軽量化してあります。DLL寄生部分の軽量化、サイズ最小化については今後さらに見直す予定です。

Windows XP以前の環境において、マウスカーソルの位置によってシステムメニューの操作が行なわれない可能性があるバグを修正しました。(現在のコードでも激しくマウスを動かしながら連続操作しようとすると失敗しますが、通常の利用において問題になることはなくなったと考えています)
Windows 7ではキーボードショートカット機能を用いてより高速に操作を完了するようにしました。(Vistaは環境がないため未調査)

コンソール判定対象プロセスに conhost.exe を追加

Open Input Method の動作を変更

Windowsイベントがなくなってから2秒でメモリ開放(GUI側のみ)
GUI側のみに必要なモジュールをDLL側から分離(アイコン設定関連、固定文字列判定処理などは理論的には全て移して寄生するDLL側を相当軽量にできるはず。少しづつ変更予定)

VC++2010/SDK7.1用にプロジェクトを変更
64ビット版は名称を XKeymacs64 に変更

セクション名や格納順序を最適化

日本語ダイアログフォントをMS UI Gothic(9)に変更
英語ダイアログフォントをMS Shell Dlg(8)に変更
不要なリソースを削除

ご注意

 今回はわりと大胆に改造したので、もしかするといろいろエンバグしているかもしれません。どんな些細なことでも気づいたことがあればお気軽にご連絡ください。

 本プログラムの構造上、64ビット環境では一部問題が残っています。32/64ビット版を同時に動かすと、先に常駐した側のXKeymacsでは、内部でIME状態取得を必要とする機能が動作しなくなります。ただし、toggle-ime に関しては非常時は漢字キー押下処理で代用されるため大抵の環境では問題ないと思われます。それ以外のIME ON/OFF動作については未定義時と同じ扱いとなります。

 IME状態取得が必要なコマンドを利用する場合は、32/64ビットのうち利用したい側を後から起動するようにしてください。例えば、Firefox(32ビットアプリケーション)で主にIME制御を行ないたいという場合は、64ビット版を先に、32ビット版を後から実行します。
 SKKIMEと併用してCTRL+J動作をアプリによって使い分けたいのにこんなオチでは悲しすぎますが、必ずいつか根本的に解決したいと思っています。ひとまず今の時点で用意できるのはここまでです。

ご意見募集中

 本プログラムに関して改良のアイディアや使用レポートなど、どんな情報でもお気軽にお知らせください。
 XKeymacsは非常に多彩な機能と、独自操作のためのノウハウの塊のようなソフトなため、まだ全ての機能の把握や効果的な動作テストが行なえていない状態です。また、アプリケーションのバージョンアップにより、従来のXKeymacsではおかしな操作になっているが直されていないソフト、標準設定ではうまく動かないソフトなどもあると思われます。
 あと、本バージョンで削除した、WinXP版での複数IMEの検出は必要とされているのかどうか、とか、どういった利用法なのかについても把握したいと思っています。

更新履歴

TODO

Mozilla系は描画もキー処理も何もかもが独自実装すぎて泣ける。

謝辞

 最新版ソースへの改造と公開をご快諾くださった作者の大石様に感謝します。

co (Twitter)

inserted by FC2 system