Windowsパソコンの自動化ソフトウェア、Autohotkeyプログラミング言語(スクリプティング言語)において、autohotkeyで右矢印キー > 左矢印キー > 右矢印キーのコマンドである動作をする、ということをしたかったのですが、それをやろうとしてまっさきにうかんだホットストリングではそれができないことが判明しました。ホットストリングは割と複雑です。
最近autohotkeyにまた熱が入っていてきて、割と便利に使わせてもらっているのですが、コマンドが増えてくると、アプリ上で競合が起こってしまうことがあります。
例えば僕はよくADVゲームをやるのですが、ゲームプレイ中にctrlキーを押すと、だいたい悲惨なことになります。( 強制スキップとか )
ctrl-space-Eでatomを開こう、なんていつものくせでやってしまうと大変です。
そこで考えられた対策が、ウィンドウのフォーカスを外してやる、というもの。
How to make window lose focus – Ask for Help – AutoHotkey Community
WinActivate, Program Manager
あとはこれをどうやって発火させるかが問題なわけですが、上記の理由の通り、下手なコマンドは使えません。それでいて、限りなく素早く実行できるものであるべきであるわけですね。
某テキストエディタのようなii
なんかは汎用性が悪いですし、そういうことを考慮した結果、矢印キーが最適であろう、と。
じゃあ以下でいけるんじゃね、と試してみました。
:*:{right}{left}{right}::
うーん。動かない。
そして、ホットストリングについて少し調べてみました。
。。。
うーん。
どうやら、autohotkeyのホットストリングでは矢印キーをトリガーとして使うことはできないようです。
他にもこれをやろうとした人が多くいるようですが、ホットストリングでの実装はできない模様。
is it possible to use arrow keys and other in a hotstring? – Ask for Help – AutoHotkey Community
Detecting, ‘catching’ arrow keys with hotstring etc.? – Ask for Help – AutoHotkey Community
How to bond hotstring to direction keys? – AutoHotkey Community
ここで一応、軽くホットストリングについてまとめてみます。
以下がホットストリングの基本スタイル。ホットストリングはエンドキーというホットストリングのトリガーを終了するトリガーを押さないと終了しないようにデフォルトでなっています。
::fuga::
エンドキーはデフォルトではenterとかspaceとかです。エンドキーの変更の例は以下。
#Hotstring EndChars -()[]{}:;'"/\,.?!`n `t
; or
Hotstring("EndChars", "-()[]{}:;")
Hotstrings – Definition & Usage | AutoHotkey
エンドキーいらないよーという場合は:*:
にします。*
のアスタリスクの部分がオプションと呼ばれる部分で、アスタリスクはエンドキーを使用しないことを意味するオプションです。
:*:fuga::
矢印キー使えないなら、spaceとかtabも使えないのか、というと、そこらへんは使えるようです。タブはtで表現し、enterは
n、スペースは文字通りスペースで、といった具合。
例えば以下のようにtab3回連続をトリガーにするということができます。
:*:`t`t`t::
WinActivate, Program Manager
return
はい。
とりあえず矢印キーの件は他の代案を探すのがよさげです。
蛇足
とりあえず以下で落ち着きました。マウスを使うというのは想定していなかった。ソフトウェアに合わせて、候補のうちどれか適切なものを使ってトリガーできるところがポイントです。
#If GetKeyState("XButton1") || GetKeyState("XButton2") || GetKeyState("RButton")
d::
WinActivate, Program Manager
; log("XButton2")
return
#If
やはりautohotkeyは便利ですねぇ。国内ではahkはブロガーを中心にそれなりに有名みたいですが、その良さを深くまで知っている人は少ないんじゃないでしょうか。ahkは僕がいっちばんはじめに手を付けたプログラミング言語でもあるので、もっと人気になってほしいところですね。
関連記事:
Node.jsでAutoHotkeyをスクリプティングする
LinuxコマンドラインからAutoHotKeyを実行する関数を実装してみた
AutohotkeyからChrome上でJavaScriptを実行する方法を考えた
Autohotkeyで文字化けする場合の対策
AutoHotKeyでファイル読み込み時に日本語が文字化けする対策
Autohotkeyでの同時押しショートカットキー実装方法 完全版
関連広告:
DX・業務効率化コース by テックアカデミー
仕事効率化・業務効率化コース by Udemy
自動化・オートメーションコース by Udemy
AutoHotkeyコース by Udemy