晴耕雨読

working in the fields on fine days and reading books on rainy days

AutoHotkeyで3キー同時押し

3つのキーを同時入力するとき、例えば Ctrl + Shift + N は ^+n ですが、CapsLock を Ctrl キーとしてF13に割り当てて使うとき F13 & +n と書くとコンパイルエラーになるので、これを回避する方法について説明します。

3キー同時押しを取得するには GetKeyState 関数を使います。 GetKeyState は任意のキーボードの状態を取得する関数で、第1引数でキーの名前、第2引数でキーのモード(省略時は論理キーの状態、"P"は物理キーの状態、"T"はOn/Offが切り替わったかを取得)を選択できます。

F13 & n::
  if GetKeyState("Shift") {
    Send ^+n
    return
  }
  Send ^n
  return

上の例では、CapsLock(F13) + Shift + N を押したときは Ctrl + Shift + N が入力され、 CapsLock(F13) + N を押したときは Ctrl + N が入力されます。

参考