目次

  1. 内容
  2. 設定例
内容

こちらに質問があったので記事にしました。

質問(一部抜粋、編集)
1~5キーを押して実行内容(マクロ)を選択、enterキーでマクロ実行、というのが作りたい。
設定例
この設定例では、処理を2つのマクロに分けて作成していきます。
1つ目は実行内容(マクロ)を選択するマクロ(以下、選択マクロ
2つ目は実際に実行するマクロ(以下、実行マクロ
選択マクロではキー(1~5)の入力を受け付けて変数に保存しておき、実行マクロではキーに対応するマクロを実行します。

まず、この記事ではプラグインを使用するので設定前に導入を行います。
プラグインは指定したキーの中から押されたキーを取得できるメソッドを使用できるようにします。
※メソッドは後日KeyToKeyに実装予定

■プラグインの導入
  1. KeyToKeyを終了させてください。
  2. プラグインファイル(.zip)をダウンロード/展開を行い、中にある「.csx」をKeyToKeyフォルダ内にある「Plugins」フォルダへ入れてくだい。
  3. KeyToKeyを起動し、アプリケーションの設定を開きます。
    config_page
  4. 次に、カテゴリーの「プラグインの許可」から「GetPressedKeys.csx」にチェックを入れます。
    config_page2
  5. KeyToKeyを再起動したら導入は完了です。


■選択マクロを作成する

先程、選択マクロではキーの入力を受け付け、実行マクロでは受け付けたキーに対応するマクロを実行すると書きました。
ここで大事なのは、受け付けたキーというのは実行マクロ共有する必要があるということです。

ではどうやって共有するのかというと、グローバル変数を使用します。
グローバル変数はKeyToKey全体で変数を共有することがでるので、異なるマクロ間で値を共有することが出来るわけですね。
作成する手順は簡単です。
  1. グローバル変数の設定画面を開きます。
    1
  2. +ボタンから新しい項目を追加して、名前を「$最後に選択したキー」、値を「Keys.None」にします。
    global

これだけOKです。
さて、キーを共有する準備が整いました、次はキーの入力を受け付ける選択マクロを作成します。

  1. マクロの作成/設定」を表示します。
    2

  2. マクロ一覧」のフローティングボタンをクリックして名前が「選択」のマクロを作成します。
    3

  3. アクションリストを右クリックし、メニューから「アクションを追加する」を選択します。
    4

  4. アクション選択画面が開くので、左側のリストから「代入<グローバル変数>」を選択します。
    5

  5. 変数名」を先程設定した「$最後に選択したキー」に設定します。
    6

  6. 代入する値」には最初に導入したプラグインのメソッドを指定するので、右上のチェックマークの左のアイコンをクリックして、メソッド作成ウィンドウを開きます。
    7

  7. 左側のリストから「GetPressedKeys」を選択します。
    8

  8. 次に取得するキーを設定します。
    上で書いたとおり選択は1~5のキーなので、「Keys.D1」「Keys.D2」「Keys.D3」「Keys.D4」「Keys.D5」と設定します。後は全部「Keys.None」でOKです。
    また、設定する順番は特に指定は無いのでバラバラでも構いません。
    入力欄の右に三点アイコンからキーを入力して設定することも可能です。
    9

  9. 設定を終えたら、右上のチェックークのボタンをクリックします(少し見づらいかもしれません)
    チェックマークのボタンをクリックすると、メソッドがクリップボードにコピーされます。
    10

  10. アクション選択画面に戻り、「代入する値」にコピーされた値を貼り付け、右上のチェックマークボタンをクリックして設定を完了します。
    11

  11. 選択マクロはこれだけで完了です。
選択マクロを実行すると「GetPressedKeys」メソッドが実行され、キー入力の待機状態になります。
キーが入力されればグローバル変数の「$最後に選択したキー」へと代入されます。


■実行マクロを作成する

さて、キーの受け付けを行うマクロを作り終えました、実行マクロを作成していきます。
上でも述べましたが、押されたキー(1~5)に対応するマクロを実行したいので、処理は以下のような条件分岐を使用して作っていきます。
もし、「$最後に選択したキー」が「Keys.D1」だったら「マクロ1」を実行する。
それ以外にもし、「$最後に選択したキー」が「Keys.D2」だったら「マクロ2」を実行する。
~以下略

※なお、次の手順ではマクロ1~マクロ5は作成済みとします。
  1. マクロ一覧から新しいマクロ「実行」を作成します。
  2. アクションリストを「右クリック」 > 「テンプレートを追加する」>「条件分岐(開始 -> 追加条件)」> 「末尾に追加」をクリックして、条件分岐のテンプレートを追加します。
    12

  3. まず、一番最初の「条件分岐<開始>」をダブルクリックします。
    13

  4. 条件式に「$最後に選択したキー == Keys.D1」を設定します。
    14

  5. 「選択したキー」が「Keys.D1」だった場合は「マクロ1」を実行したいので、すぐ下にあるコメントアクションをダブルクリックして、アクション画面から「マクロ1」へと変更します(左側のリストの下の方に「自作マクロ」というカテゴリがあります)
    15

  6. 次は「Keys.D2」で「マクロ2」を実行する処理を作りたいので、3~5と同じ手順で設定します。
    16

  7. 更に他の分岐も追加したいので、「@条件分岐<追加条件>」と「マクロ2」をShiftキーを押しながら複数行選択します。
    17

  8. 残りの分岐は3つなので、「Ctrl+D」で選択行を3つ複製します。
    そして先程と同様の手順で残りの分岐を作成します。
    18

  9. もし実行を一度だけにとどめたい場合は、「$最後に選択したキー」に「Keys.None」を代入しておくことで、実行できないようにすることも可能です。
    19
あとはAキーに「選択」マクロを割り当て、Enterキーに「実行」マクロを割り当てて完了です。
20


もしかしたら設定保存後にエラーが発生するかもしれないのでログを確認しておいてください。
ログはメインウィンドウの右側一番下にある「ツール」の「ログ」から確認できます。
もし、「引数1 : 値の解析に失敗しました("GetPressedKeys(10000, Keys.D1, Keys.D2, Keys.D3, Keys.D4, Keys.D5, Keys.None, Keys.None, Keys.None, Keys.None, Keys.None, Keys.None, Keys.None, Keys.None)")」のようなメッセージが出た場合はKeyToKeyを再起動させることで直るかもしれません。