まだまだしつこくキーボード・ユーティリティー~Tclで実装するなら

*For my blog in English, check out www.myspace.com/yasuro.


これまでWindows上のキーボード・ユーティリティーについて2度取り上げた(初回二回目)。これでこの話は終わりにしたい。(自分に言い聞かせてる。)
 
いろいろと調べた結果、結局のところフリーのものに限ると、どれも帯に短したすきに長しであることが分かった。この手のものにお金を出す気はないので、シェアウェアを含め商用のものは調べさえしてない。
 
では、もし自分で実装するのならどうなるのだろう?
 
仮にTclで実装するとするのだとすると、以下を利用することができそうだ:
  • Windows APIへのアクセスは必須。ホットキーの機能や、キー入力のシミュレーションは基本的にはkeyboard inputカテゴリの関数群を使うことになるから。

    で、そのためにYet Another DLL Caller日本語の解説も見つけた。 Tcl Windows API (TWAPI) extensionもあるが、Windows APIが全てexposeされてないようだ。特に、IME関係の関数が欠けている。Yet Another DDL Callerと同様のアプローチの、Ffidlもあるが、前者の方がエレガントだと、ここでPeter Newmanが主張している。(自分では判断できない。)

    またGUIが必要な場合も、Tkを利用せず、Windowsに提供されている「コントロール」を利用する、という選択肢が得られる。

  • 上記でも実現できるかもしれないが、Winicoという拡張で、タスクバー周りの機能を利用できそう。
Tkにはそもそもwm, winfo, bind, event等々のコマンドが用意されている(リンクは8.5のもの)。キーボード・ユーティリティーで実現したい機能も、これらコマンドのWindowsプラットフォーム上での自然な拡張として導入できる。wm/winfoはTkのウィンドウしか扱えないが、Windows APIで生成された普通のウィンドウもそれで扱えるようにする、など。記述も自然になるだろう。
 
ところで、AutoHotKeyでは、RegisterHotKeyで実現できないようなホットキー機能は自前で提供しているらしい。現時点だと、どういうのがRegisterHotKeyでOKで、どういうのがダメなのかも分からない。いずれにせよ、Windows APIに関して基礎的な知識を得ないことにはダメだろう。
広告
カテゴリー: Computers and Internet パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中