こういうホットキーがあればいいのに!を実現できるソフト

AutoHotkey のアイコン

AutoHotkey

ダウンロード支援

バージョン
1.1.37.02 / 2.0.18
更新日
2024/07/06
対応 OS
Windows XP 以降
言語
英語
価格
無料
提供元

Windows のキーの組み合わせに、「何かのキー」を割り当てられるソフトです。
いつも使っているキーボード操作をより便利にしたい、マウスをなるべく使わずにキーボードで完結したい、といった場合に役立ちます。
動作の命令を記述する ” スクリプト ”を作成することで、本ソフトはスクリプトを読み込んで実行します。
スクリプトを作成することで、次のようなキーの置き換えや動作を設定、実行できるようになります。

  • 矢印キーを置き換えてホームポジションの近くに配置
  • あまり有効に利用されていないような無変換キーや変換キーを組み合わせた有効活用法
  • ウィンドウの最大化・最小化のような単純な操作
  • 条件分岐やループなどを使った、Windows 上で複雑な動作(より専門的な記述が必要となります)

AutoHotkey #1: Install and Hello World(英語)

AutoHotkey の使い方

ダウンロード と インストール

  1. 提供元サイトへアクセスし、「Download」ボタンをクリックして表示される「Download v1.1」ボタンをクリックしてダウンロードします。
    USB メモリー等で持ち運べるポータブル版を利用する場合は、GitHub へアクセスし「AutoHotkey_1.1.37.02.zip」リンクをクリックしてダウンロードします。
    ※ ここでは「v1.1.37.02」を利用するものとします。
  2. ダウンロードしたセットアップファイル(AutoHotkey_1.1.37.02_setup.exe)からインストールします。
  3. 「Please select the type of installation you wish to perform.(実行するインストールタイプを選択してください)」画面が表示されます。
    「Express Installation」をクリックします。
  4. 「Installation complete.(インストール完了)」画面が表示されます。
    • View Changes & New Features
      本ソフトのヘルプファイルの「Changes & New Features(変更と新機能)」画面が表示されます。
    • View the Tutorial
      本ソフトのヘルプファイルの「Tutorial (quick start)(チュートリアル(クイックスタート))」画面が表示されます。
    • Run AutoHotkey
      本ソフトのヘルプファイルの「Welcome」画面が表示されます。
    • Exit
      セットアップ(インストール)を終了します。
    ※ 上3つの選択しではインストール完了画面が閉じられることはないため、最終的に一番下の選択肢である「Exit」をクリックすることになります。

使い方

設定サンプル

メッセージボックスを表示する
  1. メモ帳を開き、次のテキストを記入します。
    MsgBox, Hello AutoHotkey world
  2. 次のように指定して保存します。
    • ファイル名
      script.ahk
    • ファイルの種類
      すべてのファイル (*.*)
    • 文字コード
      UTF-8
  3. 保存した script.ahk をダブルクリックして実行すると、「Hello AutoHotkey world」ウィンドウが表示されます。
    「Hello AutoHotkey world」ウィンドウの表示

    「Hello AutoHotkey world」ウィンドウの表示


「Alt」+「4」キーでアプリケーションを終了する
アプリケーションの終了ホットキーとして Alt + F4 キーがあります。
Alt + F4 キーだと F4 キーが少し遠いので、4 キーで代用してしまおう、というものです。
  1. メモ帳を開き、次のテキストを記入します。
    !4::Send,!{F4}
    return
  2. 次のように指定して保存します。
    • ファイル名
      QuitAlt4.ahk
    • ファイルの種類
      すべてのファイル (*.*)
    • 文字コード
      UTF-8
  3. 保存した QuitAlt4.ahk をダブルクリックして実行すると、タスクトレイicon アイコンが表示されます。
    この状態が先ほど設定したスクリプトが有効な状態です。
    試しにいま開いているメモ帳をクリックして(アクティブにして)、Alt + 4 キーを押すとメモ帳が閉じられることを確認できます。
  4. 本スクリプトを終了するには、タスクトレイの icon アイコンの右クリックメニュー「Exit」から終了できます。

「無変換」+「J」キーで矢印キー左に動かす
矢印キーはキーボードの少し離れた位置にあるので、無変換キーを活用してなるべく手を動かさずに矢印キーを押すということを目的としたキーバインド(複数キーの組み合わせ)です。
  1. メモ帳を開き、次のテキストを記入します。
    vk1D & j::Send, {left}
  2. 次のように指定して保存します。
    • ファイル名
      ArrowLeft.ahk
    • ファイルの種類
      すべてのファイル (*.*)
    • 文字コード
      UTF-8
  3. 保存した ArrowLeft.ahk をダブルクリックして実行すると、タスクトレイicon アイコンが表示されます。
    この状態が先ほど設定したスクリプトが有効な状態です。
    試しにいま開いているメモ帳をクリックして(アクティブにして)、無変換 + J キーを押すとメモ帳内で点滅しているキャレットが左に移動することを確認できます。
  4. 本スクリプトを終了するには、タスクトレイの icon アイコンの右クリックメニュー「Exit」から終了できます。

