拡張スクリプト - x0oey6B8/KeyToKey-Web GitHub Wiki
- 拡張スクリプトとは
- スクリプトを書く場所
- 基本ルール
- アクション、マクロのルール
- メソッド(KeyToKey)のルール
- パラメーター(引数)の設定
- コメント
- 特定のアプリでのみ実行を許可
- ソースコードが長くなるのを避けたい
拡張スクリプトの概要についてはマクロの概要を見てください。
スクリプトは Scripts\プロファイル名
フォルダにある__extension.csx
に書きます。
Ctrl+S
で保存する必要があります。
拡張スクリプトはすべて特定の属性を付与されたメソッドで記述される必要があります。
属性 | 対象 |
---|---|
[Action] | アクション・マクロ |
[Method] | メソッド(KeyToKey) |
ℹ️ テンプレート機能から「action」「method」を検索すること簡単にコードを作成することができます。
[Action]
void 拡張アクション()
{
// 処理
}
[Method]
bool 拡張メソッド()
{
return true;
}
上記のように書くとアクション、マクロ選択画面では「拡張スクリプト」カテゴリに拡張アクション
が表示されます。
メソッドの上部に[Action]
属性を付与するだけです。
[Action]
void 拡張アクション()
{
// 処理
}
- メソッドの上部に
[Method]
属性を付与すること - 戻り値の型を指定すること
- 戻り値の型は以下のものにすること
種類 | 型 |
---|---|
数値 | double |
数値 | int |
文字列 | string |
真理値 | bool |
キー/マウス | Keys |
[Method]
bool ExtensionMethod()
{
return true;
}
C#側のメソッドにパラメーター(引数)を設定することでアクション選択画面で値を設定できるようになります。 使用できる型は以下の通りです。
種類 | 型 |
---|---|
数値 | double |
数値 | int |
文字列 | string |
真理値 | bool |
キー/マウス | Keys |
任意 | object |
このように定義すれば
[Action]
void 拡張アクション(double x, double y, Keys a = Keys.B, bool c = false)
{
Console.WriteLine($"{x}, {y}, {a}, {c}");
}
アクション選択画面ではこのように表示されます。
ドキュメントコメントを記述することでアクション・マクロ選択画面に説明文を表示させることが出来ます。
///<summary>
/// アクションの説明:アクション、マクロ選択画面に表示されます。
///<param name="x">パラメーターxの説明</param>
///<param name="y">パラメーターyの説明</param>
///<param name="a">パラメーターaの説明</param>
///<param name="c">パラメーターcの説明</param>
///</summary>
[Action]
void 拡張アクション2(double x, double y, Keys a = Keys.B, bool c = false)
{
Console.WriteLine($"{x}, {y}, {a}, {c}");
}
__extension.csx ファイルに下記のように記述することで条件設定することが可能です。
スクリプトエディタのテンプレート機能からwhitelistcon
と検索することで簡単に作成できます。
記述するだけで機能するので、UIでの設定は必要ありません。
[WhitelistCondition]
ProfilePermissionResult Conditon(CurrentProfilePermissionStatus status)
{
return new ProfilePermissionResult
{
IsGranted = true, // trueで許可、falseで不許可
IgnoreOtherSettings = false // プロファイルや他メソッドの実行許可設定を無視する場合はtrue
};
}
メソッドの定義は次の条件に従う必要があります。
- 名前は何でも OK で複数定義可能です。
- メソッドに
WhitelistCondition
属性を付与する必要があります。 - 戻り値は
ProfilePermissionResult
型を設定する必要があります。 - パラメーターには
CurrentProfilePermissionStatus
を持つ必要があります。それ以外は設定できません。 - メソッドは実行許可の処理に組み込まれ何度も繰り返し実行されるため、メソッド自体の処理で時間がかかると実行許可の機能が停滞します。Wait やウィンドウを表示する、特定のイベントを待つような処理は避けてください。
- プロファイルが無効、もしくは実行できないアプリであった場合でも、メソッドの処理は止まりません。
一つのファイルにすべてのコードを記述してしまうとどうしても長いソースコードになってしまうので、拡張スクリプトのコードは他のファイルに記述して__extension.csx
でファイルをロードするように設定します。
例えば、以下の画像のようにScripts\デフォルト\extensions\action1.csx
に拡張スクリプトのメソッドを定義していた場合
__extension.csx
ファイルの先頭に下記のコードを追加することでスクリプトをロードすることが出来ます。
#load "Scripts\デフォルト\extensions\action1.csx"