【過去ログ】質問1
自分のやりたいことや現在の設定など情報を詳細に記載してください。
マクロの質問について
現在のKeyToKeyには以下の3種類のマクロがあります。
- C#スクリプト
- ブロックマクロ
- アクションマクロ(非推奨)
マクロの質問をする際はどちらのマクロについて聞きたいのか書いてください。
※書いてない場合は返信は行いませんのでご了承下さい
返信について
返信はすべて最新バージョンの内容で書きます。
古いバージョンをご使用の方は事前に最新版へアップデートしてください。
よくある質問
Q. How can I switch the language in this app?
No you cannot.
It is supported only Japanese(language) and I have no plans to support English or else in the future.
Q. ウィンドウが表示されなくなった
ウィンドウが表示されないときの対処方法 を参照してください。
Q. アプリを非アクティブにしたままマクロやキー入力を実行できる?
できません。
マクロやキー入力等は最前面(アクティブ状態)のアプリに対してのみ動作します。
Q. 設定ファイルはどこにある?
設定ファイルはKeyToKeyのフォルダ内にあります。
設定に関係するフォルダやファイルはこちらを参照してください。
Q. マクロやキーの入力ができない
以下について確認してみてください。
設定の編集が保存できていない
正常に保存できている場合はメインウィンドウに設定内容が表示されます。
他のアプリで試す
特定のアプリで機能してないだけの可能性があります。メモ帳などを使って動作確認してみてください。
アプリの実行許可が正しくできない
環境設定からアプリの実行が正しく設定されているか確認してください
- アプリの実行許可リストに追加した項目を削除した上で動作確認する(何も設定されてない状態の場合すべてのアプリ上で動作します)
- アプリのプロセス名等の設定が正しいかどうか確認する
何かしらのキーやマウスの入力が影響している
キー入力が正しくできない場合、何かしらのキーやマウスが押されっぱなしになっていることによって正しく入力できない可能性がないか確認してみてください。
読み込みエラーが発生している
メインウィンドウのコンソールから読み込みエラーが出てないか確認してみてください。
他アプリの入力によってマクロを実行しようとしている
初期設定では、利便性の観点から、「アプリによる入力(キー/マウス)」によるマクロ等の実行がロックされています。
ここで言う「アプリによる入力」とは、以下のようなものを指します。
- KeyToKeyやJoyToKey等のマクロ系ツール
- キーボード/マウスメーカー製の割り当てツール(ただし物理デバイスかのように振る舞えるツールもあります)
- リモートデスクトップ系ツール
- 特殊なキーボード(テンキーのみキーボード、左手キーボードなど)は「アプリによる入力」を発生させることがあるようです。
■入力が「アプリによる入力」かどうかを調べるには、以下の手順を行います。
- メインウィンドウの「コンソール」からコンソールを表示させます。
- 同じく「コンソール」から「キー/マウスの入力情報を表示」にチェックを入れます。
するとキーやマウスのボタンを入力するたびにコンソールに入力パラメーター情報が表示されるので下記の項目を見ます。
| 名前 | 説明 |
|---|---|
| Key | 入力された要素の名前 |
| Status | Down(押された)Up(離された) |
| Injected | アプリによる入力かどうか。Trueの場合はアプリによる入力 |
Injectedの値がFalseの場合は物理デバイスからの入力です。マクロ等が実行可能です。
Trueの場合はアプリのよる入力です。マクロ等は実行することができません。
Trueの状態でマクロ等を実行するには実行ロックを解除する必要があります。
「割り当て設定(キー/マウス)」ページ上部にある「南京錠」のアイコンボタンからのロックを解除を行うことができます。
ゲームのセキュリティがキーの入力をブロックしている
申し訳ないですが対処方法はありません
KeyToKeyが行うキーの入力監視自体をブロックしている
環境設定からフックを無効にしたら実行できる可能性があります。
ただしフックを無効にするとトリガー等の入力キャンセルができなくなります。
おことわり
コメント欄に「特定のゲームで動かない、実行できない」等のコメントを書かれても残念ながら殆どの場合何も出来ません。
特にオンラインゲームやソーシャルゲーム等はセキュリティプログラムの関係でキー入力のシミュレーションやキーボード/マウスフックなどの処理がブロックされることが多いためです。
ウイルスとして検知された場合
お使いのアンチウイルスソフトでKeyToKeyをホワイトリストに追加してください。
Microsoft Defenderの場合
- 「Windows セキュリティの設定」を開きます。
- 「ウィルスと脅威の防止」をクリックします。
- 「現在の脅威」の検知した項目を「デバイスで許可」に設定し、「操作の開始」をクリックします。

