拡張スクリプト - x0oey6B8/KeyToKey-Web GitHub Wiki

目次

  1. 拡張スクリプトとは
    1. 関連
  2. スクリプトを書く場所
  3. 基本ルール
  4. アクション、マクロのルール
  5. メソッド(KeyToKey)のルール
  6. パラメーター(引数)の設定
  7. コメント
  8. 特定のアプリでのみ実行を許可
  9. ソースコードが長くなるのを避けたい

拡張スクリプトの概要についてはマクロの概要を見てください。

関連

スクリプトを書く場所

スクリプトは Scripts\プロファイル名フォルダにある__extension.csxに書きます。
⚠️ 編集したコードはエディタ右上にある「保存」もしくはCtrl+Sで保存する必要があります。

基本ルール

拡張スクリプトはすべて特定の属性を付与されたメソッドで記述される必要があります。

属性 対象
[Action] アクション・マクロ
[Method] メソッド(KeyToKey)

ℹ️ テンプレート機能から「action」「method」を検索すること簡単にコードを作成することができます。

[Action]
void 拡張アクション()
{
    // 処理
}

[Method]
bool 拡張メソッド()
{
    return true;
}

上記のように書くとアクション、マクロ選択画面では「拡張スクリプト」カテゴリに拡張アクションが表示されます。

アクション、マクロのルール

メソッドの上部に[Action]属性を付与するだけです。

[Action]
void 拡張アクション()
{
    // 処理
}

メソッド(KeyToKey)のルール

  • メソッドの上部に[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に拡張スクリプトのメソッドを定義していた場合

image

__extension.csxファイルの先頭に下記のコードを追加することでスクリプトをロードすることが出来ます。

#load "Scripts\デフォルト\extensions\action1.csx"
⚠️ **GitHub.com Fallback** ⚠️