AutoHotKeyでWindows7のキー操作をカスタマイズする

先日パソコンを買ったのですが、Windows7は思ったより快適に動いてくれます。ただ、何点か困ったことがありまして、その一つが秀Capsが正常に動作しないことがあるということです。(こちらのスレッドにユーザーからの報告があります。)

秀CapsというのはWindowsのキーボード操作をいろいろと使いやすくしてくれるソフトで、WindowsXPではとてもお世話になっていました。僕が使っていたのは、

  • 変換キーが押されたら必ずIMEをonにし、無変換キーが押されたら必ずoffにする(トグル操作でない)
  • シフトキーを押さなくてもアンダースコアが入力されるようにする

という二つの機能で、前者はGoogle IMEのキー設定でなんとかなったのですが、後者の方はどうにもなりません。プログラミングではアンダースコアは入力する頻度がとても高いので、いったんシフトなしで入力するのに慣れてしまうともう戻れないです。

いろいろなツールを試してみたのですが、結局AutoHotKeyというツールを用いてカスタマイズすることにしました。AutoHotKeyというのは、何と形容すればよいかわからないくらいいろいろなことができるソフトなのですが、要するにいろんなキー操作にフックして何かをするソフトです。例えばWindowsキーとgキーを押せばブラウザでGoogleを開く、というようなこともできます。設定ファイルが非常に複雑なのが難点ですが、それさえ乗り越えればかなり強力です。そしてこれが重要なのですが、64bit版を含むWindows7で問題なく動作します。

設定ファイルの例などは、こちらのサイトがとても参考になりました。

さて、「シフトキーを押さなくてもアンダースコアが入力されるようにする」を実現する方法なのですが、これは要するに日本語キーボードの「ろ」のキーが押された状態をフックして、_が入力されたことにすればよい、ということです。AutoHotKeyの設定ファイルでは、例えば@キーが押されたのを_に置き換えるのであれば、

@::_

でOKです。コロン二つの前にフック対象を書いて、その後ろに置き換え対象を書きます。

ただ、少し厄介なのは、日本語キーボードの「ろ」は、押すと円マークが入力されるのですが、これをフック対象にするとバックスペースの左のキーが押されたことになってしまうということです。これを回避するには、本家にも解説がある通り、AutoHotKeyの機能で対象のキー固有のコード(スキャンコード)を調べて、それを直接指定してやる必要があります。結論としては、日本語キーボードの「ろ」はSC073というスキャンコードになりますので、

SC073::_

でいけました。

Windows7はキー入力のフックの仕組みがかなり変わったらしく、従来のソフトが動かなくなることは多いようですが、AutoHotKeyがあればたいていのことは実現できそうです。