ホットキー (Hotkeys)

ホットキーとは、キーの押下によりスクリプトを起動する機能です。

ホットキーの定義

#n::
  Run, Notepad.exe
return

実行する処理が1行だけならば、

#n::Run, Notepad.exe

のように、returnを省いて記述できます。

ホットキーのラベルに、大文字/小文字の区別はありません。

割り当てられているホットキーは、メイン メニューの【View → Hotkeys and their methods】で一覧できます。

ホットキーの動的な定義

Hotkeyコマンドを使用することで、スクリプト内でホットキーを定義できます。

Hotkey, KeyName [, Label, Options]
Hotkey
key := "^a"
Hotkey, %key%, Func

Func:
  Run, Notepad.exe
return

同一のLabelに異なるKeyNameを指定すると、それらのKeyNameがそれぞれLabelに割り当てられます。よって既存のホットキーの割り当てを変更するには、

Hotkey, %key%, Off

としてキーを無効にします。ただしこうすると再度同じキーに割り当てても有効にならないため、

Hotkey, %key%, Func, On

として明示的に有効にします。

#IfWinActiveのようにホットキーが動作するウィンドウを制限したいならば、

Hotkey, IfWinActive/Exist [, WinTitle, WinText]

の形式を、#Ifのように制限したいならば、

Hotkey, If, Expression

を用います。

ホットキーの取得

直近に実行されたホットキーは、組み込み変数のA_ThisHotkeyで取得できます。

マウス (Mouse)

マウスのホットキーは、Windows NT/2000/XP以降でのみ機能します。

キー ラベル
ボタン LButton
中央 MButton
RButton
ホイール WheelUp
WheelDown
ホイール
(Windows Vista以降)
WheelLeft
WheelRight
拡張ボタン
(Windows 2000/XP以降)
戻る XButton1
進む XButton2
Mouse - List of Keys and Mouse/Joystick Buttons for Hotkeys and Macros

キーボード (Keyboard)

文字キーと数字キーは、その文字または数値と同じ名前を指定します。たとえば「a」キーならば「a」とします。

キー ラベル
  スペース Space
タブ Tab
  エンター Enter (Return) ※1
エスケープ Escape (Esc)
  バックスペース Backspace (BS)
デリート Delete (Del) ※4
インサート Insert (Ins) ※4
  ホーム Home ※4
エンド End ※4
  ページアップ PgUp ※4
ページダウン PgDn ※4
  Up
Down
Left
Right
  スクロールロック ScrollLock
キャップスロック※3 CapsLock
ナンバーロック NumLock
  変換 sc079※2
無変換 sc07B
ひらがなカタカナ sc070
  半角/全角 sc029
  英数※3 sc03a
※1 かっこ内の表記でも可
※2 日本語キーボードに特有のラベルは、キーコードで指定します。
※3 英数キーを単独で押した場合が[英数]であり、Shift + 英数のときが[キャップスロック]となります。
※4 テンキーにも同じキーがありますが、ラベルが異なります。
Keyboard - List of Keys and Mouse/Joystick Buttons for Hotkeys and Macros

キーコード

日本語キーボードに特有のラベルのコードは、

のいずれかの形式で指定します。仮想キーとスキャンコードはAutoHotKeyのツールで調べられます。Special Keys - List of Keys and Mouse/Joystick Buttons for Hotkeys and Macros

コロンとセミコロン

コロンはホットキーを表す記号として用いるため、

^:::MsgBox, colon

のように指定すると「This line does not contain a recognized action.」としてキーに指定できません。よってこのような場合にはキーコードを用いて、

^sc028::MsgBox, colon

とします。

またセミコロンはコメントを表す記号のため、

;::MsgBox, semicolon

としてもコメントとして無視され機能しません。よってこれもコロン同様に、

sc027::MsgBox, semicolon

とするか、セミコロンをエスケープして

