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

AutoHotkey のアイコン

AutoHotkey

  • 海外
  • 日本語✕
  • 寄付歓迎

ダウンロード支援

対応OS:
Windows XP 以降
バージョン:
1.1.37.02 / 2.0.14(2024/05/06)
価格:
無料

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

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

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

AutoHotkey の使い方

ダウンロード

  1. 提供元サイトへアクセスし、「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.14
(2024/05/06)
  • テキストがフォーカスされている場合でも文字キーのショートカットを処理できるようにエラー ダイアログを修正しました。
  • MonthCal W-n (月数) の幅の値が DPI スケーリングの影響を受けないように修正されました。
  • クリックして整数を返さないように修正しました。
  • key::try { のエラーとしての検出を修正しました。
  • XZ ではなく XYZ を生成するように :B0*O:XY::Z を修正しました (Y を抑制)。
  • キーが物理的に押された場合でも、以前の {modifier Down} が有効なままになるように Send を修正しました。
  • メニューポップアップが表示されたときにスクリプトがフォーカスを取得する信頼性が向上しました。
  • デバッガーの改善
  • 保留中の応答が破損しないように、別のコマンドの処理中に送信される stdout/stderr パケットを修正しました。
  • property_get -n <例外>.message などを修正しました。
  • プロパティが文字列を含む一時オブジェクト (x.y.z where y => {z:"a"} など) を返す場合の property_get の破損した結果を修正しました。
  • 別のコマンドの処理中に非同期コマンドを受信した場合のクラッシュを修正しました。
  • property_set によって例外が抑制された後に削除されない問題を修正しました。
  • -d 1 ですでに許可されているように、グローバル変数を許可するように property_get -c 0 -d 0 を修正しました。
  • property_get の列挙項目のページングが誤って修正されました。
  • property_get が 1 つのパラメーターでプロパティ ゲッターをサポートするように改善されました (以前は、暗黙的な __Item プロパティのみがこれをサポートしていました)。
  • プリミティブ値のプロパティをサポートするために property_get が改善されました。 値は変数に含まれるか、プロパティから返される必要があります。
  • property_get が改善され、<=1 パラメーターを使用して関数を呼び出すことができるようになりました。
  • float キー/パラメーターをサポートするように property_get が改善されました。
  • プロパティ評価中の例外を抑制するようにデバッガーを変更しました。
  • __Enum によってスローされたエラーを無視するようにデバッガーを変更しました (項目なしとして扱います)。
  • <enum> 疑似プロパティが __Enum を必要とするように変更されました。 これにより、オブジェクト自体が列挙子として呼び出されることがなくなります。
  • デバッガーでの小さなコード サイズの最適化。

Version 2.0.13
(2024/04/20)
  • オプションに無効なオプションが含まれている場合に ValueError をスローするようにホットキー関数を変更しました。
  • アンドゥとして動作するときに Backspace の +S オプションを尊重するように InputHook を修正しました。
  • 列挙中にプロパティの削除を安全に処理できるようにデバッガを修正しました。
  • 終了時に OLE クリップボードの内容 (エラー ダイアログ テキストなど) が失われる問題を修正しました。
  • ホットキー「a pu」などのホットキー上の無効なサフィックスの検出が修正されました。
  • アドレスが変更された場合にのみコピーバックするように DllCall AStr* arg タイプを修正しました。
  • #Include を修正して、読み込む組み込み変数を正しく「閉じる」ようにしました (実際のスクリプトへの影響は知られていません)。
  • 2 つの異なる ahk_id 値を持つ WinTitle が一致しないように修正しました。

Version 2.0.12
(2024/03/23)
  • Gui にオーナー ウィンドウまたは +DPIScale がある場合の Gui GetPos/GetClientPos を修正しました。
  • ファイルループでのサブフォルダーの再帰を防止する「Until」を修正しました。
  • 引数の型が USr の場合にスローされるように DllCall を修正しました。
  • 各正規表現コールアウトで発生するメモリ リークを修正しました。
  • 競合状態により送信が誤ってモディファイアを解放する問題を修正しました。 たとえば、他のキーボード フックがスクリプト自体のフックよりも新しくインストールされた場合、~LAlt::Send "{Blind}x" は断続的に LAlt を解放しました。
  • 同じサイズの複数のビットマップが存在する場合に、より高いビット深度を優先するようにアイコン ローダーを修正しました。
  • SendInput がすでに RAlt をリリースしていて、レイアウトに AltGr がない場合に LCtrl をリリースできない問題を修正しました。
  • モディファイアの変更後にキーを繰り返すとキーアップ ホットキーが起動しない問題を修正しました。 たとえば、F1::Send "{Ctrl down}" では、Ctrl キーが押されていてもキーが放されたときに F1 up:: の実行が許可されるはずですが、キーリピートが発生した後は許可されませんでした。
  • #IfWin ではなく #HotIf を参照するエラー メッセージを修正しました。 [PR #327]
  • OwnProps がオプションのパラメーターを持つプロパティを誤ってスキップする問題を修正しました。
  • クローンされた動的プロパティの一貫性のない動作が修正されました。
    • OwnProps は、パラメーターを必要とする複製されたプロパティをスキップしません。
    • パラメーターがパラメーターのないプロパティに再帰的に渡されない (つまり、a.b[c] が (a.b)[c] として評価されることを許可する)。
  • ネットワーク サブシステムが機能していない場合に重大なエラーが発生する SysGetIPAddresses を修正しました。 例えば Windows セーフ モードで。
  • コンソールウィンドウがアクティブな場合など、フォーカスを決定できない場合に ControlGetFocus が 0 を返すように変更しました。

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
    17
    Windows 11

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

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

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

    Mimic
    Mimic
    21
    Windows 10

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

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

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

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

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

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

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

    username
    username
    1
    Windows 11

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

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

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

AutoHotkey に投稿されたすべての評価・評判・レビューを見る(全 6 件)