【過去ログ】質問・要望・不具合報告
コメントするにあたってのお願い
曖昧であったり投げやりな質問はおやめください。
自分のやりたいことや現在の設定など情報を詳細に記載してください。
返信について
返信はすべて最新バージョンの内容で書きます。古いバージョンをご使用の方は事前に最新版へアップデートしてください。
マクロの質問について
現在のKeyToKeyにはC#スクリプト(マクロ)とアクションマクロの二種類のマクロがあります。
マクロの質問をする際はどちらのマクロについて聞きたいのか書いてください。
※書いてない場合は返信は行いません。
「現在の脅威」に項目表示がない場合
「現在の脅威」にある「保護の履歴」をクリックしてください。
次に「脅威がブロックされました」もしくは「脅威が検疫されました」を開いて「操作」>「復元」を行ってください。
フォルダを検知対象外にする
「ウイルスと脅威の防止」に戻り「ウイルスと脅威の防止の設定」にある「設定の管理」をクリックし「除外」の「除外の追加または削除」からフォルダの除外を行ってください。
自分のやりたいことや現在の設定など情報を詳細に記載してください。
返信について
返信はすべて最新バージョンの内容で書きます。古いバージョンをご使用の方は事前に最新版へアップデートしてください。
マクロの質問について
現在のKeyToKeyにはC#スクリプト(マクロ)とアクションマクロの二種類のマクロがあります。
マクロの質問をする際はどちらのマクロについて聞きたいのか書いてください。
※書いてない場合は返信は行いません。
よくある質問
Q.他のアプリの入力で各種割り当て(マクロ等)を実行したい
初期設定では利便性を考慮してアプリからのキー入力によってキー割り当てやマクロ割り当てなどが実行されないようロックされています。
このロックを解除するには割り当て設定(キー/マウス)の上部にある南京錠のアイコンから入力イベントのロックを解除すると実行できるようになります。
Q.特定のゲームにおいてマクロやキー入力が正常に動かない(他のアプリでは動く)
考えられること:
特にオンラインゲームやソーシャルゲーム等はセキュリティプログラムの関係でキー入力のシミュレーションやキーボード/マウスフックなどの処理がブロックされることが多いからです。
初期設定では利便性を考慮してアプリからのキー入力によってキー割り当てやマクロ割り当てなどが実行されないようロックされています。
このロックを解除するには割り当て設定(キー/マウス)の上部にある南京錠のアイコンから入力イベントのロックを解除すると実行できるようになります。
Q.特定のゲームにおいてマクロやキー入力が正常に動かない(他のアプリでは動く)
考えられること:
アプリで実行が許可されていない
環境設定からアプリの実行が許可されているか確認してください
ゲームのセキュリティがキーの入力をブロックしている
この場合、申し訳ないですが対処方法はありません
KeyToKeyが行うキーの入力監視自体をブロックしている
環境設定からフックを無効にしたら実行できる可能性があります。
ここのコメント欄に「ゲームで動かない、実行できない」等のコメントを書かれても残念ながら殆どの場合何も出来ません。環境設定からアプリの実行が許可されているか確認してください
ゲームのセキュリティがキーの入力をブロックしている
この場合、申し訳ないですが対処方法はありません
KeyToKeyが行うキーの入力監視自体をブロックしている
環境設定からフックを無効にしたら実行できる可能性があります。
特にオンラインゲームやソーシャルゲーム等はセキュリティプログラムの関係でキー入力のシミュレーションやキーボード/マウスフックなどの処理がブロックされることが多いからです。
ウイルスとして検知された場合
お使いのアンチウイルスソフトでKeyToKeyをホワイトリストに追加してください。
「Microsoft Defender」の場合は「Windows セキュリティの設定」を開き、「現在の脅威」の検知した項目を「デバイスで許可」に設定し、「操作の開始」を行ってください。
「Microsoft Defender」の場合は「Windows セキュリティの設定」を開き、「現在の脅威」の検知した項目を「デバイスで許可」に設定し、「操作の開始」を行ってください。
「現在の脅威」に項目表示がない場合
「現在の脅威」にある「保護の履歴」をクリックしてください。
次に「脅威がブロックされました」もしくは「脅威が検疫されました」を開いて「操作」>「復元」を行ってください。
フォルダを検知対象外にする
「ウイルスと脅威の防止」に戻り「ウイルスと脅威の防止の設定」にある「設定の管理」をクリックし「除外」の「除外の追加または削除」からフォルダの除外を行ってください。
連絡先
コメント一覧 (153)
一応、自分の環境では入力の可視化で物理コントローラーの入力と仮想コントローラーがリンクしている事は確認しています。
そこで一点、製作者様の環境でsteamにkeytokeyの仮想コントローラーは認識されるか、可能であれば確認頂けると幸いです。
現時点でも、C#スクリプトによるキーボード操作による自動操作で目的を果たせるため、何が何でもという訳ではないです。
key0x2key
が
しました
もし可能であれば、組み方を教えていただきたいです。
key0x2key
が
しました
どうしたらKeyToKeyのウィンドウを再起動することができますか?
key0x2key
が
しました
key0x2key
が
しました
正確に認識させるコツなどありますか?
key0x2key
が
しました
画像a、画像b、画像c、画像dとそれぞれ違う4つの画像があって
aがヒットしたら1、bがヒットしたら2、cがヒットしたら3、dがヒットしたら4、それ以外は0の処理をする
といったようなことはできますか?
key0x2key
が
しました
C#スクリプトについて伺います。
C#スクリプト内で相対パスを扱う場合、KeyToKeyのインストール先がカレントパスになっているかと思います。
例えば「PROFILE1」というプロファイルを新規に作成し、その中に「common.csx」と「class.csx」というスクリプトを作成したとします。
その上で「common.csx」に共通用の関数を記述して「class.csx」側で呼び出したい場合には、現在は「class.csx」の先頭に相対パス指定で #load "Scripts\PROFILE1\common.csx" のように記述して読み込ませています。
基本的な動作としてはこれで問題ないのですが、この方法だとプロファイル「PROFILE1」をコピーしてテスト用などとして「PROFILE2」を作成したときに、参照先が元の「PROFILE1」側のファイルになってしまいます。
「PROFILE2」にコピーした後にパスの該当部分を修正すれば期待した動作はしますが箇所が多いと修正も大変です。
そこでの質問なのですが、現在のプロファイルのソースコードが置かれているディレクトリ自体を予めカレントにするプラグマのようなものや、
あるいは #load "Scripts\%CURRENT_PROFILE_DIR%\common.csx" のような感じでリテラルに埋め込む形で使える環境変数のようなものはありますでしょうか?
もしくは何か別のアプローチでも構わないのですが、少なくとも上記の方法では保守性が低すぎて問題に感じております。
スマートな解決策をご存じの方いらっしゃいましたらご教授いただけますと幸いです。
もしC#の仕組みとしてそもそもの正解が存在していた等ありましたら不勉強につきご容赦下さい。
key0x2key
が
しました
プロファイルの自動切り替え機能についてなのですが、指定したプロセスがアクティブな状態でのみ、任意のプロファイルに切り替えておくということはできるでしょうか。
具体的には
ABC.exeに切り替える。
プロファイルがABC.mcrに自動で切り替わる。
その他プロセス(Chromeやデスクトップ画面、エクスプローラーなど)に切り替える。
KeytoKeyが自動で無効化される or Nosetting.mcr等の未設定プロファイルに自動で切り替わる。
というような挙動を求めています。
key0x2key
が
しました
いつもお世話になっております。
自動切り替え機能を愛用しているのですが質問があります。
私は自動切り替え機能を様々なアプリで使用するため、プロファイルの行き来する頻度が多いです。
そうなるとむしろ『指定してないアプリ』の時は『このプロファイルを使いたい』という時が多々あります。
そのため、指定してないアプリの時に自動でプロファイルを切り替える機能があるか、または他の解決方法はありますか?
流石に全てのアプリを対象に指定することはとても無理があります。
よって指定してないアプリの時はこのプロファイルを使うということが可能なのか。
もしくは『特定のアプリでのみ実行を許可』による『現在表示されているウィンドウでは実行できません』という状態時、
つまりプロファイルが無効の時に、別のプロファイルに切り替える方法がなどといった別の解決策があれば教えてほしいです。
key0x2key
が
しました
(編集とログを取るモードどちらでも反応なし)
(MediaPreviousTrack等)
(2020年9月頃のkeytokeyでは反応することを確認済みです)
key0x2key
が
しました
68のコメントにちかい質問となります。
アクションマクロで、画像a、画像b、画像c、違う画像があり
aがヒットしたら1の処理、bがヒットしたら2の処理、cがヒットしたら3の処理、画像が見つかるまで繰り返すアクションマクロはできますでしょうか。
key0x2key
が
しました
Xinput Device 0で接続はロジクールのF310r
コントローラーの方もXinputにしてあります
接続をXinput Device 0からController(gamepad F310)にして設定したらスティックも反応しました
仕様が変わったのかちょっと気になりました
key0x2key
が
しました
アクションマクロに関する質問です。F1キーを押すとWキーとAキーが300ms同時押しされるマクロを使いたいと思いましたが、うまくマクロを作ることができませんでした。解決策をお教えいただけますか?
key0x2key
が
しました
の項目があると助かります。
編集エリアでのサジェスチョンから、以下の要領で使えそうな事は推測できました。
var c = VirtualXInput.GetController(userIndex: 0);
c.LeftStick.SetValue(horizontal:0.5,vertical:0.5);
c.LeftStick.SetValue(0.5,); //水平への設定になる
c.LeftStick.SetValue(vertical:0.5);
key0x2key
が
しました
いつもお世話になっております。
バージョンが 220331 以降から【F24】【mediastop key】 といった特殊なキーが
同時押しの設定時に割り当てが不可能になっています。仕様なのかバグなのかわからないのでお聞きしたいです。
■詳細
設定➡割り当て設定(キーボード/マウス)➡同時押しの設定を追加する➡MediaStop key 押下 ➡ 反応がない
22031前はMediaStop keyを押下したら追加されていました。尚、【キーを追加】からMediaKeyを追加することもできなくなっております。
F24に関しては22031前のバージョンでは荒業ですが
なにかしらのキー(仮にAkeyとします)に【キーを割り当てる】からF24を割り当てる➡同時押しの設定を追加する➡
Akey 押下
という工程によりF24keyを割り当てることができました。
■様々なバージョンで試した結果
22031以降(22031を含む)のバージョン全てに利用不可
22031前のバージョン利用可能
key0x2key
が
しました
key0x2key
が
しました
色々試してたら解決しました!
key0x2key
が
しました
素敵なソフトを開発いただきありがとうございます。
下記の件につきまして、おてすきの際にご回答いただけますと幸いです。
▼右スティックのみ認識しない
「コントローラーのセットアップを開始」→「右スティックが正しく動作しているか確認してください」の箇所で、
緑の●が左上に固定されており、上下左右に動かしても動かない状況です。
その後「動いていない」を選択し、右スティックを左右に入力しても正しく認識されません。
コントローラーの故障かと思い、Joytokey , antimicro , REWASDにて
右スティックの動作を検証したのですが、左上への入力に固定されることなく動作しております。
こちらの解消方法につきまして、ご存知でしたらご教示いただけないでしょうか。
▼利用状況
・コントローラー:Switch純正のプロコントローラー
・接続方法 :Bluetooth接続 / 有線接続(どちらも試しましたが同様の状態です)
以上でございます。
宜しくお願い申し上げます。
key0x2key
が
しました
素人な質問ですが回答いただけると幸いです
アクションマクロにて
同じ画像の個数を認識して、開始前より多くなればループ終了というマクロを組みたいのです
ループするが止まらなかった失敗マクロです
[
{"IsDisabled":false,"Name":"Local.Assign","Arguments":["$識別キー","\"全面\""]},
{"IsDisabled":false,"Name":"@If","Arguments":["TemplateMatching.TryMatches($識別キー) == True"]},
{"IsDisabled":false,"Name":"//","Arguments":["画像が見つかったら、見つかった数を取得して変数に代入します。"]},
{"IsDisabled":false,"Name":"Variable.Assignment","Arguments":["$初期数","TemplateMatching.GetResultCount($識別キー)"]},
{"IsDisabled":false,"Name":"@Else","Arguments":[]},
{"IsDisabled":false,"Name":"//","Arguments":["画像が見つからなかったら"]},
{"IsDisabled":false,"Name":"Variable.Assignment","Arguments":["$初期数","0"]},
{"IsDisabled":false,"Name":"@EndIf","Arguments":[]},
{"IsDisabled":false,"Name":"@EasyFor","Arguments":["20"]},
{"IsDisabled":false,"Name":"@If","Arguments":["TemplateMatching.GetResultCount($識別キー)>$初期数"]},
{"IsDisabled":false,"Name":"@Break","Arguments":["True"]},
{"IsDisabled":false,"Name":"@Else","Arguments":[]},
{"IsDisabled":false,"Name":"リロード","Arguments":[]},
{"IsDisabled":false,"Name":"Wait","Arguments":["200"]},
{"IsDisabled":false,"Name":"@EndIf","Arguments":[]},
{"IsDisabled":false,"Name":"@EndFor","Arguments":[]}
]
よろしくお願い致します。
key0x2key
が
しました
早速の返信ありがとうございます
一瞬で解決しました。本当にありがとうございました
key0x2key
が
しました
以下のようなマクロをスタートアップマクロとして登録し、ゲームパッドの操作イベントでターゲットアプリを探しています。
ウィンドハンドルを取得できなかったとき、
Process.GetProcessesByName(targetName)[0].MainWindowHandle
が IntPtr.Zero を返す仕様との事ですが、試してみると次の行へ進まず、ラムダ式の実行が途中で終了してしまうように見えました。
実は今回やりたい事はまさに「ラムダ式を途中で終了させる」だったので全く困っていませんが、
後に「立ち上がっていないターゲットアプリを新たに起動して」と、したくなったときに困る予感があります。
何か手順を間違えているとか、利用できる環境が限られているとか、HowToがあれば教えていただけますでしょうか。
ControllerStateChanged += (sender, e) =>{
if(false == e.IsPressed){
return;
}
var targetName="hoge";
var targetPath=@"c:\hoge.exe";
var windowHandle = Process.GetProcessesByName(targetName)[0].MainWindowHandle;//ハンドルの取得
if(windowHandle==IntPtr.Zero){
System.Diagnostics.Process.Start(targetPath);
//Wait(5000);
windowHandle = Process.GetProcessesByName(targetName)[0].MainWindowHandle;
if(windowHandle==IntPtr.Zero){
return;
}
}
var windowController = MakeWindowController(windowHandle);
windowController.Activate();
}
Wait();
key0x2key
が
しました
現在使用しているゲームパッドのボタンを押したり、離したりを制御することは可能なのでしょうか?
例えばゲーム中で十字キーを←に入力している際にゲームパッドのR1ボタンを押すと、
入力入れっぱなしにしている←キーが一時的に無効になり、マクロの方で→キーが押されるといった処理です。
key0x2key
が
しました
アクションマクロを使っているのですが、
画像認識の際に、検出された画像のX位置やY位置を取得する方法はありますでしょうか?
検出範囲のXを0~1920に設定し画面を常時監視。
画像Aが出現した際に、画像Bが出現しているかどうか、そして画像Aと画像Bの距離をピクセル数で取得し、
一定の範囲内なら条件1へ分岐、一定の範囲を超えるならば条件2へ分岐、
という処理について試行錯誤している状況です。
また、画像認識に使用する画像についてですが、32x32のものを使用しています。
サイズが大きくなれば重くなるのは当然かと思いますが、
2の乗数だったり4の倍数にしておいた方が良いといったコツはありますか?
(OpenCVについて勉強不足です)
key0x2key
が
しました
Offset() でマウスカーソルを移動させるとき、windowsか何かが加工を施すようでマウスカーソルが思った通りに動きません。
windows→マウスのプロパティ→ポインターオプション→ポインターの速度を選択する
windows→マウスのプロパティ→ポインターオプション→ポインターの精度を高める
の2つの設定が関係しているようにも見えます。
「C#スクリプトに関するヘルプ」にこの点が明示暗示されていない事から、もしかしたら手元の環境限定(おま環)なのかも知れません。
例)
Offset(1,0); Offset(-1,0); //1ドット右に移動させて1ドット左に移動させる意図ですが、元の座標に戻らない事がしばしばあります。つまり1ドット移動させられません。
Offset(100,0); //100ドット右に移動させる意図ですが、1回で400ドットぐらい右に移動してしまいます。
Offset(100,0); Offset(-100,0); //これも元の座標に戻らず、画面左上を原点とする粗い(400ドットぐらいの?)格子点への移動を繰り返すようです。
今回は、生の数値がアプリに届いた方が嬉しいケースでしたから、
var(x, y)=GetCursorPosition();
Move(x+100, y);
などとして対応しました。
この方法でしたら、1ドットでも100ドットでも指定通りにマウスカーソルが移動してくれました。
key0x2key
が
しました
終了させるために閉じるボタンを押して終了させても
右下の所にアイコンが残ることがあります
そこからも終了させることができるのですがなんか気になってしまいます
100%起こるわけでもないので再現方法はわかりませんがこれはどうしたらいいのでしょうか?
key0x2key
が
しました
メインプロファイルの有効無効のキー設定はどこで行えばよいのでしょうか
以前は環境設定からだったと思うのですが
key0x2key
が
しました
わかりました
key0x2key
が
しました
なければ、今後そういうものの実装の可能性はありますでしょうか。
また、上記のようなことをしたい場合にはこういう方法があるというアイデアがありましたらご教授ください。
key0x2key
が
しました
調べるための取っ掛かりが分からず、困り果ててしまっている状態です。
キー一覧などはこちらのページで見つけられたのですが、アクションマクロで記述するところの
@if(Input.GetControllerButtonState("DpadDown")
といったような条件分岐式はどのように書けば良いのでしょうか?
大変初歩的な質問で恐縮です。
key0x2key
が
しました
[
{"IsDisabled":false,"Name":"@While","Arguments":["TemplateMatching.TrySingle(\"A\") == False && TemplateMatching.TrySingle(\"B\") == False"]},
{"IsDisabled":false,"Name":"Wait","Arguments":["1000"]},
{"IsDisabled":false,"Name":"@EndWhile","Arguments":[]}
]
だとうまく動きません。ご教示ください。また、この条件に画像Cも同様に加えることはできますか?(画像AもBもCも全てない場合のみ待機でループする)
key0x2key
が
しました
BlockMouseMovement();
Move(100,100);
UnblockMouseMovement();
でマウスカーソルが動かなくなったのは何かが変わったと考えてよろしいでしょうか?
Ver.2022/05/25では動いていたのがVer.2022/06/21で動かなくなったように感じます。
入力の監視方法→マウス→フック
オプション→「アプリによる入力」に対する処理をスキップする→チェック無し
このどちらかの設定を変更すれば機能するようなので、実用上の問題はありません。
key0x2key
が
しました
KeytoKeyのマクロ自身のアクションで押したキーのステータスを拾うためのメソッドはありますでしょうか?
key0x2key
が
しました
MMOゲーム ラグナロクオンラインにて、F5キーに「F5を1回押し、左クリックを1回。これを押している間連射する」というマクロを
アクションリスト
・1 押して離す(Key.F5.10.10.True)
・2 マウスのボタンを押して離す(MouseButton.Left.10.10True)
トリガーの方で繰り返し(有効)
とやってみたのですが、いざ動かすと左クリックが反応しないのです。
ステータスの方は、押したときに(実行中)となるのですが・・・
他に設定する箇所があるのでしょうか?
それともこのゲームでは動かないのでしょうか?
よろしくお願いいたします。
key0x2key
が
しました
マウスカーソルをマクロ実行時の位置から、モニター(1920×1080)の中心に点対称の位置に移動させたいのですが、できますでしょうか?
key0x2key
が
しました
質問させていただきたいのですが
あるポイントXに画像A、画像B、画像Cがランダムに出現し出現時間もランダムです。
そのポイントXを監視し続け画像認識により
画像Aが出たらキーボードAを押す
画像Bが出たらキーボードBを押す
画像Cが出たらキーボードCを押す
というようなマクロを組みたいのですが
常時監視するためそれぞれ3つのマクロを例えば「常時監視」という名の1つのマクロに放り込み
その「常時監視」というマクロを
「トグルモードON」「連射を有効にするON」にして実行させてます。
しかしこのやり方だと画像Aが出たら次の画像に切り替わるまでキーボードAを連打し続けることになって
しまいます。
やりたいこととしては画像Aが出たらキーボードAを1回だけ押し次の画像が出るまで何もしない状態にしたいです。
そして次に画像Cが出たらキーボードCを一回だけ押しまた待機するような感じです。
アクションマクロで作成しております。
何か方法があればご教授願いたいです。
よろしくお願いいたします。
key0x2key
が
しました