AutoHotKeyに感激している

久しぶりに「これは便利だ!」と驚嘆したアプリケーションに出会った。それが「AutoHotKey」というやつ。もともとの発端は、パワーポイントで「最背面に移動」というショートカットキーがなかったことにある。よく使うコマンドだと思うんだけど、標準では「Alt→H→G→K」という4つのキーを順番に押さないといけない。とてつもなく面倒くさい

現在作成しているプレゼン資料なのだが、文字を中心にしていて、その一部の文字に付箋紙で隠すようにしてから、喋りながら付箋紙を剥がすというアクションをもたせようと思っている。よって、文字が一番下、付箋紙が全て上に配置される。さて、一番下の文字を修正しようとすると付箋紙で隠れている部分が見えない。だから、文字の部分を一番上に持ってきたい。ところが、今のパワポでは「(1段階だけ)前面に移動」というショートカットキーしか無い。付箋紙の数が多くなるほど、キーを押す回数が増える。とても面倒くさい

そこで、ショートカットキーを独自に作れるものがないか探してみたのだ。その結果たどり着いたのが「AutoHotKey」というわけ。かなり自由度が高いので、それ故に最初の学習コストが高かった。説明を読んでもよくわからない。「ショートカットキーを作るアプリ」と思い込んでいたせいもあるんだけど…

最初、アプリを起動してもヘルプ画面が表示されるだけで何も表示されない。タスクトレイに入っているわけでもないし、いったいどこで動いているんだ????

しかし、コレが正しい状態だった。このアプリは「ショートカット」を作るアプリ(応用でショートカットキーが作れる)。なので、デスクトップ上にまるでアプリ起動のショートカットを置くことで、いろいろなアクションを実行することができるのだ

例えば「ブラウザを立ち上げて、Yahooを表示と同時に計算機を起動」みたいな。マウスの操作とか、本当にいろんな事ができる。それらの指示は簡易言語で処理をすることになる。だから、GUIで操作するのに慣れた人にとっては、メチャクチャ難しいと思う。プログラム言語を扱ったことがあれば、難しくはない

さて、ショートカットを作るとき、その命令の中に「ショートカットキー」を指定することができる。この設定を行うと、通常は1回処理したら自動終了するAutoHotKeyが、そのまま常駐状態になり、ずっとキー操作を監視してくれる。そして、該当キーが押されたら命令が発動するという仕組みだ

というわけで、パワポで「Shift+Ctrl+Z」を押したら「Alt→H→G→K」を順番に押すように設定。うむ、テストしてみると良い感じ。もう本当に感激してしまった。ついでに最前面に移動する「Shift+Ctrl+A」というのも作った

また調べてみると、特定のアプリのみ起動することもできるようだ。スゴイ。コレはスゴイ。こんなスゴイアプリを知らなかったなんて(もっとも導入は難しいけど)…

で、最終的に出来上がったのがこちらのコード

#IfWinActive ahk_exe POWERPNT.EXE
	+^z::
		KeyWait Ctrl
		Send {Alt}
		Send h
		Send g
		Send k
	return

	+^a::
		KeyWait Ctrl
		Send {Alt}
		Send h
		Send g
		Send r
	return
#IF

keyWait は「そのキーを離すまで待つ」という命令。
即実行されると Shift+Ctrl+z+ALt という状態になりアプリが反応しないから。
最後に離すであろうCtrlの状態を待って、離れたらAltとかを送信する