今回はAutoHotKeyでキーをバインドして(他のキーと入れ替えて)使ったりホットキーを設定するというテーマでお送りしますが、AutoHotKeyのインストールは既に完了している方向けの記事になります。
まだインストールしていないという方は前回の記事を参照してインストールしてみてください。
AutoHotKeyの基本 : 何て書いてるの? を理解する
前回の記事では3つのカスタムショートカットを記述しました。
; Ctrl + Alt + E でスクリプトを編集.
; Ctrl + Alt + R でスクリプトを再読み込み.
^!R::Reload
^!E::Edit; Winシャットダウンコマンド
#Esc::Shutdown, 1
この中で;(セミコロン)で始まる行はコメントであり、機能はありません。設定したコマンドを分かりやすくするために記述されますが、さて#や!(エクスクラメーションマーク)は何なのか?
以降ではこのカスタムショートカットを参考にAutoHotKeyの基本文法をご紹介したいと思います。
修飾キーはシンボルで指定する
まずはキー指定の方法について。上の例で!や#はシンボルと呼ばれます。
シンボルは修飾キー(WinキーやCtrl、Altなど)を指定する文字で、上の例で言うと^はCtrl、!はAlt、#はWinキーを表します。
以下はシンボルの一覧です。ショートカットを作る際、キーを指定するにはどう記述すればいいのかを確認しましょう。
シンボル | 指定キー |
---|---|
# | Windowsキー |
^ | Ctrl |
+ | Shift |
! | Alt |
0~9 | 文字キーの上の数字キー |
Numpad0 ~ Numpad9 | テンキーの数字キー |
a~z | 文字キー |
F1~F24 | ファンクションキー |
Space | スペースキー |
Tab | Tab |
Enter | Enter 「Return」はNG。 |
BS | Backspace |
Del | Delete |
Left,Right,Up,Down | ←→↑↓の矢印キー |
Ins | Insert |
vk1C | 変換キー |
vk1D | 無変換キー |
vkF2 | ひらがな/カタカナキー |
PrintScreen | PrtSc (プリントスクリーン) |
PgUp | PgUp (ページアップ) |
PgDn | PgDn (ページダウン) |
End | End |
Home | Home |
Esc | Esc |
キーラベルを調べるには?
「上記のキー以外にもキーがあるけど、それはどう書いたらいいの?」という場合、この方法で簡単にそのキーをどう表記すればいいのか調べられます。
- スクリプトのタスクトレイアイコンをダブルクリック。新たなウインドウが開きます
- メニューの「View」→「Key history and script info」を選択
- その画面で調べたいキーを押してF5で更新すると、押されたキーのキーラベルが表示される
- 一番右側がNot Foundの場合、一番左側を見ると、
仮想キーやスキャンコードが表示されています。この頭に「vk」や「sc」を付け加え、「vk2D」や「sc07B」とすることでそのキーを指定できます。
AutoHotKeyでこれらのキーを使用するのであれば「vk1D::vk1D」(無変換キー)、「vk1C::vk1C」(変換キー)の1行を、それぞれファイルの最初に付け加えてください。これが無いとGoogle日本語入力側でキー入力が正しく感知されません。
キー指定を変更してみる
上記スクリプトリロードのコマンドは
^!R::Reload
ですが、これをこんな感じに変更してみます。
#F1::Reload
Ctrl+Sでファイルを保存し、タスクトレイアイコンを右クリック→Reload This Scriptとすると、今度はWindowsキー+F1キーにスクリプトリロードが置き換わります。
「〇〇を押しながら△△を押す」という動作は間に何も挟まず、キー指定を続けて書くことで記述できることが分かると思います。
キー指定の後ろに:(コロン)を2つ書き、その後に処理内容を記述するのが基本の文法です。
1つのコマンドが複数行に渡る場合、「Return」でコマンドの終わりを指定する必要がある
キーバインドを設定する
それではこれまでお話してきたことを利用して「あるキーを押すと他の何かのキーを押したことにする」キーバインドに挑戦してみましょう。
例えば僕のPCでは、プリントスクリーン(PrtSc)キーがこんなところにあります。
そこまで使う頻度が多くないこのキー、どうせならもっと使えるキーにしたいというわけで、このキー1つでCtrl+Wを押したことにしたいと思います。ブラウザやエクスプローラで「タブを閉じる」動作です。
他のソフトウェアだと何かと面倒そうなこの設定、AutoHotKeyなら1行で書けます。
PrintScreen::^w
例によってファイルを保存してスクリプトをリロードすると、このキーが「タブを閉じる」キーとして生まれ変わりました。
他にもお使いのマシンによって色々あると思います。もし「このキーは押しやすい位置にあるのにあんまり使えない」と思っているキーがあればぜひ試してみてください。
大丈夫です。失敗してもエラーが出るだけです。大体は。
ホットキーを設定する – Sendコマンド
上記のキーバインドはあるキーを別のキー(の組み合わせ)として利用する機能です。例えば
a::b
と書けばaというキーを押す動作=bというキーを押したことになり、Shift+aを押せばShift+bを押したことと同じになります。つまりこの設定を行った環境ではaというキーは存在しますが、aという文字を出す機能は失われます。
では「aはあくまでaというキーとして機能するが、aキー単体を押したときはbを出力する」にはどうするか?
こちらがホットキーの基本コマンドです。
a::Send,b
aキーを押したときの出力を「Send,」の後に記述することで、aキー単体を押したときのみbが出力されるようになります。つまりShift+aはAが出力されます。
これを応用してCtrl+Hキーで"Hello"という文字列を出力させてみましょう。
^h::Send,Hello
保存→リロードして、メモ帳などで試してみてください。