「現在の脅威」に項目が表示されない場合
「現在の脅威」にある「保護の履歴」に表示される項目から許可することができます。
フォルダを検知対象外にする
「ウィルスと脅威の防止」に戻り「ウィルスと脅威の防止の設定」にある「設定の管理」をクリックしてください。
「除外」の「除外の追加または削除」からフォルダを除外できます。
問い合わせ
問い合わせ用メールアドレス:dev.key2key@gmail.com
問い合わせによる質問について
KeyToKeyの利用方法に関する質問は以下のような場合を除き、このページのコメント欄を使用してください。
- 文字数制限などがありここに書くことができない。
- 添付ファイルがある
- どうしても知られたくないプライベートな情報がある。
コメント一覧 (524)
[
{"IsDisabled":false,"Name":"@Task","Arguments":[]},
{"IsDisabled":false,"Name":"@While","Arguments":["True"]},
{"IsDisabled":false,"Name":"Tap","Arguments":["Keys.K","60","10000","True"]},
{"IsDisabled":false,"Name":"@EndWhile","Arguments":[]},
{"IsDisabled":false,"Name":"@EndTask","Arguments":[]}
]
[
{"IsDisabled":false,"Name":"Local.Assign","Arguments":["$終点","ElapsedTime()+3600000"]},
{"IsDisabled":false,"Name":"@While","Arguments":["true"]},
{"IsDisabled":false,"Name":"@Break","Arguments":["$終点<ElapsedTime()"]},
{"IsDisabled":false,"Name":"//","Arguments":["ループの中身"]},
{"IsDisabled":false,"Name":"@If","Arguments":["TemplateMatching.TrySingle(\"A\") == True"]},
{"IsDisabled":false,"Name":"MouseMove","Arguments":["$MatchResultX","$MatchResultY","100"]},
{"IsDisabled":false,"Name":"Tap","Arguments":["Keys.T","150","80","True"]},
{"IsDisabled":false,"Name":"Wait","Arguments":["Random(30000,55000)"]},
{"IsDisabled":false,"Name":"@Else","Arguments":[]},
{"IsDisabled":false,"Name":"Tap","Arguments":["Keys.T","150","80","True"]},
{"IsDisabled":false,"Name":"Wait","Arguments":["Random(30000,55000)"]},
{"IsDisabled":false,"Name":"@EndIf","Arguments":[]},
{"IsDisabled":false,"Name":"//","Arguments":["ループの中身"]},
{"IsDisabled":false,"Name":"@EndWhile","Arguments":[]}
]
key0x2key
が
しました
[
{"IsDisabled":false,"Name":"Global.Assign","Arguments":["$マウスブロック","True"]},
{"IsDisabled":false,"Name":"@EasyFor","Arguments":["6"]},
{"IsDisabled":false,"Name":"@EasyFor","Arguments":["6"]},
{"IsDisabled":false,"Name":"Local.Assign","Arguments":["$横の座標","Input.GetCursorX()"]},
{"IsDisabled":false,"Name":"Local.Assign","Arguments":["$縦の座標","Input.GetCursorY()"]},
{"IsDisabled":false,"Name":"Global.Assign","Arguments":["$マウスブロック","True"]},
{"IsDisabled":false,"Name":"MouseClick","Arguments":["MouseButton.Right","100","90","True"]},
{"IsDisabled":false,"Name":"MouseOffset","Arguments":["0","21","15"]},
{"IsDisabled":false,"Name":"MouseClick","Arguments":["MouseButton.Left","100","90","True"]}
{"IsDisabled":false,"Name":"MouseMove","Arguments":["$横の座標+40","$縦の座標","20"]},
{"IsDisabled":false,"Name":"Global.Assign","Arguments":["$マウスブロック","False"]}
{"IsDisabled":false,"Name":"@EndFor","Arguments":[]},
{"IsDisabled":false,"Name":"MouseMove","Arguments":["$横の座標","$縦の座標+38","50"]},
{"IsDisabled":false,"Name":"Local.Assign","Arguments":["$横の座標","Input.GetCursorX()"]},
{"IsDisabled":false,"Name":"Local.Assign","Arguments":["$縦の座標","Input.GetCursorY()"]},
{"IsDisabled":false,"Name":"@EndFor","Arguments":[]},
{"IsDisabled":false,"Name":"Global.Assign","Arguments":["$マウスブロック","False"]}
]
仮想OS上で動かしているため、マクロの処理が終わるまでの時間でホストOS側でウェブページなどをみようとカーソルを動かすと、高確率で動かしている途中のカーソル位置をインプットしてしまいます。マウスブロックしているはずなのですが、原因が分かりますでしょうか。
key0x2key
が
しました
key0x2key
が
しました
key0x2key
が
しました
KeytoKeyのブロックマクロは何のプログラミング言語をもとに動いていますか?Python?
また、実行用コードを直接編集してマクロをつくることは可能ですか?
多次元リストの取得などがしたいのですが、ブロックマクロでのやり方がわからないので、この際実行用コードを直接編集して作ってやろうと思った所存です。
key0x2key
が
しました
マクロの実行途中でマクロを停止、終了させることはできないでしょうか。
key0x2key
が
しました
例えばchromeで開いているyoutubeではマクロを動かしたくないが、同じくchrome上のほかのサイトではマクロが使いたいのですが、そのような方法はございますでしょうか。
key0x2key
が
しました
このソフトをWin11でスタートアップに登録してもPC起動時に自動で起動しないのですが、正常な動作でしょうか。
タスクマネージャからスタートアップタブで確認しても有効になっているのですが・・・
何か解決方法などありましたらご教示いただけますと幸いです。
よろしくお願いいたします。
key0x2key
が
しました
この度、活用を検討しております。アドバイスを頂きたいのですが、
Windows11でドラクエⅢを実施中。クリックアシストのスクリーンキーボードを活用して入力をジョイスティックマウスで入力しております。keyTo keyをスクリーンキーボードでも反映させる方法はありますか?
key0x2key
が
しました
現在、拡張スクリプトをdeepseekの助力を得ながら書いているのですが、アクティブウィンドウを一定量左右へ動かす関数を書こうとしたとき、なぜか上手くいかず困っています。
具体的には、windowController.Bounds を設定すると、ウィンドウが移動するたびにサイズ(幅・高さ)が縮小してしまう現象が発生しています。
これが認識漏れ等の自分側の落ち度なのか何かしらのバグなのか判断がつかないため、相談させてください。
以下、deepseekに書いてもらった報告文です:
**件名**: `windowController.Bounds` 設定時にウィンドウサイズが意図せず縮小する
---
#### **再現手順**
1. アクティブウィンドウの `Bounds` を取得
2. `Bounds` の `Left` または `Top` を変更して再設定
3. **ウィンドウが移動するたびに `Width` と `Height` が減少する**
---
#### **期待する動作**
- 座標変更時に **サイズは維持される**
---
#### **実際の動作(ログ)**
```plaintext
New Position: Left=557, Top=37 | Size: 345x796
New Position: Left=574, Top=37 | Size: 331x789
New Position: Left=591, Top=37 | Size: 317x782
(移動ごとに Width/Height が減少)
```
---
#### **再現コード**
```csharp
var windowController = MakeWindowController(ActiveWindowHandle);
var bounds = windowController.Bounds;
windowController.Bounds = new Bounds(bounds.Left + 10, bounds.Top, bounds.Width, bounds.Height);
// ↑ Width/Height が変化する
```
---
#### **暫定対策**
- Windows API (`SetWindowPos`) で回避可能 → **ライブラリ側のバグと推測**
---
key0x2key
が
しました
C#スクリプトで定期的に実施したいマクロ実装しています。
大枠なお伺いになりますが、「割り当て設定(時間)」に指定した「識別キー」の使い方を教えてください。
(うまく情報を見つけることができずこちらに書き込んでみました。。。)
想像ですが、「割り当て設定(時間)」と「割り当て設定(キー/マウス)」に同じマクロを割り当てた場合に「識別キー」とかで重複起動が検出できたりするのかなと考えたりしました。
上の想像はさておき「識別キー」の活用例などをご教示いただけますと幸いです。
key0x2key
が
しました
一度トリガーに設定したボタンは、他のボタンに振り分けられない限り、データが残ってしまうようです。
例)
トリガーL2~STARTまで、Vjoyのボタン1でマッピング
↓
トリガーL2~△まで、Vjoyのボタン2でマッピングし、〇~STARTまではスキップ
このようにすると、〇~STARTまでは元のマッピングデータVjoyボタン1の記録が残ってしまいます。
このデータを初期化する方法はありますか?
key0x2key
が
しました
画像認識してクリックは動くのですが画像認識して画像A、Bが表示されたら進むという動作ができません アンチマクロ干渉は確認できませんでした。
スコアを下げたりweitを増やしたり認識範囲を広げたりしても一切反応しませんでした。
文法ミスがあればご指摘お願いします。
@ループ<条件>(true)
条件分岐<開始>(templateMatching.tryMatch("start") == true)
条件分岐<追加条件>(templateMatching.tryMatch("start") == true)
条件分岐<終了>
待機<秒>(0.4)
@ループ<条件>終了
押して離す(keys,w1000,100true)
key0x2key
が
しました
1.マウスジェスチャーで「今トリガーとなるキーを離したら何か適用されるか」を表示するナビ機能はありますか?
例えば、トリガーを押してからマウスを上に動かし離すと「A」が押され、上→右の順に動かし離すと「B」が押されるとします。
この時、トリガーを押しながら上に動かした時点では「トリガーを離したらAが押されます」といったメッセージが表示され、上→右の順に動かすと「トリガーを離したらBが押されます」と表示される機能があると分かりやすいと思うのですが、この機能はありますか?
2.類似ソフト「オートホットキー」と併用しているのですが、オートホットキーを先に起動すると正常に動作しない場合があります。
オートホットキーを後に起動する以外に対策はありますか?
よろしくお願いします。
key0x2key
が
しました
ViGEm Bus Driver 1.21.442
DirectInputのゲームパッドを使用
ブロックマクロで質問です
仮想コントローラーのマッピングの一時停止と再開にて
mapping.suspend("XINPUT0", ["RT", "LT", "B", "LeftStickX"]);
とすると
スクリプトエンジンエラー:
Error: 要求された値 'RT' が見つかりませんでした。
at Script:1135:51 -> const mappingSources = inputs.map(name => toEnum(type, name)).toClrArray(clr.KeyToKey.Enums.MappingSources);
at _setState (Script:1135:39)
at suspend (Script:1126:14)
at _E3_81_93_E3_81_93_E3_81_8B_E3_82_89_E5_AE_9F_E8_A1_8C (Script [3]:6:11)
at Script [4]:1:1
このエラーになります。
また "RT" を外すと "LT" でも同様のエラーになります。
どうすれば "RT" と "LT" の一時停止・再開が可能でしょうか?
ちなみにマッピングを手動で外せば
virtualXInput0.tap("RT", 1000, 10);
virtualXInput0.tap("LT", 1000, 10);
こちらは正常に機能します。
よろしくお願いいたします。
key0x2key
が
しました
しかし引数をうまく取得できないようです。Githubのリファレンスから下記コードを記述。
現状デフォルトの引数は($n=1, $repeat=1)に設定。
しかしマクロを実行してもFor文を通らない。
【質問】
1. 引数の値の取得方法を知りたい
2. 値確認の方法が知りたい(コンソールウィンドウやアラートなど)
int n = (int)LocalVariables["$n"];
int repeat = (int)LocalVariables["$repeat"];
for (int r = 0; r < repeat; r++)
{
Tap(Keys.K, 80, 300, true);
}
key0x2key
が
しました
アクションマクロについてお聞きしたいです。
以下質問内容
0.1秒~3秒の中でランダムに操作待機を行う。といった処理があれば教えていただきたいです。
例:A操作実行→0.3秒待機→B操作実行→0.7秒待機→C操作実行
よろしくお願いいたします。
key0x2key
が
しました
〇やりたいこと
画像認識と条件分岐、ループ
1.Aという画像をみつけたら、そこをクリックしてF1(仮)入力
2.AがなかったらBを検索、あったらそこをクリックしてF2(仮)入力
3.AもBも見つからなかったら、Cという画像をクリック
1~3をループさせたいのですが、
仮に1でAが見つかってキー入力を終えたら、再び1の手順からスタート
1のAが見つからず、2に進んだ時にBが見つかりキー入力を終えたら、再び1から
3まで進んだら再び1から というようなループを作りたいのですが、
自分でやったところ1でAが見つかっり手順を終えた後、2が始まってしまう という状態です。
ブロックマクロの構造をうまく理解できていない私の勉強不足ですが、
ご教示いただけますと幸いです。よろしくお願いいたします。
key0x2key
が
しました
条件分岐の並列実行にて待機キーを2つ使用しています、それぞれの待機キーを押す前の待機中に
画面上にて表示できないでしょうか
例えば、待機キーAを押せばこれ。待機キーBを押せばこれになるみたいな表示です
以上よろしくお願いいたします。
key0x2key
が
しました
画像を認識後、その画像をクリックのやり方をお教え頂けますと幸いです。
お手数おかけいたしますが宜しくお願いいたします
key0x2key
が
しました
コントローラーの設定で1つのボタンを押した時に、いくつかのボタンを押した事にしたいのですが適応されません。
以下は私がやった事です。
・同時押しの設定の追加、同時押しにするキーの入力
・設定したキーが押されている時の画面でボタンの指定(トリガー)
・キー割り当ての画面で割り上げる入力の追加
・追加後に保存
ステータスを見るとトリガーは設定されているようですが
ツールの入力の可視化で見ても実際のゲームでも同時押しにならず困っています。
何か操作を間違っていますでしょうか?
key0x2key
が
しました
key0x2key
が
しました
「トリガー」をコントローラーの軸の入力割合にすることはできますか。
例
「RBボタンが95%未満から95%以上になったとき」
「RBボタンが70%以上から70%未満になったとき」
「右スティックが95%以上傾いている間」
それとも、こういったことを実現するにはマクロを使う必要がありますか?
key0x2key
が
しました
コントローラーの一つのボタンに対して、複数のマクロを割り当てることはできませんか。
■やりたいこと
RTが押されたら下記の2つのマクロが同時に起動するようにしたいです。
・マクロA
RTが100%になったら9キーを押す
※この後↓でLTキーを押すまでに再度RT100%になっても9キーを押さない
LTが0%超になったら9キーを押す
・マクロB
RTが0%超になったらNum+をプレス
RTが0%になったらNum+をリリース
マクロAとBはすでにブロックマクロで作成できていますが、
C#拡張でないと実現できないならそちらで作り直す形でも大丈夫です。
key0x2key
が
しました
アプリ上で見られるC#スクリプトのヘルプを生成AIに食わせたく、
同じ内容の資料が食わせやすい形式であると助かるのですが、
Webページだったり、テキストファイルだったりで何処かにありませんかね・・・?
key0x2key
が
しました
とある3Dゲームの釣り機能で、魚がかかった時に特定の位置に表示されるアイコンを画像として読み取ってフッキングのアクション(例えば1キー)を押すというシンプルなマクロを作成したいのですが、
こういう場合の画像認識の精度はどの程度なんでしょうか?
例えばゲーム側の背景やエフェクトによってFPSにブレがあった場合に精度が下がってしまうようなことはあるんでしょうか?
key0x2key
が
しました
動作としては無変換キーを押すごとに「a」「b」「a」...と出ていてこちらは期待通りです。
もう一つ期待しているのは無変換キーを長押ししている間は「aaaaa...」のようにaキーを長押ししているのと同じ振る舞いをしてほしいのですが、無変換キーを長押ししても単押ししたように一回aとしか入力されません。
改善策ありましたらご教示お願いいたします。
https://imgur.com/a/9Cs6YR7
key0x2key
が
しました