ホットキーの書き方

ホットキーは、アクションをトリガーするキーまたはキーの組み合わせです。例えば、Win+Eは、通常ファイルエクスプローラーを起動し、F1はアプリ固有のヘルプ機能を起動することが多い。AutoHotkeyは、どこでも使えるホットキー、または、特定のアプリ内だけで使えるホットキーを定義し、コードで表現できるあらゆるアクションを実行することができる機能を備えています。

ホットキーを定義する最も一般的な方法は、ホットキー名の後にダブルコロン、そしてアクションを記述することです。

#n::Run "notepad"

この例では、Win+Nを押すたびにメモ帳を実行するホットキーを定義しています。試す方法は、「サンプルコードを実行する方法」をご覧ください。

プログラムの実行については、「プログラムを実行する方法」をご覧ください。

複数行が必要な場合は、中括弧を使ってホットキーの動作の開始と終了をマークしてください。これをブロックと呼びます。

#n::
{
    if WinExist("ahk_class Notepad")
        WinActivate  ; 上記のウィンドウをアクティブにします。
    else
        Run "notepad"  ; メモ帳の新規ウィンドウを開く
}

また、冒頭のブレースは、ホットキーと同じ行に、::の後に書くことができます。

ダブルコロンホットキーに続くブロックは暗黙のうちに関数本体となりますが、これは独自の変数を定義する場合にのみ重要です。とりあえず、ブロックは複数の行を1つのアクションやステートメントとしてまとめるために使われるということだけは知っておいてください(このことについて詳しく知りたい方は、「コントロールフロー」を参照してください)。

基本的なホットキー

ほとんどのホットキーでは、ホットキー名は、オプションの修飾記号の直後に1つの文字または記号が続くか、またはキー名で構成されています。上の例で、次のように変更してみてください。

注: ::の前の最後の文字は、修飾記号として解釈されることはありません。

この形式のホットキーでは、組み合わせの最後のキーだけを1文字で書いたり、その名前をフルスペルで書いたりすることができます。事例:

一般的な修飾語は、Ctrl (^)、Alt(!)、Shift(+)、および、Win(#)です。

記号<>は、上記の4つの修飾子のいずれかに接頭して、そのキーの左または右のバリアントを指定することができます。修飾子の組み合わせ<^>!は、オペレーティングシステムが LCtrl と RAlt の組み合わせとして実装しているため、AltGr キー(キーボードレイアウトに存在する場合)に対応します。

その他のモディファイアは

押したときではなく、離したときにのみホットキーを起動させる場合は、UP 接尾辞にします。

関連: ホットキー修飾記号キーのリスト

文脈依存のホットキー

#HotIfディレクティブは、以下のように、ホットキーが有効になるために満たすべき条件を指定するために使用することができます。

事例:

#HotIf WinActive("ahk_class Notepad")
^a::MsgBox "You pressed Ctrl-A while Notepad is active. Pressing Ctrl-A in any other window will pass the Ctrl-A keystroke to that window."
#c::MsgBox "You pressed Win-C while Notepad is active."

#HotIf
#c::MsgBox "You pressed Win-C while any window except Notepad is active."

ホットキーを押すたびに評価されるを書くことで、条件を定義することができます。式がtrueと評価された場合、そのホットキーの動作が実行されます。

ホットキーが出現するたびに、またはホットキーのバリエーションごとに異なる条件を指定することで、同じホットキーを複数回使用することができます。ホットキーを押すと、プログラムは条件が満たされた最初のホットキーバリアント、または条件のないもの(上の例では最後の#c::など)を実行します。

ホットキーの条件が満たされず、ホットキーの無条件変形がない場合、ホットキーがそもそも定義されていないかのように、キー入力はアクティブウィンドウに引き継がれます。例えば、上記の例の実行中にメモ帳がアクティブでない場合、Ctrl+Aは通常の機能(おそらく「すべて選択」)を実行します。

例題に次のような変更を加えてみてください。

ホットキーで操作するウィンドウを正しく特定するためには、ウィンドウのタイトル以外の基準で判断する必要がある場合があります。詳しくは、「Windowsを管理する方法」をご覧ください。

関連: #HotIfExpressionsWinActive

カスタムコンビネーション

カスタムコンビネーションとは、通常は組み合わせて使用することを想定していない2つのキーを組み合わせたホットキーのことです。例えば、Numpad0 & Numpad1::は、Numpad0を押しながらNumpad1を押したときに起動するホットキーを定義しています。

カスタムコンビネーションでキーをプレフィックスとして使用する場合、AutoHotkeyは、修飾キーとしての使用の妨げになるため、キーの通常の機能を有効にしたくないと仮定しています。キーの正常な機能を回復させるには、2つの方法があります。

  1. Numpad0::Send "{Numpad0}"など、別のホットキーを使って、キー本来の機能を再現します。デフォルトでは、Numpad0を離したときに、Numpad0とNumpad1を組み合わせて押さなかった場合にのみ、ホットキーが有効になります。
  2. Numpad0 & Numpad1::のように、組み合わせの前にtilde (~)を付けます。ただし、Numpad0::も定義している場合は、チルダによって、Numpad0を離したときではなく、後者のホットキーがすぐに有効になるようにします。

注:カスタムの組み合わせは、ちょうど2つのキー/マウスボタンの組み合わせにのみ対応しており、Alt、Win、Ctrl、Shiftのための!#^+など、他の修飾子との組み合わせはできない。

AutoHotkeyは2つ以上のキーのカスタムコンビネーションに直接対応していませんが、#HotIfを使用することで同様の最終結果を得ることができます。以下の例を実行すると、Ctrl+CapsLock+SpaceまたはCtrl+Space+CapsLockを押すと、メッセージが表示されるはずです。

#HotIf GetKeyState("Ctrl")
Space & CapsLock::
CapsLock & Space::MsgBox "Success!"

この例では、最初にCtrlを押すことが必要です。これは、Ctrlを押していなければ、スペースとCapsLockが通常の機能を果たすという利点があります。

関連: カスタムコンビネーション

その他の機能

AutoHotkeyのホットキーには、他にもいくつかの機能があります。ほとんどのアプリケーションは、Ctrl、Alt、Shift、場合によってはWinと他の1つのキーの組み合わせに限定されていますが(キーボードのすべてのキーに対応していないことも多い)、AutoHotkeyはそれほど限定されてはいません。詳しくは、「ホットキー」をご覧ください。