実装サンプル - 複数設定する
複数のスクリプトを組み合わせて、実際に利用できる設定のサンプルです。
  1. メモ帳を開き、次のテキストを記入します。
    ; 無変換 + J キー ⇒ キー
    ; 無変換 + L キー ⇒ キー
    ; 無変換 + I キー ⇒ キー
    ; 無変換 + K キー ⇒ キー

    vk1D & j::Send, {Blind}{Left}
    vk1D & l::Send, {Blind}{Right}
    vk1D & i::Send, {Blind}{Up}
    vk1D & k::Send, {Blind}{Down}

    ; 無変換 + , キー ⇒ Home キー
    ; 無変換 + . キー ⇒ End キー
    vk1D & vkBC::Send, {Blind}{Home}
    vk1D & vkBE::Send, {Blind}{End}

    ; 無変換 + U キー ⇒ PageUp キー
    ; 無変換 + O キー ⇒ PageDown キー
    vk1D & u::Send, {Blind}{PgUp}
    vk1D & o::Send, {Blind}{PgDn}

    ; 無変換 + 1 キー ⇒ F1 キー
    ; 無変換 + 2 キー ⇒ F2 キー
    ; 無変換 + 3 キー ⇒ F3 キー
    ; 無変換 + 4 キー ⇒ F4 キー
    ; 無変換 + 5 キー ⇒ F5 キー
    ; 無変換 + 6 キー ⇒ F6 キー
    ; 無変換 + 7 キー ⇒ F7 キー
    ; 無変換 + 8 キー ⇒ F8 キー
    ; 無変換 + 9 キー ⇒ F9 キー
    ; 無変換 + 0 キー ⇒ F10 キー
    vk1D & 1::Send, {Blind}{F1}
    vk1D & 2::Send, {Blind}{F2}
    vk1D & 3::Send, {Blind}{F3}
    vk1D & 4::Send, {Blind}{F4}
    vk1D & 5::Send, {Blind}{F5}
    vk1D & 6::Send, {Blind}{F6}
    vk1D & 7::Send, {Blind}{F7}
    vk1D & 8::Send, {Blind}{F8}
    vk1D & 9::Send, {Blind}{F9}
    vk1D & 0::Send, {Blind}{F10}
    ※ 無変換キーとの組み合わせで別のキーを実行できるようにするスクリプトです。
    ※ {Blind} を追加すると他のキーとの組み合わせの動作も可能となります。例えばブラウザーでページを開いているときに Alt + 無変換 + J キーを押して前のページに移動可能となります。
    ※ ; の行はわかりやすいように補足したコメント行なので削除したり、自分なりのコメントに書き換えても動作は変わりません。
    実装サンプル

    実装サンプル

  2. 次のように指定して保存します。
    • ファイル名
      AutoHotkey.ahk
    • ファイルの種類
      すべてのファイル (*.*)
    • 文字コード
      UTF-8
  3. 保存した AutoHotkey.ahk をダブルクリックして実行すると、タスクトレイicon アイコンが表示されます。
    この状態が先ほど設定したスクリプトが有効な状態です。
  4. 本スクリプトを終了するには、タスクトレイの icon アイコンの右クリックメニュー「Exit」から終了できます。

キーリスト

制御キー
※ v1.1.27.00 よりキーが変更となり、例えば無変換キーは vk1Dsc07B ⇒ vk1D に変更となり、最初の vk から始まる4文字のみが有効となり、sc 以下は不要となりました。

修飾キー

修飾キーの使い方
修飾キーは、次のように記述します。
#z::Run www.autohotkey.com
Windows + Z キーを押すと、ブラウザーで www.autohotkey.com を開きます。

修飾キーを複数組み合わせる場合は、次のように記述します。
^!n::
IfWinExist 無題 - メモ帳
WinActivate
else
Run Notepad
Ctrl + Alt + N キーを押すと、「無題 - メモ帳」というタイトルのウィンドウがあればアクティブにし、なければメモ帳を起動します。

更新履歴

機械翻訳で日本語にしています。
v2 系
Version 2.0.18
(2024/07/06)
  • GetClipboardData が NULL を返すときに A_Clipboard がサイレント終了する問題を修正しました。
  • セッターがない場合に a.b のゲッターを呼び出すように a.b[c] := d を修正しました。

