ステップ、スクリプト、AutoHotkey
アクションの内容は 3 つの方法で記述できます。アクション ページの 実行内容 カードにある 記述方法 で、どれを実行するかを選びます。
| モード | 内容 | 選ぶべき場合 |
|---|---|---|
| ステップ | 選んで入力するステップの一覧で、1 行に 1 つです。コードを入力する必要はありません。 | コードを書かずにアクションを作りたい場合。キーの送信、テキストの入力、ウィンドウの移動や終了、待機、質問など、ほとんどのアクションはこれで作れます。 |
| スクリプト | Input.Observer 独自のスクリプト言語で、コード エディターに入力します。 | 算術演算、部品からのテキストの組み立て、変数で数えるループなど、ステップでは表現できないものが必要な場合。 |
| AutoHotkey | AutoHotkey v2 のスクリプトで、AutoHotkey 自体が実行します。 | 既に AutoHotkey のコードがある場合や、AutoHotkey でしかできないことが必要な場合。 |
ステップとスクリプトは Input.Observer の中で実行され、同じ組み込み関数を呼び出します。ステップは、スクリプトで書く内容を視覚的に記述する方法です。ステップとスクリプト言語リファレンスを参照してください。
各モードは独自の内容を保持する
アクションは、ステップの本文、スクリプトの本文、AutoHotkey の本文を並べて保持します。記述方法 ① を切り替えると、どれが実行されるかが変わります。ほかの本文が削除されることはないため、元に戻せます。
選んだモードが空で、別のモードに内容がある場合は、切り替えの下にお知らせが表示され、アクションを実行しても何も起こらないことが示され、内容のあるモードを使うためのボタンが表示されます。
ステップからスクリプトに切り替える
アクションにステップがあり、スクリプトの本文が空のときに ステップ から スクリプト に切り替えると、Input.Observer はステップの変換を提案します: ステップをスクリプトに変換しますか? 変換 を選ぶと、変換結果がスクリプト エディターに入ります。
- ステップはそのまま残ります。ステップ に戻すと、変わらずに表示されます。
- 逆方向の変換はありません。スクリプトをステップに変えることはできません。
- 条件を満たす間繰り返す、条件を満たすまで繰り返す、ループを抜ける、ステップを停止 を使うステップは、スクリプトに対応する文がないため、変換は提案されません。切り替えることはできますが、スクリプトの本文は空で始まります。
- AutoHotkey への変換や AutoHotkey からの変換は決して行われません。
- ステップが レコーダー ページの記録である場合は、ダイアログに、スクリプトでは 再生速度 と 再生時のマウス軌跡の詳細度 が無視されることも示されます。待機は記録した速度で実行され、記録したすべてのマウスの動きが再生されます (レコーダーの設定)。
ステップからスクリプトへでは、各種類のステップが何になるかを示しています。
AutoHotkey
AutoHotkey は、AutoHotkey のアクションが実行されるときに Input.Observer が起動する別のプログラムです。付属していないため、AutoHotkey v2 を自分でインストールし、その場所を Input.Observer に指定します。
- AutoHotkey v2 をインストールします。
- 全般 ページで AutoHotkey を有効にする をオンにし、AutoHotkey の実行可能ファイル にそのプログラム ファイル (
AutoHotkey64.exeなど) を設定します。 - これで 記述方法 に AutoHotkey が表示されます。エンジンが新しい設定を使うよう、変更を適用します。
ルール:
- 記述方法 に AutoHotkey が表示されるのは、AutoHotkey を有効にする がオンの間、またはアクションが既に AutoHotkey として実行される場合だけです。AutoHotkey がオフのときの AutoHotkey のアクションは何もせず、ページにその旨が表示されます。
- 通常の AutoHotkey のビルドを使ってください。
AutoHotkey64_UIA.exeのように名前に_UIAが含まれるビルドは、Input.Observer からスクリプトを実行できません。 - AutoHotkey がオンになっているのに、起動時または構成の再読み込み時にそのプログラムが見つからない場合、Input.Observer は AutoHotkey の実行可能ファイルを参照する か このままにする かを尋ねます。
- 実行のたびに、スクリプトを持つ新しい AutoHotkey のプロセスが起動します。Input.Observer の組み込み関数は呼び出せず、自然に終わるまで実行されます。すべてのアクションを停止するホットキーで終了させられます。
- スクリプトの前に、Input.Observer はトリガーを表す変数 (
IO_ActionName、IO_TriggerKind、ジェスチャやホットキーのウィンドウなど) を設定します (AutoHotkey の変数)。エディターの ここで使用できる変数 の一覧には、アクションのトリガーが提供する変数が表示されます。クリックすると挿入されます。 - スクリプトが標準出力に書き込んだ内容は、
AHK:で始まる行として診断コンソールに表示されます (診断コンソール)。
ステップやスクリプトのアクションでも、AutoHotkeyExecuteScript 組み込み関数で AutoHotkey のコードを実行できます。同じ設定と実行可能ファイルが適用されます。
AutoHotkey の変数
AutoHotkey の実行はすべて、Input.Observer がスクリプトの前に追加する数行から始まり、アクションをトリガーしたものに基づいて IO_ 変数を設定します。これは、AutoHotkey として記述したアクションと、AutoHotkeyExecuteScript で実行するコードに適用されます。後者は、それを呼び出したアクションの変数を受け取ります。
すべての実行 で次の 3 つが設定されます。
| 変数 | 内容 |
|---|---|
IO_ActionName | アクションの名前。グローバル イベントの場合は、Global_Event_ に続いて構成ファイルでのイベント名 (Global_Event_release や Global_Event_foreground_changed など)。コンソールから実行したスクリプトなど、何もトリガーしていない実行では空です。 |
IO_AppGroupName | アクションが見つかったアプリ グループの名前 (Global など)。グローバル イベントでは空です。 |
IO_TriggerKind | 実行をトリガーしたもの: Gesture、Hotkey、TextExpansion、MouseButton (マウス ボタンまたは 描画ボタンを離したとき のグローバル イベント)、Wheel (ホイールのグローバル イベント)、または None。 |
残りはトリガーによって異なり、そのトリガーのものだけが設定されます。
| トリガー | 変数 | 内容 |
|---|---|---|
| ジェスチャ | IO_GestureWindow | ジェスチャを始めた場所のウィンドウ |
IO_GestureButton | 描画ボタン: left、right、middle、x1、x2 | |
IO_GestureStartX、IO_GestureStartY | ストロークを始めた位置 | |
IO_GestureEndX、IO_GestureEndY | 終わった位置 | |
IO_GestureBoundsLeft、IO_GestureBoundsTop、IO_GestureBoundsRight、IO_GestureBoundsBottom | ストローク全体を囲む四角形 | |
IO_GesturePoints | ストロークのすべての点を描いた順に並べた、[x, y] 配列の配列 | |
| ホットキー | IO_HotkeyWindow | ホットキーを押したときに前面にあったウィンドウ |
IO_HotkeyVkCode | 最後のキーの Windows の仮想キー コード (K なら 75 など) | |
IO_HotkeyModifiers | 組み合わせの修飾キーを足し合わせた値: Ctrl 1、Shift 2、Alt 4、Win 8 (Ctrl+Alt は 5) | |
| テキスト展開 | IO_TextExpansionWindow | 入力したウィンドウ |
IO_TextExpansionPattern | 入力した略語 | |
| マウス ボタンのイベント | IO_MouseWindow | ポインターの下のウィンドウ |
IO_MouseButton | ボタン: left、right、middle、x1、x2 | |
IO_MouseX、IO_MouseY | ポインターがあった位置 | |
| ホイールのイベント | IO_WheelWindow | ポインターの下のウィンドウ |
IO_WheelDelta | Windows が報告するホイールの回転量。通常のホイールの 1 ノッチで 120 (スムーズ スクロールのホイールやタッチパッドはより小さな単位で送ります)。奥 (または右) が正、手前 (または左) が負です | |
IO_WheelHorizontal | 横方向のホイールの回転なら true、通常のものなら false | |
IO_WheelX、IO_WheelY | ポインターがあった位置 |
- ウィンドウ はウィンドウ ハンドルで、AutoHotkey がウィンドウ ID として読み取る数値です。
"ahk_id " IO_GestureWindowで、WinActivate、WinGetTitleなどのウィンドウ関数でそのウィンドウを指定できます。 - 位置 は、メイン モニターの左上隅を基準とする物理ピクセル単位の画面座標です。AutoHotkey のマウス関数は既定ではアクティブなウィンドウを基準に動作するため、それらで使う前に
CoordMode "Mouse", "Screen"を設定してください。 - テキスト はそのままの形で届きます。アクション名やグループ名に含まれる引用符、バッククォート、改行は自動的にエスケープされます。
- トリガーが提供しない変数はまったく設定されません。AutoHotkey は未設定の変数を読み取るとスクリプトを停止します。複数の種類のトリガーを持つアクションや、異なるアクションから呼び出されるスニペットでは、先に
IO_TriggerKindを確認するか、IsSet(IO_GestureWindow)を使ってください。
たとえば、ジェスチャまたはホットキーから実行され、使われたウィンドウを前面に出してそのタイトルを表示するアクションは次のとおりです。
CoordMode "Mouse", "Screen"
win := IO_TriggerKind = "Gesture" ? IO_GestureWindow : IO_HotkeyWindow
WinActivate "ahk_id " win
MsgBox WinGetTitle("ahk_id " win), IO_ActionName
プラグインのスクリプト エンジン
プラグインは独自のスクリプト エンジンを追加できます。その場合、記述方法 にプラグインの名前で表示され、そこに入力したテキストは書いたとおりにプラグインに渡されます。Input.Observer はその内容を確認しません。そのエンジンを提供するプラグインが実行されていない場合は、アクションの実行時にスキップされることがページで警告されます。プラグインを参照してください。
シンプル モードの場合
シンプル モードでは、記述方法 は、既にスクリプトまたは AutoHotkey の本文を持つアクションでだけ表示されます。それ以外のアクションでは、カードにステップが直接表示されます。新しいアクションをスクリプトとして記述するには、ウィンドウを詳細モードに切り替えます (構成ウィンドウ)。