`;::MsgBox, semicolon

とします。Remap colon key: HELP !!! - Ask for Help - AutoHotkey Community

修飾キー (Modifier key)

キー ラベル 文字表記のラベル
Shift + Shift
Ctrl ^ Control (Ctrl)
Alt ! Alt
Win #  
AltGr <^?>!  

修飾記号 (modifier symbols)

ホットキーの前に記述し、その作用を拡張します。

ラベル 説明 ME以前への対応※1
< 左側の修飾キーを使用する

たとえば<!aとすると、左側のAltキーでのみ動作する

×
> 右側の修飾キーを使用する ×
* 修飾キーの状態を考慮しない

たとえば*^aとすると、Ctrl + aCtrl + Alt + aCtrl + Win + aなどでも動作する

×
~ キー本来の機能をブロックしない ×
$  
UP キーが離されたときに、ホットキーを発動する

*LWin Up::のように記述する

※1 ×と表記されているラベルは、Windows 95/98/MEで利用できません。 Table of Hotkey Prefix Symbols (Modifiers) - Hotkeys (Mouse, Joystick and Keyboard Shortcuts)

修飾記号を用いないラベル表記もあります。

キー ラベル 修飾記号での表記
左シフト LShift ^+
右シフト RShift >+
左コントロール LControl (LCtrl) <^
右コントロール RControl (RCtrl) >^
左Alt LAlt <!
右Alt RAlt >!
左Win LWin <#
右Win RWin >#

テンキー (Numeric key)

キー ラベル
Numlock ON Numlock OFF
0 Numpad0 NumpadIns
1 Numpad1 NumpadEnd
2 Numpad2 NumpadDown
3 Numpad3 NumpadPgDn
4 Numpad4 NumpadLeft
5 Numpad5 NumpadClear
6 Numpad6 NumpadRight
7 Numpad7 NumpadHome
8 Numpad8 NumpadUp
9 Numpad9 NumpadPgUp
. NumpadDot NumpadDel
/ NumpadDiv
* NumpadMult
+ NumpadAdd
- NumpadSub
Enter NumpadEnter
※Numlockの状態によってラベルが異なります。

マルチメディア キー (Multimedia key)

(マルチメディア キーボードの拡張キー)

キー ラベル
ブラウザ 戻る Browser_Back
進む Browser_Forward
更新 Browser_Refresh
停止 Browser_Stop
検索 Browser_Search
お気に入り Browser_Favorite
ホーム Browser_Home
音量 ミュート Volume_Mute
ダウン Volume_Down
アップ Volume_Up
メディアプレーヤーの操作 次へ Media_Next
前へ Media_Prev
停止 Media_Stop
再生/一時停止 Media_Play_Pause
アプリケーションの起動 メール Launch_Mail
メディアプレーヤー Launch_Media
(VK_LAUNCH_APP1) Launch_App1
(VK_LAUNCH_APP2) Launch_App2

キーボードのマルチメディア キー

特殊キー (Special key)

キー ラベル
アプリケーションキー AppsKey
プリントスクリーン PrintScreen
ポーズ Pause
ブレーク
※Pauseと区別されません
Break
Ctrl + ブレーク CtrlBreak
ヘルプキー ※1 Help
スリープキー ※1 Sleep
※1 機能しないことがあります。

Alt + Tabのキー入力のための専用のラベルが、いくつか用意されています。

ラベル 機能
AltTab Alt-tabメニューが表示されているならば前方へ送る、さもなくばメニューを表示する。
(カスタム コンビネーションと共に使用しなければ、何も起こらない)
ShiftAltTab メニューを後方へ送る以外、AltTabと同じ
AltTabAndMenu Alt-tabメニューが表示されているならば前方へ送る、さもなくばメニューを表示する。
AltTabMenuDismiss Alt-tabメニューを閉じる。
Alt-Tab Hotkeys - Hotkeys (Mouse, Joystick and Keyboard Shortcuts)

ジョイスティック (Joystick)

キー ラベル
ボタン Joy1Joy32
X軸 (水平)、Y軸 (垂直)、Z軸 (深度) JoyXJoyYJoyZ
第4軸 (ラダー) JoyR
第5軸、第6軸 JoyUJoyV
  JoyPOV
  JoyName
  JoyButtons
  JoyAxes
  JoyInfo
Joystick - List of Keys (Keyboard, Mouse and Joystick) | AutoHotkey

カスタム コンビネーション (Custom Combinations)

2つのキーを組み合わせてホットキーにできます。Custom Combinations - Hotkeys (Mouse, Joystick and Keyboard Shortcuts)

Numpad0 & a::MsgBox, TEST
Numpad0 & b::Run, Notepad.exe

ただしリマップを行うときには、

Numpad0 & a::x

のようにはできないため、

Numpad0 & a::Send, x

とします。

ロッカージェスチャ (Rocker gesture)

キーラベルの調査

タスクトレイのAutoHotKeyのアイコンをダブルクリックし、スクリプトのメイン ウィンドウを開きます。そしてメニューの【View → Key history and script info】を表示させると、そこに直近に入力されたキーのラベルが表示されます。

表示内容は、たとえば次のようなものです。

VK  SC  Type  Up/Dn  Elapsed  Key      Window
----------------------------------------------
41  01E       d      6.24     A
41  01E       u      0.05     A
42  030       d      0.90     B
42  030       u      0.05     B
F3  029       u      2.18     not found
F4  029       d      0.00     not found
09  00F       d      0.30     Tab
09  00F       u      0.06     Tab
F0  03A       d      0.48     not found
A0  02A       d      0.28     LShift
A0  02A       u      0.06     LShift
1D  07B       d      1.03     not found
1D  07B       u      0.03     not found

ここで上記1行目は、

の意味であり、Typeは下表の通りです。

記号 説明
h Hook Hotkey
s Suppressed (blocked)
i Ignored because it was generated by an AHK script
a Artificial
# Disabled via #IfWinActive/Exist
U Unicode character (SendInput)

Keyにはキーのラベルが表示されますが、日本語キーボードに特有のキーなどは[not found]となります。