Version 2.0.17
(2024/06/05)
  • Descolada による WinText パラメータの最適化を実装しました。[PR #335 ]
  • UnsetError メッセージを変更し、変数名の後に「(グローバルと同じ名前)」を追加する代わりに、グローバル宣言を提案するようにしました。
  • UnsetError との一貫性を保つために VarUnset 警告メッセージを変更しました。
  • 変数が設定されていない場合に TypeError ではなく UnsetError をスローするように増分/減分演算子を修正しました。
  • プロパティが自身を削除する場合にプロパティ名を安全に割り当てるように OwnProps を修正しました。
  • ブロックのない制御フロー ステートメントの下の矢印関数で機能するようにブレークポイントを修正しました。
  • 関数からステップアウトするときに呼び出しの行でデバッガーが中断するように修正しました。(この動作はリビジョン 31 で追加され、v1.1.30.00 で壊れました。)
  • 新しいスレッドとして呼び出された関数からステップアウトすると、次の行に到達するまで待機するのではなく、中断された行で中断されるようになりました。
  • DBGp property_get または context_get の評価中に無視される一時ブレークポイントを削除しないようにデバッガーを修正しました。

Version 2.0.16
(2024/05/30)
  • 一部のケースで間違ったファイル/行番号を表示して標準出力に送信されるロード時エラーを修正しました。
  • ロード時のエラー/警告ダイアログの ExitApp が終了コード 2 を使用するように修正しました。
  • 現在のユーザー (管理者以外) のインストールで WindowSpy.ahk を見つける問題を修正しました。
  • DBGp property_get ページング項目の誤りを (再度) 修正しました。
  • 長さ/バッファが指定され、MultiByteToWideChar がターゲット コード ページの WC_NO_BEST_FIT_CHARS フラグをサポートしていない場合、StrPut が失敗する問題を修正しました。
  • サーバーがクライアント認証を要求した場合に匿名認証を試行するようにダウンロードを修正しました。

v1 系
Version 1.1.37.02
(2024/03/16)
  • 一部の Alt コンボをアクティブにするために LWin::Alt を使用できない問題を修正しました。
  • マウスの AltTab ホットキーが、1:: for 1 や WheelDown::AltTab などのプレフィックス ホットキーの実行を抑制しない問題を修正しました。 (v1.1.37.00で壊れました)
  • SendInput によって押された修飾子を認識しないフック ホットキーを修正しました。
  • 抑制された Alt/Ctrl/Shift/Win ホットキーに影響を与えるいくつかの問題を修正しました。
    • *LCtrl:: アクティブ ウィンドウから LCtrl をブロックしましたが、システムは Ctrl キーが押されていると判断するため、Alt キーとキーの組み合わせの送信は失敗し、そのため WM_SYSKEYDOWN の代わりに WM_KEYDOWN が送信されます。
    • *LAlt:: により、システムは以前の {LAlt DownR} を忘れてしまうため、LAlt が抑制されていたとしても、LAlt が物理的にダウンしている間は、LCtrl::LAlt などの再マッピングは正しく動作しません。
    • システムの修飾キーの低レベル追跡が論理状態と一致しないその他の潜在的な問題。
  • A_Clipboard が純粋な数値の割り当てを無視する問題を修正しました。
  • RAlt (AltGr ではない場合) を解放した後に SendInput が LCtrl を解放できない問題を修正しました。
  • 新しいスレッドがクリティカルによるメッセージ チェックを防止できない問題を修正しました。

Version 1.1.37.01
(2023/07/08)
  • 競合状態によりホットキーが起動しない問題を修正しました。Send や GetKeyState などの修飾子ホットキーの ~*RWin:: 呼び出しが早すぎると、OS が RWin がダウンしていないことを報告する可能性があるため、フックの修飾子の状態が「修正」され、ホットキーが誤って起動されるか、起動に失敗します。これは、別のキーボード フックがスクリプト自体のフックよりも最近にインストールされた場合にのみ発生する可能性があります。その場合、OS は、他のフックのスレッドが再開して戻るまでキーの状態を更新しないためです。
  • #If で設定された Last Found Window を使用するようにホットストリングを修正しました。
  • MouseGetPos、ControlClick、ContextMenu Gui イベント、および DropFile Gui イベントが、実際にはコントロールの 1 ピクセル下または右にある特定のポイントでコントロールを誤って検出する問題を修正しました。
  • OS がフックを自動的にアンインストールした場合、キーボードまたはマウスのフックを再インストールしようとしても失敗する問題を修正しました。そのような試みを行う前に、特定の条件を満たす必要があります。

Version 1.1.37.00
(2023/07/02)
  • 大きな整数を VT_R8 (浮動小数点) ではなく VT_I8 として渡すように COM メソッドとプロパティの呼び出しを変更したため、元の型と精度が保持されます。32 ビット範囲の整数は引き続き VT_I4 として渡されます。
  • IDispatch でラップされた AutoHotkey オブジェクトを使用した 2 変数列挙子 (for ループ) のサポートが追加されました。オブジェクトを呼び出すスクリプトとオブジェクト自体は、サポートされている AutoHotkey バージョンを実行している必要があります。
  • 着信 COM 呼び出しで ByRef VARIANT のサポートが追加されました。VT_BYREF|VT_VARIANT バリアント型を持つ ComObject ラッパーを受け取る代わりに、スクリプトは通常の ByRef パラメーターと互換性のある一時変数を受け取ります。
  • 受信 COM 呼び出しでパラメーターを省略するためのサポートが追加されました。IDispatch では、値 DISP_E_PARAMNOTFOUND を持つ VT_ERROR 型の VARIANT を指定することで、パラメーターを省略できます。これらの値は、オブジェクトにラップされるのではなく、自動的に変換されるようになりました。逆変換は、以前のバージョンで COM メソッドを呼び出すときにすでに行われていました。
  • コードサイズを修正し VerCompare(a, ">" b)、わずかに縮小しました。
  • 他のエラーと矛盾しないように、AltTab 関連のロード時間エラーを修正しました。
  • ComObject ラッパーがオブジェクト/COM 経由で呼び出された場合に正しく伝播されないことによってスローされるエラーを修正しました。
  • ^ シンボルと ! をホットキーとして設定できるようにホットキー GUI コントロールを修正しました+。
  • 値がシンボルに設定されている場合に修飾子を含めるようにホットキー コントロールを修正しました。
  • 固定メニュー メニュー挿入で追加された項目を上書き追加します。
  • 単一の文字を使用した場合の、InputHook.KeyOpt() の潜在的な誤動作を修正しました。
    ・オプションの削除は、対応する SC に影響を及ぼさない可能性があります。
    ・オプションは sc000 にも適用される可能性があります。
  • #If で無効にすると、 や などのホットキーのセットが if 単独のリリース a & b:: を抑制できないというカスタム コンボのバグを修正しました。a:: a up:: a a::
  • キーダウン イベントがホットキーによって正しく抑制されるが、SendLevel > 0 で追加のキーダウンを送信すると、送信されたイベントが #InputLevel により無視された場合でも、後続のキーアップが抑制されなくなるバグを修正しました。
  • ifが存在しても #If によって無効化される a & b up:: のを抑制しない問題を修正しました。b a & b::
  • 組み込み IDispatch のキャッシュされた COM プロパティ名の割り当てが最適化されました。
  • AutoHotkey のビルド構成を DLL としてサポートするようにコードがリファクタリングされました。

フィードバック

ユーザーレビュー

  • 5

    プログラミングに慣れていないと少し難しいが、とても自由度が高い

    kasasa
    kasasa
    18
    Windows 11

    プログラミングに慣れていないと少し難しいが、とても自由度が高い
    【良かった点】
    ・自分でスクリプトを書くので、設定の自由度がとても高い。(ホットキーの条件を細かく指定したり、特定のファイルを実行したり)
    ・スクリプトをコンパイルし、exeファイルにすることで、AutoHotkeyがインストールされていない環境でも使用できる。
    【気になった点】
    ・自分でスクリプトを書くので、プログラミングに慣れていない人には難しい。(「特定のキーが押されたときに特定のキーを押す」程度のものなら難しくないし、他人のスクリプトをそのまま使用するだけでも便利にできると思う)
    ・スクリプトの書き方がほかの言語と比べて特殊なので、プログラミングに慣れていても少し使いづらく感じることがある。

    1人が参考になったと回答しています。
    このレビューは参考になりましたか?
  • 5

    バージョン 1.1.37.01 を使用中です

    Mimic
    Mimic
    24
    Windows 10

    バージョン 1.1.37.01 を使用中です。

    【良かった点】
    (1) Windowsキーとキーボードの数字を同時押しでタスクバーにピン留めしたソフトを起動できます。ところがWindowsキーが押しにくい位置のキーボードがあったりします。そういった場合にこのソフトが活躍します。

    例えば、「SHIFTキー と F の同時押し」でWindowsキーと数字の同時押しが実現できたりします。

    (2)解説サイトが沢山あるので独学でどうにかなる点

    【気になった点】
    バージョン1と2でソフトが結構違うようなので、解説サイトがどちらのバージョンをベースにしているか確認が必要です。

    3人が参考になったと回答しています。
    このレビューは参考になりましたか?
  • コメント

    > 「無変換」+「J」キーで矢印キー左に動かす

    username
    username
    1
    Windows 11

    > 「無変換」+「J」キーで矢印キー左に動かす
    >
    > 試しにいま開いているメモ帳をクリックして(アクティブにして)、
    > 無変換 + J キーを押すとメモ帳が閉じられることを確認できます。

    「カーソルが左に動く」ではないでしょうか?

    8人が参考になったと回答しています。
    このレビューは参考になりましたか?