[AutoHotKey]修飾キーのシンボル一覧/キーバインドとホットキーの設定方法

今回は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スペースキー
TabTab
EnterEnter 「Return」はNG。
BSBackspace
DelDelete
Left,Right,Up,Down←→↑↓の矢印キー
InsInsert
vk1C変換キー
vk1D無変換キー
vkF2ひらがな/カタカナキー
PrintScreenPrtSc (プリントスクリーン)
PgUpPgUp (ページアップ)
PgDnPgDn (ページダウン)
EndEnd
HomeHome
EscEsc

キーラベルを調べるには?

「上記のキー以外にもキーがあるけど、それはどう書いたらいいの?」という場合、この方法で簡単にそのキーをどう表記すればいいのか調べられます。

  1. スクリプトのタスクトレイアイコンをダブルクリック。新たなウインドウが開きます
  2. メニューの「View」→「Key history and script info」を選択

  1. その画面で調べたいキーを押してF5で更新すると、押されたキーのキーラベルが表示される

  1. 一番右側がNot Foundの場合、一番左側を見ると、

仮想キーやスキャンコードが表示されています。この頭に「vk」や「sc」を付け加え、「vk2D」や「sc07B」とすることでそのキーを指定できます。

Google日本語入力で変換キー、無変換キーを半角/全角切り替えに使用している場合:
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が出力されます。

Send,〇〇は〇〇というキーストロークを発生させるコマンド

これを応用してCtrl+Hキーで"Hello"という文字列を出力させてみましょう。

^h::Send,Hello

保存→リロードして、メモ帳などで試してみてください。

タイトルとURLをコピーしました