logo
Published on

Autohotkeyでの同時押しショートカットキー実装方法 完全版

Authors

Windowsパソコンの自動化ソフトウェア、Autohotkeyプログラミング言語(スクリプティング言語)において、キーボードキーの同時押しショートカットキーの実装方法をマスターするためのガイドです。

AutoHotKeyでは以下のようにしてやることで、任意の3つのキーでのショートカットキーを実装することができることは、よく知られている。

#If GetKeyState("space", "P")

  ctrl & d::

    msgbox, debug.

  return

#If

以下記事を見てみると、"SuperHotkey"というものでそれらしいことを実装できるということが書いてある。

Can you assign a four-key combination as a hotkey? - Ask for Help - AutoHotkey Community

SuperHotkey参考。

[AHK_H(+dll)] - SuperHotkey() - Scripts and Functions - AutoHotkey Community

SuperHotkeyでは、通常のAutohotkeyではエラーとなるような以下のようなシンタックスでのホットキーの設定が可能となるらしい。

^LButton & a & h::
!LButton & RButton & a::
^+a & h & k::
^+1 & 2 & 3 & 4::

しかし肝心のそのモジュールであるが、リンクが切れており、現在公開されていないようである。

さらに、これは僕の思い違いかもしれないが、上記ページ記載のzipダウンロードリンクを踏んだところ、thinkPHPのハッキング攻撃を受けた。どうせダウンロードできないので、上記ページは参考にしないことをおすすめする。

それに、この記事は釣りではなく、以下に示すとおり、正答を示している。以下を参考していただければ万事解決だろう。

「左矢印キー + 右矢印キー + ctrl + D」のショートカットキー(ホットキー)実装例

#If GetKeyState("left") && GetKeyState("right")

  ctrl & d::

    msgbox, debug.

  return

#If

なかなか気づけなかったのが悔しいが、意外にあっけないものであった。

ソースは以下。

Three Key combination for AutoHotkey - Super User

これを利用することで、5つでも6つでも同時押しのホットキーの実装が可能となる。僕の場合は上記の通り、同時押しにおいて汎用性の高いctrl、space、arrow keysを使用している。