質問 2022年02月23日 【過去ログ】質問・要望・不具合報告 ⚠️コメントする前に読んで下さい⚠️ 曖昧であったり投げやりな質問はおやめください。 自分のやりたいことや現在の設定など情報を詳細に記載してください。 コメント一覧 (898) 前のコメントを読み込むためにはJavaScriptを有効にしてください。 読み込み中 799. 名無しさん 2023年09月30日 18:45 >>798 こんな感じでしょうでしょうか。 [ {"Name":"Local.Assign","Arguments":["$timeEndA","GetTickCount()+10000"]}, {"Name":"Local.Assign","Arguments":["$isFoundA","false"]}, {"Name":"@While","Arguments":["GetTickCount()<$timeEndA"]}, {"Name":"@If","Arguments":["TemplateMatching.TryMatch(\"画像A\")"]}, {"Name":"Local.Assign","Arguments":["$isFoundA","true"]}, {"Name":"@Break"}, {"Name":"@EndIf"}, {"Name":"@EndWhile"}, {"Name":"@If","Arguments":[" ! $isFoundA"]}, {"Name":"Local.Assign","Arguments":["$isFoundB","false"]}, {"Name":"@While","Arguments":["true"]}, {"Name":"@If","Arguments":["TemplateMatching.TryMatch(\"画像B\")"]}, {"Name":"Local.Assign","Arguments":["$isFoundB","true"]}, {"Name":"@Break"}, {"Name":"@EndIf"}, {"Name":"@EndWhile"}, {"Name":"@EndIf"}, {"Name":"Wait","Arguments":["300"]}, {"Name":"Tap","Arguments":["Keys.LButton"]}, ] 0 key0x2key がしました 800. 名無しさん 2023年09月30日 22:39 >>799 ありがとうございます。 やりたいことができました。 0 key0x2key がしました 801. 名無しさん 2023年10月01日 01:40 >>799 再度すいません。 先ほどのマクロを運用していたのですが、画像Bの処理で画像Bが見つからなかった場合にマクロが止まってしまいます。 見つからなかった場合は末尾の左クリックに繋げたいです。 どのように修正すればいいでしょうか? 0 key0x2key がしました 802. 名無しさん 2023年10月01日 15:41 >>801 もうすこし詳しくお願いします。 0 key0x2key がしました 803. 名無しさん 2023年10月01日 17:51 >>802 上記マクロで画像Bが一致した時には条件分岐が終了します。ですが、不一致・見つからなかった場合にはマクロが実行中のまま止まっています。画像Bが見つからなかったときの処理として末尾の左クリックに繋げたいと考えています。 0 key0x2key がしました 804. 名無しさん 2023年10月01日 18:53 >>803 見つかっても左クリック 見つからなくても左クリック という仕様では、画像Bを見つける意味が無いと思います。 0 key0x2key がしました 805. 名無しさん 2023年10月01日 19:46 >>804 書き方が悪かったです。画像Bが一致したときは画像Bを左クリックしたのちに再度左クリックしています。 この時に画像Bがなければ画像認識処理をスキップして左クリックを押したいです。 現在使っているマクロになります。 [ {"IsDisabled":false,"Name":"Local.Assign","Arguments":["$timeEndA","GetTickCount()+10000"]}, {"IsDisabled":false,"Name":"Local.Assign","Arguments":["$isFoundA","false"]}, {"IsDisabled":false,"Name":"@While","Arguments":["GetTickCount()<$timeEndA"]}, {"IsDisabled":false,"Name":"@If","Arguments":["TemplateMatching.TryMatch(\"A\")"]}, {"IsDisabled":false,"Name":"Local.Assign","Arguments":["$isFoundA","true"]}, {"IsDisabled":false,"Name":"@Break","Arguments":[]}, {"IsDisabled":false,"Name":"@EndIf","Arguments":[]}, {"IsDisabled":false,"Name":"@EndWhile","Arguments":[]}, {"IsDisabled":false,"Name":"@If","Arguments":[" ! $isFoundA"]}, {"IsDisabled":false,"Name":"Local.Assign","Arguments":["$isFoundB","false"]}, {"IsDisabled":false,"Name":"@While","Arguments":["true"]}, {"IsDisabled":false,"Name":"@If","Arguments":["TemplateMatching.TryMatch(\"B\")"]}, {"IsDisabled":false,"Name":"Local.Assign","Arguments":["$isFoundB","true"]}, {"IsDisabled":false,"Name":"MouseMoveAndClick","Arguments":["MouseButton.Left","$MatchResultX","$MatchResultY","0","0","800","True"]}, {"IsDisabled":false,"Name":"@Break","Arguments":[]}, {"IsDisabled":false,"Name":"@EndIf","Arguments":[]}, {"IsDisabled":false,"Name":"@EndWhile","Arguments":[]}, {"IsDisabled":false,"Name":"@EndIf","Arguments":[]}, {"IsDisabled":false,"Name":"Wait","Arguments":["300"]}, {"IsDisabled":false,"Name":"Tap","Arguments":["Keys.LButton","0","0","True"]} ] 0 key0x2key がしました 806. 名無しさん 2023年10月01日 21:57 >>805 こんな感じでどうでしょう。(前のマクロに則したクドい書き方バージョンです) [ {"Name":"Local.Assign","Arguments":["$timeEndA","GetTickCount()+10000"]}, {"Name":"Local.Assign","Arguments":["$isFoundA","false"]}, {"Name":"@While","Arguments":["GetTickCount()<$timeEndA"]}, {"Name":"@If","Arguments":["TemplateMatching.TryMatch(\"A\")"]}, {"Name":"Local.Assign","Arguments":["$isFoundA","true"]}, {"Name":"@Break"}, {"Name":"@EndIf"}, {"Name":"@EndWhile"}, {"Name":"@If","Arguments":[" ! $isFoundA"]}, {"Name":"@If","Arguments":["TemplateMatching.TryMatch(\"B\")"]}, {"Name":"MouseMoveAndClick","Arguments":["MouseButton.Left","$MatchResultX","$MatchResultY","0","0","800","True"]}, {"Name":"@EndIf"}, {"Name":"@EndIf"}, {"Name":"Wait","Arguments":["300"]}, {"Name":"Tap","Arguments":["Keys.LButton"]}, ] 0 key0x2key がしました 807. 名無しさん 2023年10月01日 22:03 >>806 これ以外に条件分岐が増えないのであればこちらの方が良いかも知れません(シンプルなバージョンです) [ {"Name":"Local.Assign","Arguments":["$timeEndA","GetTickCount()+10000"]}, {"IsDisabled":true,"Name":"Local.Assign","Arguments":["$isFoundA","false"]}, {"Name":"@While","Arguments":["GetTickCount()<$timeEndA"]}, {"Name":"@If","Arguments":["TemplateMatching.TryMatch(\"A\")"]}, {"IsDisabled":true,"Name":"Local.Assign","Arguments":["$isFoundA","true"]}, {"Name":"@If","Arguments":["TemplateMatching.TryMatch(\"B\")"]}, {"Name":"MouseMoveAndClick","Arguments":["MouseButton.Left","$MatchResultX","$MatchResultY","0","0","800","True"]}, {"Name":"@EndIf"}, {"Name":"@Break"}, {"Name":"@EndIf"}, {"Name":"@EndWhile"}, {"Name":"Wait","Arguments":["300"]}, {"Name":"Tap","Arguments":["Keys.LButton"]}, ] 0 key0x2key がしました 808. 名無しさん 2023年10月02日 11:58 >>807 大変有り難うございました。 0 key0x2key がしました 809. 名無しさん 2023年10月08日 19:18 アクションマクロについて質問です。 同時押しキーにSpaceキーを設定し、Wキーが押された際Wキーを連打するマクロを作成しました。 Spaceキー入力後にWキーを入力するとしっかり連打されるのですが、 その状態のままSpaceキーのみを離した場合、Wキーの連打状態が維持されてしまいます。 Spaceキーのみを離した場合(Wキーは押したままの状態)に、連打状態が解除されて W押しっぱなしの状態にすることは可能でしょうか? 0 key0x2key がしました 810. 名無しさん 2023年10月09日 15:19 >>809 こんな感じでどうでしょうか。 アプリによってはSpaceキーを離しても連打が続いてしまいますので。そのときはコメントお願いします。 [ {"Name":"@While","Arguments":["Input.GetTriggerState()"]}, {"Name":"@If","Arguments":["Input.GetKeyState(Keys.Space)"]}, {"Name":"Tap","Arguments":["Keys.W","17","17"]}, {"Name":"@Else"}, {"Name":"Down","Arguments":["Keys.W","50"]}, {"Name":"@EndIf"}, {"Name":"@EndWhile"}, {"Name":"Up","Arguments":["Keys.W"]}, ] 0 key0x2key がしました 811. 名無しさん 2023年10月09日 17:09 >>810 試してみたところ解決いたしました。 ありがとうございました。 同様の事をASDキーにも適応してみたのですが、稀にすべてのキーを離しても AキーやDキーが押したままの状態?(ゲームの移動に使用していて、1方向に動き続ける状態)になってしまうことがあります。 こちらは発生条件がわかっていませんが、なにか解決策等ございますでしょうか? 0 key0x2key がしました 812. 名無しさん 2023年10月09日 17:33 >>811 とても場当たり的ですが、最後の「離す」を2回にしてみました。 再び押され放しが発生したときは、KeyToKeyのコンソール出力を確認してみていただけますか。何らかエラーメッセージが表示されているかも知れません。 [ {"Name":"Local.Assign","Arguments":["$連打キー","Keys.W"]}, {"Name":"UseHighPrecisionWait","Arguments":["True"]}, {"Name":"@While","Arguments":["Input.GetTriggerState()"]}, {"Name":"@If","Arguments":["Input.GetKeyState(Keys.Space)"]}, {"Name":"Tap","Arguments":["$連打キー","17","17"]}, {"Name":"@Else"}, {"Name":"Down","Arguments":["$連打キー","50"]}, {"Name":"@EndIf"}, {"Name":"@EndWhile"}, {"Name":"Up","Arguments":["$連打キー","8"]}, {"Name":"Up","Arguments":["$連打キー","8"]}, ] 0 key0x2key がしました 813. 名無しさん 2023年10月09日 19:24 >>812 早速対応していただきありがとうございます。 検証してみたところ、頻度は減ったような気はしますが、 まだ稀に発生してしまいます。 エラーの方も、読み込みエラーなしとなっております。 入力されっぱなしになっているキーをもう一度入力すると入力されっぱなしが解除されるため 以下のようにして再び検証してみます。 [ {"Name":"Local.Assign","Arguments":["$連打キー","Keys.W"]}, {"Name":"UseHighPrecisionWait","Arguments":["True"]}, {"Name":"@While","Arguments":["Input.GetTriggerState()"]}, {"Name":"@If","Arguments":["Input.GetKeyState(Keys.Space)"]}, {"Name":"Tap","Arguments":["$連打キー","17","17"]}, {"Name":"@Else"}, {"Name":"Down","Arguments":["$連打キー","50"]}, {"Name":"@EndIf"}, {"Name":"@EndWhile"}, {"Name":"Up","Arguments":["$連打キー","8"]}, {"Name":"Down","Arguments":["$連打キー","8"]}, {"Name":"Up","Arguments":["$連打キー","8"]}, ] 0 key0x2key がしました 814. 名無しさん 2023年10月09日 22:41 >>813 上のようにしてもダメでした。 「NohBoard」というキー入力を可視化できるソフトを使用してみました。 キーボードの画像が表示され、入力されているキーが黒から白に代わるソフトなのですが、 キーが入力されたまま(キャラクターが動き続ける)の状態のときは 「NohBoard」のキーの色が黒(未入力状態)でした。 これはkeytokeyとは関係ない不具合ような気がしてきました。 入力されっぱなしになっているキーをもう一度入力することで、入力されっぱなしが解除されるのですが {"Name":"Down","Arguments":["$連打キー","8"]}, {"Name":"Up","Arguments":["$連打キー","8"]}, を末尾に追加するで合っていますでしょうか? プログラムには疎いもので、申し訳ございません。 0 key0x2key がしました 816. 名無しさん 2023年10月10日 21:30 >>814 エラーが出ていないとなると原因が絞り辛いですね。 幾つか、 ・押し放しになったとき、アクションマクロは最後まで実行されて停止終了(メインウィンドウのステータスがZZZ表示)しているのか ・17ms、8msなどを、少し長めに変更したら押し放しは減るのか ・マクロの割り当てを「Spaceキーとの同時押し」でなく「WASD単体押し」にしたらどうなるのか(Spaceキーの判定はマクロ内でも処理しているので連打などの動作は変わらないはずです) あたりが気になります。 >末尾に追加する それでOKです。なお、以下の2つのマクロは全く同じ動作をします。 [ {"Name":"Tap","Arguments":["$連打キー","8","8"]}, ] [ {"Name":"Down","Arguments":["$連打キー","8"]}, {"Name":"Up","Arguments":["$連打キー","8"]}, ] 0 key0x2key がしました 820. 名無しさん 2023年10月11日 19:10 >>816 それぞれ試してみました。 >・押し放しになったとき、アクションマクロは最後まで実行されて停止終了(メインウィンドウのステータスがZZZ表示)しているのか 押し放しが発生したとき、マクロの処理は終了し、メインウィンドウのステータスはzzzとなっていました。 >・17ms、8msなどを、少し長めに変更したら押し放しは減るのか それぞれの時間を倍に設定してみました。 もともとの頻度が稀だったため正確にはわかりませんが、あまり変わらないような気がします。 逆に短くしたり試してみたいと思います。 >・マクロの割り当てを「Spaceキーとの同時押し」でなく「WASD単体押し」にしたらどうなるのか(Spaceキーの判定はマクロ内でも処理しているので連打などの動作は変わらないはずです) 同時押しの設定を削除し、マクロ内のみの処理にしてみましたが、相変わらず発生してしまいます。 様々なアイディアをいただき、ありがとうございます。 引き続き検証してみます。 0 key0x2key がしました 821. 名無しさん 2023年10月11日 19:57 >>820 検証してみた結果、1つ判明いたしました。 どうやら押しっ放し状態は、spaceキーを押さずにWキーを押した際に発生しているようです。 >>・押し放しになったとき、アクションマクロは最後まで実行されて停止終了(メインウィンドウのステータスがZZZ表示)しているのか >押し放しが発生したとき、マクロの処理は終了し、メインウィンドウのステータスはzzzとなっていました。 上記のように書きましたが、キーボードへの割り当ての際に「トリガーを離したときに実行中のマクロを終了させる」にチェックが入っていたため、ステータスはzzzとなっていました。 チェックを外して試したところ、押し放しが発生した際は、ステータスは実行中となっていました。 0 key0x2key がしました 822. 名無しさん 2023年10月11日 22:58 >>821 >「トリガーを離したときに実行中のマクロを終了させる」 これにチェックが入っていると、どのバージョンのマクロでも「必中で」押し放しが発生してしまいます。というのも、Down()に対応して必要なUp()を実行せずに途中でマクロが終了してしまうためです。 こちらでも何度か「稀におきる」押し放しを再現できました。やはりZZZでなく「実行中」となっていましたね。 それに基づいてループ条件を変更してみました。 [ {"Name":"Local.Assign","Arguments":["$連打キー","Keys.W"]}, {"Name":"@While","Arguments":["Input.GetPhysicalState($連打キー)"]}, {"Name":"@If","Arguments":["Input.GetKeyState(Keys.Space)"]}, {"Name":"Tap","Arguments":["$連打キー","17","17"]}, {"Name":"@Else"}, {"Name":"Down","Arguments":["$連打キー","50"]}, {"Name":"@EndIf"}, {"Name":"@EndWhile"}, {"Name":"Up","Arguments":["$連打キー"]}, ] 0 key0x2key がしました 823. 開発者 2023年10月12日 01:17 >>822 途中から失礼します。Space+Wにマクロを割り当てた場合にWが押されっぱなしになるという問題であってますか? 以下の手順で再現できたかもしれないので報告しておきます(以下はマクロの入力ではなく物理キーボードの入力です) 1.W押す 2.Space押す 3.W離す 4.Space離す こちらはトリガーの入力キャンセルに関する不具合のようです。 まだ具体的な調査はできていませんが「トリガーの入力をキャンセルする」をオフにすることで回避できることを確認しました。 0 key0x2key がしました 826. 名無しさん 2023年10月12日 19:10 >>823 開発者様 822様のマクロを導入し、やりたいことが出来るようになりました。 素晴らしいソフトをありがとうございます。 0 key0x2key がしました 825. 名無しさん 2023年10月12日 19:07 >>822 頂いたマクロで試してみたところ正常に動作し、現在押し放しの発生は確認できておりません。 ご助力いただき、ありがとうございました。 とても助かりました。 0 key0x2key がしました 827. 名無しさん 2023年10月12日 20:45 >>823 対応いただきありがとうございます。 開発者さんが触ると原因のあぶり出しが早いですね。 参考に、 同時押しにマクロを割り当てたとき: 押し放しが発生するとマクロが終了せず、当該のトリガーキーやSpaceキーをもう一度叩くとマクロが終了しているようでした。言い換えると、Wが押し放しになったときは割り当てていないE、R、Tなどを押してもマクロが終了せず、WキーかSpaceキーでのみマクロが終了したという事です。 Wキーの単押しにマクロを割り当てたとき: それでも100回に一度ぐらいの割合でマクロが終了しない現象が発生しました。恐らく、InputGetTriggerState()がtrueに固定されていたのだと思います。これもWキーをもう一度押すとマクロが終了しました。 記憶が定かでないのですが、もしかしたらSpaceキーでも終了したような気もします。「トリガーには関係無いのに」と印象に残りましたが勘違いだったかも知れません。 ※※キーボードイベントを触る常駐ソフトを3重に起動しているため、それらの相互作用で発生している可能性もあり、あくまで参考程度の報告です。 >>825 無事動いたようで良かったです。 最後まで粘り強く検証していただきこちらこそありがとうございます。 0 key0x2key がしました 815. 名無しさん 2023年10月10日 17:30 アクションマクロについて質問です。 Eキーが押されている間ループするようにしたい場合、条件式にはどのように書いたらいいのでしょうか? githubの使用方法にはこの辺りの情報が無くてわからなかったので教えていただけたら助かります。 また、参考にできるサイト等があれば教えてほしいです… 0 key0x2key がしました 817. 名無しさん 2023年10月10日 21:45 >>815 githubでは説明が無いようですが、「メソッド」というものを使用します。 メソッド一覧は、 アクションマクロ編集状態 → アクションを追加する(A) → アクション追加ウィンドウ右上の「メソッド作成」 から見る事ができます。 メソッド作成ウィンドウのUIは少し癖が強いです。右上のチェックマークをクリックするとクリップボードにコピーされるので、そのコピーされた内容を、アクション追加ウィンドウや他のメソッド作成ウィンドウの的確な場所に、手動でペーストします。 >Eキーが押されている間ループする こんな感じになります。Input.GetKeyState()がメソッドです。 [ {"Name":"@While","Arguments":["Input.GetKeyState(Keys.E)"]}, {"Name":"@EndWhile"}, ] 0 key0x2key がしました 818. 名無しさん 2023年10月10日 22:03 >>817 ループ終了条件が複雑になる場合はこのような書き方をお勧めします。 https://github.com/x0oey6B8/KeyToKey-Web/wiki/アクションマクロ#変数aが10より大きいくて30より小さい場合 で紹介される演算子 && で結んで行けば@ループ<条件>1行で書けますが、編集やメンテナンスが大変ですし、フラグ変数を立てたりちょっとした処理をさせたり小回りが利きません。 [ {"Name":"Local.Assign","Arguments":["$timeEnd","GetTickCount()+10000"]}, {"Name":"@While","Arguments":["true"]}, {"Name":"@Break","Arguments":[" ! Input.GetKeyState(Keys.E)"]}, {"Name":"@Break","Arguments":["1 == 2"]}, {"Name":"@Break","Arguments":["GetTickCount() > $timeEnd"]}, {"Name":"//","Arguments":["ループの中身"]}, {"Name":"//","Arguments":["ループの中身"]}, {"Name":"@EndWhile"}, ] 0 key0x2key がしました 819. 名無しさん 2023年10月10日 22:17 >>818 ありがとうございます! メンテナンスのし易さは大切かもしれないですね 教えてもらったことを使って試行錯誤してみます! また分からないことがありましたら質問させていただくかもしれません… 0 key0x2key がしました 824. 名無しさん 2023年10月12日 17:05 wiiリモコンをbluetoothでつなげてGlovePieというソフトでボタンをrキーに割り当て、keytokeyの入力イベントのロックをはずし、キー割り当てでrが押されている間wheeldownを繰り返させることができたのですが、ボタンを押して0.5秒後ぐらいからwheeldownの連打が速くなってしまいます。 keytokeyを無効にしてから検索窓でボタンを押し続けたときも0.5秒後ぐらいからrが連打されるので、押し続けた際の連続的な入力がキャンセルされていないからだと思うのですが、なにか設定を変えることで解決できますか? トリガーとなるキーの最初の入力はキャンセルされていました。 0 key0x2key がしました 828. 名無しさん 2023年10月12日 21:00 >>824 GlovePieで、rキーでなく別のキーに割り当てる事は出来ますか? 具体的には、シフトキーやAltキー、F1~F12などの「キーリピートの発生しないキー」に割り当てられるとKeyToKeyで簡単に対応できます。 KeyToKeyの設定はこんな感じになるかと思います。 https://i.imgur.com/Q8qKQfA.png 0 key0x2key がしました 829. 名無しさん 2023年10月13日 16:39 >>828 リピートしなさそうなキーを色々試したのですが、なぜかどれも同じ結果になりました、、 0 key0x2key がしました 830. 名無しさん 2023年10月13日 18:05 >>828 マウス(右)とマウス(サイド1、2)はうまくいきました。ほかのも探せばなんとかなりそうです、ありがとうございます 0 key0x2key がしました 831. 名無しさん 2023年10月13日 20:48 >>830 GlovePieについて全く知らないのですが、それらの挙動を見るに、 ・キーリピートさせるべきでないキーも、他のキーと同様にリピートさせてしまっている ・キーリピートの方法が間違っていて、make----make-make-make-breakが正しい作法のところ、make----break-make-break-make-break と少し変わった方法を採っている ような気がしますね。 (全く使った事がないので、コメントからの想像だけですが) この2点を GlovePie の作者の方に連絡し、修正してもらった方が良いような気もします。 現在の GlovePie の挙動でもKeyToKeyでそれなりに動くマクロは書けますが、終了側の反応が鈍くなるので使い心地はあまり良くないと思います。 0 key0x2key がしました 832. 名無しさん 2023年10月14日 13:30 >>831 ずっと昔から更新されていないみたいなので、とりあえずリピートしないキーで使ってみます。 0 key0x2key がしました 833. 名無しさん 2023年10月16日 12:30 アクションマクロについて質問です スペースキーを押している間、スペースキーとFキーを連打するマクロを組んでいるのですが、スペースキーを押しながらFキーを押した場合、連打ではなく長押し(実際のFキーの入力を優先)させたい場合はどういうアクションや設定の追加が必要でしょうか? 難しければ諦めますので、面倒かどうかだけでもお教えいただけるとありがたいです 0 key0x2key がしました 834. 名無しさん 2023年10月16日 21:08 >>833 確認になります。 物理スペースキーのみ押されている場合 → 仮想スペースキーは連打、仮想Fキーは連打 物理スペースキーと物理Fキーが押されている場合 → 仮想スペースキーは???、仮想Fキーは長押し 物理Fーのみ押されている場合 → 仮想スペースキーは???、仮想Fキーは??? このあたり詳しくお願いします。 0 key0x2key がしました 835. 名無しさん 2023年10月16日 22:18 >>834 説明不足ですみません。 物理スペースキーのみ押されている場合 → 仮想スペースキーは連打、仮想Fキーは連打 物理スペースキーと物理Fキーが押されている場合 → 仮想スペースキーは連打、仮想Fキーは長押し 物理Fーのみ押されている場合 → 仮想スペースキーは入力なし、仮想Fキー長押し としたいです。 また、 物理スペースキーを押す(仮想F連打) ↓ 後から物理Fキーを押す(仮想F長押し) ↓ Fキーを離さずに物理スペースキーを離す(仮想F連打終了) この入力順だと、最後物理Fキーを押しっぱにも関わらずFキーの入力がない状態だと思うのですが、 長押しのまま処理を終えることも可能かどうかお教えいただきたいです。 あまりこういうことに詳しくないので的はずれなことを言っていたらすみません。 0 key0x2key がしました 836. 名無しさん 2023年10月16日 23:26 >>835 こんな感じになりそうです。 スペースキーにこのマクロを割り当てて下さい。 なお、ターゲットアプリによっては物理Fキーを押した状態ても仮想Fキーが連打されてしまうかも知れません。そのときはコメントお願いします。 また、このマクロでは数百回もしくは数千回に1度ぐらいの割合で(全ての物理キーを離した後も)仮想Fキーが押されっぱなしになるかも知れません。これもまたコメントお願いします。 >この入力順だと、最後物理Fキーを押しっぱにも関わらずFキーの入力がない状態だと思うのですが、 鋭いです。 マクロの書き方によってはそうなります。 [ {"Name":"Local.Assign","Arguments":["$親キー","Keys.Space"]}, {"Name":"Local.Assign","Arguments":["$子キー","Keys.F"]}, {"Name":"Local.Assign","Arguments":["$tick","17"]}, {"Name":"@While","Arguments":["Input.GetPhysicalState($親キー)"]}, {"Name":"Tap","Arguments":["$親キー","$tick"]}, {"Name":"@If","Arguments":["Input.GetPhysicalState($子キー)"]}, {"Name":"Down","Arguments":["$子キー","$tick"]}, {"Name":"@Else"}, {"Name":"Tap","Arguments":["$子キー","$tick"]}, {"Name":"@EndIf"}, {"Name":"@EndWhile"}, ] 0 key0x2key がしました 837. 名無しさん 2023年10月18日 05:49 >>836 本当にありがとうございます。直接マクロを教えていただけるとは思いませんでした。 今試してみたのですが、現状特何も不具合がないようなのでこのまま使わせてもらいます。 一点、コンソールという部分にバッジが付いており一件の読み込みエラーと表示されているのですが、これは無視してていいものでしょうか?(挙動に支障はなさそうなので問題ないようであれば放っておきます。) 0 key0x2key がしました 838. 名無しさん 2023年10月18日 22:09 >>837 対処しておくのがお勧めです。 KeyToKey → コンソール → 表示 からコンソール画面を表示すれば、どのような読み込みエラーのエラーメッセージが出ているのか確認できます。 大抵は、割り当てたマクロにエラーがあって割り当てに失敗しています。その場合はマクロ名でなく、割り当てたキーだけがコンソールに表示されるようです。必要であればマクロの修正、不必要であれば割り当ての削除、などで対処する事になります。 0 key0x2key がしました 839. 名無しさん 2023年10月21日 10:34 お世話になっております。 プロファイルの自働切り替え機能について質問があります。 プロファイル1とプロファイル2を作成し、 それぞれ別々のソフトでプロファイルが切り替わるように設定しました。 プロファイル1はソフトA実行時に、プロファイル2はソフトB実行時に有効になるように設定したのですが、 実際にソフトAを実行しているとプロファイル1のマクロと同時にプロファイル2のマクロまで実行されてしまします。 設定などあるのでしょうか? 0 key0x2key がしました 840. 開発者 2023年10月21日 19:35 >>839 >>実際にソフトAを実行しているとプロファイル1のマクロと同時にプロファイル2のマクロまで実行されてしまします。 プロファイルの切り替えはメインプロファイル(メインウィンドウ上部一番左側のタブ)のプロファイルをアプリによって切り替える機能です。 それが正しく動作しているとすればマクロが同時に実行されることはないはずです。 もしプロファイルを同時使用(メインウィンドウ上部タブで追加可能)しているのであれば、アプリの許可設定をしてみてください。 https://github.com/x0oey6B8/KeyToKey-Web/wiki/KeyToKeyが動作するアプリ(プロセス)を制限する また、自動切り替えでプロファイルが正しく切り替わっているのかどうかも確認してみてください。 指定のアプリをアクティブにした後、KeyToKeyのメインウィンドウを開き、プロファイルが変わっていることを確認してください。 0 key0x2key がしました 841. 名無しさん 2023年10月21日 21:00 >>840 開発者様 返信ありがとうございます。 勘違いしていました。 プロファイル一覧の上のプラスマークから2つのプロファイルを開いていたため、 ソフトにかかわらずマクロが同時に動作していました。 開いているプロファイルを1つにし、それぞれ対応するソフトを起動したところ、 対応したプロファイルに変わることが確認できました。 お騒がせいたしました。 0 key0x2key がしました 842. 名無しさん 2023年10月22日 10:46 アクションマクロについてです。 「画像認識で認識できた位置(座標)にマウスカーソルを移動させる」 といったマクロをアクションマクロで組みたい場合、どうしたらいいと思いますか? どなたかご存知の方いませんか。 0 key0x2key がしました 843. 開発者 2023年10月22日 12:24 >>842 アクションリストを右クリックして「テンプレートを追加する」->「画像認識:一つだけ探す」->「末尾に追加」をクリックします。 これで画像認識用のテンプレートアクションが追加されます。 テンプレートアクションは画像が見つかった場所にマウスを移動させます。 0 key0x2key がしました 844. 名無しさん 2023年10月22日 12:36 >>842 このようなアクションマクロを組むことになります。前後の [ ] も含めてコピーし、アクションマクロ編集エリアにペーストして下さい。 ただ、この変数名に関する情報は、githubのマニュアルにも、KeyToKey側のアクション作成ウィンドウにもメソッド作成ウィンドウにも明示されていないので、情報に辿り着くのはやや難しいかと思います。 アクションマクロ編集エリア → 右クリック → テンプレートを追加する → 画像認識:1つだけ探す からテンプレートを挿入するのが定石です。これで変数名を調べる・知る事ができます。 [ {"Name":"@If","Arguments":["TemplateMatching.TryMatch(\"識別キー\")"]}, {"Name":"MouseMove","Arguments":["$MatchResultX","$MatchResultY"]}, {"Name":"@EndIf"}, ] 0 key0x2key がしました 845. 名無しさん 2023年10月26日 13:44 アクションマクロについてです。 KeyToKeyの起動時に一緒にマクロを実行するようにする為に、スタートアップマクロに登録しようとしてます。 その実行したいマクロの質問になります。 外部exeを起動するようにマクロに登録することは可能なのでしょうか? 0 key0x2key がしました 846. 開発者 2023年10月26日 17:27 >>845 「プロセスを実行」アクションを使用することでexeファイルを起動させることができます。 「プロセス名」にはexeファイルのパスを指定してください。 例:「@"C:\windows\system32\calc.exe"」 0 key0x2key がしました 847. 名無しさん 2023年10月26日 20:34 >>846 例にある形式で組んだのですが、起動しても指定のアプリが起動されませんでした。 起動できないexeファイルがあったりしますでしょうか… 0 key0x2key がしました 848. 開発者 2023年10月27日 01:50 >>847 起動用の引数や作業用フォルダのパスを設定する必要のあるアプリもあります。 起動用の引数はアクションの2つ目の項目に設定することができますが、作業用フォルダのパスについてはアクションでは設定することができません。 また、起動できない原因としてパスが正しくない場合もあります。 ファイルをクリックしてパスをコピーし、アクションの設定に貼り付けてみてください。 ■コピー方法 Windows11:ファイルを右クリックすることでメニューからパスをコピー。 Windows10:ファイルをShift+右クリックでメニューからパスをコピー。 ■パス指定方法の注意点 「@"C:\Folder\Exe.exe"」のようにパスは「@マーク+二重引用符」を使う必要があることに注意してください。 また、パスや記号はすべて半角英数字で入力してください。 0 key0x2key がしました 849. 名無しさん 2023年10月28日 19:18 アクションマクロについて質問です。 現在以下のようなマクロをキーボード・マウスで使用しています。 [ {"IsDisabled":false,"Name":"UseHighPrecisionWait","Arguments":["True"]}, {"IsDisabled":false,"Name":"Local.Assign","Arguments":["$連打キー","Keys.A"]}, {"IsDisabled":false,"Name":"@While","Arguments":["Input.GetPhysicalState($連打キー)"]}, {"IsDisabled":false,"Name":"@If","Arguments":["Input.GetKeyState(Keys.XButton2)"]}, {"IsDisabled":false,"Name":"Tap","Arguments":["$連打キー","10","10","True"]}, {"IsDisabled":false,"Name":"@Else","Arguments":[]}, {"IsDisabled":false,"Name":"Down","Arguments":["$連打キー","50"]}, {"IsDisabled":false,"Name":"@EndIf","Arguments":[]}, {"IsDisabled":false,"Name":"@EndWhile","Arguments":[]}, {"IsDisabled":false,"Name":"Up","Arguments":["$連打キー"]} ] 簡単に説明すると、マウスのサイドボタンを押している間にAキーが入力されると Aキーが連打入力になり、それ以外はAキーが通常の入力になります。 このマクロをAキーに割り当てて使用しています。 上記ののマクロをコントローラーと合体させたいと思っています。 PS4コントローラーを使用しているのですが、 コントローラーの〇ボタンが押されている間に左スティックの左が入力されたら Aキーが連打され、それ以外はAキーが通常の入力になるようにすることは可能でしょうか? 0 key0x2key がしました 850. 名無しさん 2023年10月28日 22:35 >>849 まず DUALSHOCK 4 をKeyToKeyで選択・セットアップして下さい。 それが済めば、恐らくこんな感じのマクロを〇ボタンに割り当てれば可能だと思います。 [ {"Name":"UseHighPrecisionWait","Arguments":["True"]}, {"Name":"Local.Assign","Arguments":["$連打キー","Keys.A"]}, {"Name":"@While","Arguments":["Input.GetPhysicalState($連打キー)"]}, {"Name":"@If","Arguments":["Input.GetControllerButtonState(\"LeftStickLeft\")"]}, {"Name":"Tap","Arguments":["$連打キー","10","10","True"]}, {"Name":"@Else"}, {"Name":"Down","Arguments":["$連打キー","50"]}, {"Name":"@EndIf"}, {"Name":"@EndWhile"}, {"Name":"Up","Arguments":["$連打キー"]}, ] 0 key0x2key がしました 851. 名無しさん 2023年10月29日 07:49 >>850 ありがとうございます。 https://github.com/x0oey6B8/KeyToKey-Web/wiki/%E3%82%AD%E3%83%BC%E3%81%A8%E3%83%9E%E3%82%A6%E3%82%B9%E3%81%AE%E5%80%A4%E4%B8%80%E8%A6%A7 上のページみたいに 左スティックの左=LeftStickLeft のような対応表ってどこかに載っていたりしますか? 0 key0x2key がしました 852. 名無しさん 2023年10月29日 08:59 >>850 上のマクロを試してみましたが、うまくいきませんでした。 トリガーに設定したボタンを押すと一瞬だけステータスが実行中に変わりますが、 Aキーが入力されることはありませんでした。 0 key0x2key がしました 853. 名無しさん 2023年10月29日 11:28 >>851 その対応表の在処はわかりません。 「左スティックの左=LeftStickLeft」の発見手順を以下に記します。 https://i.imgur.com/uHfip8V.png この手順の後で、クリップボードの中身を適当な箇所にペーストします。 これらの文字列には何らかの雛形があるかも知れませんが、(XInputとDirectInputの融和や8方向への対応などを経て)KeyToKeyオリジナルだと思います。 >>852 大変失礼しました。3行目が前回のキーボード入力のままでした。 [ {"Name":"UseHighPrecisionWait","Arguments":["True"]}, {"Name":"Local.Assign","Arguments":["$連打キー","Keys.A"]}, {"Name":"@While","Arguments":["Input.GetTriggerState()"]}, {"Name":"@If","Arguments":["Input.GetControllerButtonState(\"LeftStickLeft\")"]}, {"Name":"Tap","Arguments":["$連打キー","10","10","True"]}, {"Name":"@Else"}, {"Name":"Down","Arguments":["$連打キー","50"]}, {"Name":"@EndIf"}, {"Name":"@EndWhile"}, {"Name":"Up","Arguments":["$連打キー"]}, ] 0 key0x2key がしました 854. 名無しさん 2023年10月29日 12:33 >>853 おかげさまで無事動作確認できました。 ボタンの発見手順まで教えていただいてありがとうございます。 もう一つ教えていただきたいのですが、 連打するキーをキーボードのAキーから コントローラーのR1ボタンに変更したい場合は どのように書き換えたらよいのでしょうか? 0 key0x2key がしました 855. 名無しさん 2023年10月29日 13:23 >>854 仮想ゲームパッドのドライバ(ScpVBusかViGMeかvJoy)は使用中ですか? 「マッピング」は使用中ですか? マクロによる仮想ゲームパッドの操作と物理ゲームパッドの操作を混在させてターゲットアプリに伝える予定はありますか? これらの質問がさっぱりわからない場合は、 https://github.com/x0oey6B8/KeyToKey-Web/wiki/仮想コントローラーとマッピングに関する設定や注意事項 の前半を熟読し、後半に軽く目を通す事をお勧めします。 0 key0x2key がしました 857. 名無しさん 2023年10月29日 16:37 >>855 >仮想ゲームパッドのドライバ(ScpVBusかViGMeかvJoy)は使用中ですか? 仮想ゲームパッドドライバはインストール済みです。 >「マッピング」は使用中ですか? 現在Xinputコントローラーにマッピングして使用しております。 >マクロによる仮想ゲームパッドの操作と物理ゲームパッドの操作を混在させてターゲットアプリに伝える予定はありますか? >>854の内容がこれに該当すると思っているのですが、認識が間違っていますでしょうか? 0 key0x2key がしました 858. 名無しさん 2023年10月29日 20:36 >>857 > >>854の内容がこれに該当すると思っているのですが、認識が間違っていますでしょうか? マッピングを利用しない、つまり、 「 物理ゲームパッドの操作はマクロが読み取るのみで、ターゲットアプリには読み取らせない。 仮想ゲームパッドは全てマクロが制御し、それをターゲットアプリに読み取らせる。 」 という場合は>>854であっても操作が混在しません。 既にマッピングを使用しているのであれば、混在させるのが自然な利用法になるかと思います。 マクロはこんな感じになりそうです。 押し放し側の時間をやや短くしてあります。これは1msなど極端に短くしても正しく動作するはずです。それにより操作の反映がわずかながら速くなる可能性もあります。 キーボードに対しては上手く行かなかった経験があるので、キーボードでは長めに待機時間を取りました。 [ {"Name":"UseHighPrecisionWait","Arguments":["True"]}, {"Name":"Local.Assign","Arguments":["$id","0"]}, {"Name":"Local.Assign","Arguments":["$連打ボタン","\"RB\""]}, {"Name":"XInput.SuspendMapping","Arguments":["$id","$連打ボタン"]}, {"Name":"@While","Arguments":["Input.GetTriggerState()"]}, {"Name":"@If","Arguments":["Input.GetControllerButtonState(\"LeftStickLeft\")"]}, {"Name":"XInput.Tap","Arguments":["$id","$連打ボタン","10","10"]}, {"Name":"@Else"}, {"Name":"XInput.Down","Arguments":["$id","$連打ボタン","20"]}, {"Name":"@EndIf"}, {"Name":"@EndWhile"}, {"Name":"XInput.ResumeMapping","Arguments":["$id","$連打ボタン"]}, ] 0 key0x2key がしました 861. 名無しさん 2023年10月29日 21:32 >>858 私の理解が追いついておらず、申し訳ありません。 丁寧に教えていただきありがとうございます。 >>マッピングを利用しない、つまり、 「物理ゲームパッドの操作はマクロが読み取るのみで、ターゲットアプリには読み取らせない。 仮想ゲームパッドは全てマクロが制御し、それをターゲットアプリに読み取らせる。」 例えば マッピングを利用する場合、 コントローラーで物理的にR1を入力→マクロでR1入力時、スペースキー連打 とした場合、コントローラーで入力したR1とスペースキーが同時に対象アプリ側に 入力されてしまうということでしょうか? マッピングを利用しないことでコントローラーからの入力をkeytokeyで遮断し、 対象アプリにはコントローラーの入力は反映されずkeytokeyの出力のみ反映されるということであれば、 keytokeyの設定自体を見直すことになりそうですが、私的にはマッピングを利用しない方が希望と合致しています。 0 key0x2key がしました 862. 名無しさん 2023年10月29日 22:02 >>861 >コントローラーで物理的にR1を入力→マクロでR1入力時、スペースキー連打 >とした場合、コントローラーで入力したR1とスペースキーが同時に対象アプリ側に >入力されてしまうということでしょうか? その通りです。 キーボードやマウスのイベントは容易に遮断できますし、KeyToKeyのデフォルトで遮断されるようになっていますが、ゲームパッドに関しては違います。 ゲームパッドを物理から仮想へマッピングしていると基本的に全ての操作が貫通します。 ただ、マッピングは丸ごとON/OFFもできますし、1つ1つのボタン、1つ1つのスティック毎にマッピングのON/OFFを切り替える事もできます。 プロファイルの設定(つまり手動・静的)も可能ですし、マクロから動的に変更する事も可能です。 858のアクションマクロではR1のマッピングのみを一時的にOFFにして、最後で再びONにしています。 部分的にマッピングをOFFする設定は以下を参照してください。 https://i.imgur.com/UMdOvsV.png 0 key0x2key がしました 863. 名無しさん 2023年10月30日 19:07 >>862 すべてのマッピングをOFFにする場合は、 割り当て設定(コントローラー)→仮想コントローラー及びvJoyにマッピングするのチェックを全て外す で大丈夫でしょうか? [ {"IsDisabled":false,"Name":"UseHighPrecisionWait","Arguments":["True"]}, {"IsDisabled":false,"Name":"Local.Assign","Arguments":["$連打キー","Keys.space"]}, {"IsDisabled":false,"Name":"@While","Arguments":["Input.GetTriggerState()"]}, {"IsDisabled":false,"Name":"@If","Arguments":["Input.GetControllerButtonState(\"B\")"]}, {"IsDisabled":false,"Name":"Tap","Arguments":["$連打キー","50","50","True"]}, {"IsDisabled":false,"Name":"@Else","Arguments":[]}, {"IsDisabled":false,"Name":"Down","Arguments":["$連打キー","50"]}, {"IsDisabled":false,"Name":"@EndIf","Arguments":[]}, {"IsDisabled":false,"Name":"@EndWhile","Arguments":[]}, {"IsDisabled":false,"Name":"Up","Arguments":["$連打キー","0","True"]} ] 上記のマクロをR1ボタンに割り当て使用していますが、 R1ボタンの入力とspaceキーの両方がアプリに入力されてしまっているようです。 0 key0x2key がしました 864. 名無しさん 2023年10月30日 21:58 >>863 マッピングのOFFは、XInput4か所、DualShock1か所、vJoy1か所のチェックが外れていればOKです。 ただし、アプリ(またはゲームプラットフォーム)が、物理DualShockを読んでいる場合はマッピングをOFFしても改善されないはずです。 この点を気を付けて下さい。 0 key0x2key がしました 866. 名無しさん 2023年10月30日 22:31 >>864 まさにそのせいでした。 steamで使用していたのですが、steamでコントローラーの入力を読み込んでいたようです。 steamのコントローラー入力をOFFにしたら、コントローラー本体の入力が遮断されました。 お手数をおかけいたしました。 大変助かりました。 0 key0x2key がしました 856. 名無しさん 2023年10月29日 16:37 C#スクリプトについて質問です! 右クリックが離れたら。という条件を組むことはできるのでしょうか? 右クリックが離れたら左クリックを押す というマクロをC#スクリプトで作成したいです。 アクションマクロではできたのですが、C#スクリプトでも作ってみたいので教えていただけたら助かります! 0 key0x2key がしました 859. 名無しさん 2023年10月29日 20:51 >>856 KeyToKeyを活用するなら、 Tap(Keys.LButton); という1行のC#スクリプトを、マウス(右)に「マクロを割り当てる(離したら)」で割り当てる事になります。 何かC#スクリプトの実行中にそれをするのでしたら、 WaitForInput(Keys.RButton, whenDown: false); Tap(Keys.LButton); の2行になります。 もっと根源的な方法はこちらです。 //一旦押されるまで待機 while(! IsPressed(Keys.RButton)){ } //離されるまで待機 while(IsPressed(Keys.RButton)){ } //離されたのでタップ Tap(Keys.LButton); 0 key0x2key がしました 860. 名無しさん 2023年10月29日 20:54 >>859 CPUの負荷軽減のため Wait() を入れた方が良い気がしました。 //一旦押されるまで待機 while(! IsPressed(Keys.RButton)){ Wait(17); } //離されるまで待機 while(IsPressed(Keys.RButton)){ Wait(17); } //離されたのでタップ Tap(Keys.LButton); 0 key0x2key がしました 865. 名無しさん 2023年10月30日 22:26 アクションマクロについて質問があります。 現在コントローラーをつないでマクロ機能を使用しているのですが、 右スティックと左スティックを入れ替えてゲーム側に出力することは可能でしょうか? 物理コントローラーの左スティックを入力すると、ゲーム側で右スティックで入力されたと認識させたいです。 逆も同じです。 0 key0x2key がしました 868. 名無しさん 2023年10月31日 20:41 >>865 既にマッピングは使っていますか? 0 key0x2key がしました 870. 名無しさん 2023年10月31日 20:59 >>868 現在、仮想Xinputコントローラーにマッピングしております。 0 key0x2key がしました 871. 名無しさん 2023年10月31日 21:33 >>870 ゲームの設定やゲームプラットフォームの設定で頑張った方が楽な気もします。 特に、仮想Xinputドライバは、XInputだけでなくDirectInputの出力も持っていますので、こちらをゲーム若しくはゲームプラットフォームで読み込めば、必ずスティックの設定が伴いますのでそこで逆転できます。 マクロで入れ替えるならこうなります。 プロファイルロード時に実行される「スタートアップマクロ」に登録するのが良いと思います。 (何かのキーやボタンに割り当てて、KeyToKeyのトグルでオン・オフしようとすると、オフした後のマッピングが壊れているはずです。つまりオフに未対応のマクロなので気を付けて下さい) [ {"Name":"Local.Assign","Arguments":["$id","0"]}, {"Name":"XInput.SuspendMapping","Arguments":["$id","\"LeftStickX\"","\"LeftStickY\"","\"RightStickX\"","\"RightStickY\""]}, {"Name":"@While","Arguments":["True"]}, {"Name":"XInput.SetStickValue","Arguments":["$id","\"RightStickX\"","+Controller.GetStick(\"LeftStickX\")","0"]}, {"Name":"XInput.SetStickValue","Arguments":["$id","\"RightStickY\"","-Controller.GetStick(\"LeftStickY\")","0"]}, {"Name":"XInput.SetStickValue","Arguments":["$id","\"LeftStickX\"","+Controller.GetStick(\"RightStickX\")","0"]}, {"Name":"XInput.SetStickValue","Arguments":["$id","\"LeftStickY\"","-Controller.GetStick(\"RightStickY\")","0"]}, {"Name":"Wait","Arguments":["17"]}, {"Name":"@EndWhile"}, ] 0 key0x2key がしました 872. 名無しさん 2023年11月01日 19:14 >>871 ありがとうございます。 動作確認できました。 0 key0x2key がしました 867. 名無しさん 2023年10月31日 20:06 お世話になってます。 アクションマクロについて質問です。 コントローラーを使用して、仮想Xinputコントローラーにマッピングしております。 十字ボタン下を1回押すとマクロが有効になる。 マクロ有効中は左スティックの上下左右がそれぞれキーボードのWSADに切り替わる。 もう一度十字キー下を押すとマクロが無効化される。 上記のようなマクロを作ってみようと思いましたが、なかなかうまくいきません。 試しに作ったコードを張ろうと思ったのですが、文字数が多くて貼り付けられませんでした。 有識者の方、ご助力をお願いいたします。 0 key0x2key がしました 869. 名無しさん 2023年10月31日 20:52 >>867 こんな要領になりそうです。 [ {"Name":"Local.Assign","Arguments":["$id","0"]}, {"Name":"@While","Arguments":["Input.GetTriggerState()"]}, {"Name":"@EndWhile"}, {"Name":"XInput.SuspendMapping","Arguments":["$id","\"LeftStickY\"","\"LeftStickX\""]}, {"Name":"@While","Arguments":[" ! Input.GetTriggerState()"]}, {"Name":"@If","Arguments":["Input.GetControllerButtonState(\"LeftStickLeft\")"]}, {"Name":"Down","Arguments":["Keys.W"]}, {"Name":"@Else"}, {"Name":"Up","Arguments":["Keys.W"]}, {"Name":"@EndIf"}, {"Name":"@If","Arguments":["Input.GetControllerButtonState(\"LeftStickDown\")"]}, {"Name":"Down","Arguments":["Keys.S"]}, {"Name":"@Else"}, {"Name":"Up","Arguments":["Keys.S"]}, {"Name":"@EndIf"}, {"Name":"Wait","Arguments":["17"]}, {"Name":"@EndWhile"}, {"Name":"Up","Arguments":["Keys.W"]}, {"Name":"Up","Arguments":["Keys.S"]}, {"Name":"Up","Arguments":["Keys.A"]}, {"Name":"Up","Arguments":["Keys.D"]}, {"Name":"XInput.ResumeMapping","Arguments":["$id","\"LeftStickY\"","\"LeftStickX\""]}, ] 0 key0x2key がしました 873. 名無しさん 2023年11月04日 18:09 >>869 ありがとうございます。 多少修正してイメージ通りの動作を確認できました。 ここにプラスして、右スティックをマウスの動作に対応させることは可能でしょうか? 0 key0x2key がしました 874. 名無しさん 2023年11月04日 21:55 >>873 >ここにプラスして、右スティックをマウスの動作に対応させることは可能でしょうか? その機能をオン・オフさせないのであれば、 割り当て設定(コントローラー) のゲームパッド図の下にある「カーソルの割り当て」が手っ取り早いです。 十字ボタン下などでオン・オフさせる流れでの話でしたら、以下のマクロを869のマクロと統合させると良いかと思います。 [ {"Name":"Local.Assign","Arguments":["$tick","17"]}, {"Name":"Local.Assign","Arguments":["$不感","100"]}, {"Name":"Local.Assign","Arguments":["$感度","$tick*0.00006"]}, {"Name":"@While","Arguments":["true"]}, {"Name":"Local.Assign","Arguments":["$x","Controller.GetStick(\"RightStickX\")"]}, {"Name":"Local.Assign","Arguments":["$y","Controller.GetStick(\"RightStickY\")"]}, {"Name":"@If","Arguments":["$x*$x+$y*$y>$不感*$不感"]}, {"Name":"MouseMove","Arguments":["Input.GetCursorX()+$x*$感度","Input.GetCursorY()+$y*$感度","0"]}, {"Name":"@EndIf"}, {"Name":"Wait","Arguments":["$tick"]}, {"Name":"@EndWhile"}, ] 0 key0x2key がしました 875. 名無しさん 2023年11月05日 11:45 >>874 ありがとうございます。 十字ボタン下をトグルモードで使用させていただきます。 度々申し訳ないのですが、マクロのオフ条件に〇ボタンを押下を追加することは可能でしょうか? オンにするときは十字ボタン下のみで、 オフにするときはもう一度十字ボタン下を押すor〇ボタンを押す というような感じにしたいです。 0 key0x2key がしました 876. 名無しさん 2023年11月05日 13:08 >>875 ループ条件の変更で対応できそうです。 [ {"Name":"Local.Assign","Arguments":["$tick","17"]}, {"Name":"@While","Arguments":["!Input.GetTriggerState() && !Input.GetControllerButtonState(\"B\")"]}, {"Name":"//","Arguments":["メインループの中身"]}, {"Name":"Wait","Arguments":["$tick"]}, {"Name":"@EndWhile"}, ] 0 key0x2key がしました 877. 名無しさん 2023年11月07日 18:50 >>876 返事遅れてすみません。 ただいま動作の方確認できました。 何から何までありがとうございました。 0 key0x2key がしました 878. 名無しさん 2023年11月08日 15:12 アクションマクロについての質問です。 画像認識を使用して、認識した場所を一度だけクリックさせたいのですが、現状認識範囲内にその画像がある限り連続でクリックし続けてしまいます。 特定の動作を一度だけ行わせて次の動作に移行させたい場合、どのような処理をさせればよいのでしょうか? 初歩的な質問で申し訳ありませんがよろしくお願いします。 0 key0x2key がしました 879. 名無しさん 2023年11月08日 21:03 >>878 確認になります。 画像認識で画像が見つからなかった場合はどんな動作をさせる予定ですか? 0 key0x2key がしました 880. 名無しさん 2023年11月08日 21:58 >>879 >画像認識で画像が見つからなかった場合はどんな動作をさせる予定ですか? 説明不足ですみません。画像が見つからなかった場合、その画像が認識されるまで動作を待機させたいと考えています。 画像Aが認識されるまで待機 ↓ 画像Aを認識したら一連の動作A´を一度だけ行わせ、画像Bを認識するまで待機 ↓ 画像Bを認識したら一連の動作B´を…… というように画像が認識されるごとに一つずつ段階を進め、最後の動作が終わったら再び画像Aを認識するまで待機する、といったマクロを作ろうとしています。現在の設定ではトグルモードと繰り返しを併用しています。 0 key0x2key がしました 881. 名無しさん 2023年11月08日 22:45 >>880 このようなマクロでいけそうです。 [ {"Name":"@While","Arguments":[" ! TemplateMatching.TryMatch(\"画像A\")"]}, {"Name":"Wait","Arguments":["100"]}, {"Name":"@EndWhile"}, {"Name":"//","Arguments":["画像Aを認識した後の動作"]}, {"Name":"//","Arguments":["画像Aを認識した後の動作"]}, {"Name":"@While","Arguments":[" ! TemplateMatching.TryMatch(\"画像B\")"]}, {"Name":"Wait","Arguments":["100"]}, {"Name":"@EndWhile"}, {"Name":"//","Arguments":["画像Bを認識した後の動作"]}, {"Name":"//","Arguments":["画像Bを認識した後の動作"]}, ] 0 key0x2key がしました 882. 名無しさん 2023年11月09日 00:08 >>881 ありがとうございます。問題なく動作することを確認しました。 今までは、"テンプレートを追加する"から画像認識のテンプレートアクションを追加し、動作部分のみ編集してそのまま使っていたため最初に書き込んだような挙動になってしまっていたようです。 ループの条件に画像認識を使用することを教えて頂けたので、今まで使っていたマクロも改善できそうです。素早い対応でとても助かりました。ありがとうございました。 0 key0x2key がしました 883. 名無しさん 2023年11月14日 03:31 アクションマクロについて質問です。 下記のマクロで画像認識Aと画像認識Bの間に待機30秒を入れているのですが これを画像認識Aの後 30秒間 画像認識Bを監視し画像Bが表示され次第 Bの内容を実行する事はできますか? 良かったら教えてください、宜しくお願い致します。 [ {"IsDisabled":false,"Name":"@If","Arguments":["TemplateMatching.TryMatch(\"A\") == False"]}, {"IsDisabled":false,"Name":"Tap","Arguments":["Keys.Escape","100","100","True"]}, {"IsDisabled":false,"Name":"@EndIf","Arguments":[]}, {"IsDisabled":false,"Name":"WaitSeconds","Arguments":["30"]}, {"IsDisabled":false,"Name":"@If","Arguments":["TemplateMatching.TryMatch(\"B\") == True"]}, {"IsDisabled":false,"Name":"MouseMoveBySteps","Arguments":["500","600","100","1","True","True"]}, {"IsDisabled":false,"Name":"Tap","Arguments":["Keys.LButton","100","100","True"]}, {"IsDisabled":false,"Name":"@EndIf","Arguments":[]}, {"IsDisabled":false,"Name":"@If","Arguments":["TemplateMatching.TryMatch(\"C\") == True"]}, {"IsDisabled":false,"Name":"Tap","Arguments":["Keys.B","100","100","True"]}, {"IsDisabled":false,"Name":"@EndIf","Arguments":[]} ] 0 key0x2key がしました 884. 開発者 2023年11月14日 19:44 >>883 条件ループを使って画像が見つかるまで待機するのはどうでしょう? [ {"IsDisabled":false,"Name":"//","Arguments":["画像認識の結果がFalse(見つからなかった)の間ループする"]}, {"IsDisabled":false,"Name":"@While","Arguments":["TemplateMatching.TryMatch(\"B\") == False"]}, {"IsDisabled":false,"Name":"WaitSeconds","Arguments":["5"]}, {"IsDisabled":false,"Name":"@EndWhile","Arguments":[]}, {"IsDisabled":false,"Name":"//","Arguments":["見つかったらループが終了し次のアクションが実行される"]}, {"IsDisabled":false,"Name":"MouseMoveBySteps","Arguments":["500","600","100","1","True","True"]}, {"IsDisabled":false,"Name":"Tap","Arguments":["Keys.LButton","100","100","True"]} ] 0 key0x2key がしました 885. 名無しさん 2023年11月14日 23:12 >>883 開発者さんが示されたマクロで充分実用的と思いますが、30秒経過後までに画像Bが表示されなかったら処理を諦めるマクロを書いてみました。 4行目で30秒の監視時間を指定しています。 [ {"Name":"@If","Arguments":["TemplateMatching.TryMatch(\"A\") == False"]}, {"Name":"Tap","Arguments":["Keys.Escape","100","100"]}, {"Name":"@EndIf"}, {"Name":"Local.Assign","Arguments":["$timeEnd","GetTickCount()+30000"]}, {"Name":"@While","Arguments":["true"]}, {"Name":"@If","Arguments":["TemplateMatching.TryMatch(\"B\") == True"]}, {"Name":"MouseMoveBySteps","Arguments":["500","600","100","1","True"]}, {"Name":"Tap","Arguments":["Keys.LButton","100","100"]}, {"Name":"@Break"}, {"Name":"@EndIf"}, {"Name":"@If","Arguments":["GetTickCount()>$timeEnd"]}, {"Name":"@Break"}, {"Name":"@EndIf"}, {"Name":"Wait","Arguments":["500"]}, {"Name":"@EndWhile"}, {"Name":"@If","Arguments":["TemplateMatching.TryMatch(\"C\") == True"]}, {"Name":"Tap","Arguments":["Keys.B","100","100"]}, {"Name":"@EndIf"}, ] 0 key0x2key がしました 886. 名無しさん 2023年11月15日 02:05 >>883 >>884 >>885 やりたいことが出来ました! 本当に助かりました、ありがとうございます。 0 key0x2key がしました 887. 名無しさん 2023年11月15日 16:29 質問です。左クリックを押したときと離したときに左クリックを入力させるにはどのような設定をすればいいですか 0 key0x2key がしました 888. 開発者 2023年11月15日 22:05 >>887 はじめに左クリックを行うマクロを作成します。 次にマクロをマウス左ボタンに割り当てます。 割り当てる際には「マクロを割り当てる(押したとき、離したとき)」を選択します。 選択画面が二回表示されるので作ったマクロをそれぞれ割り当てます。 0 key0x2key がしました 889. 名無しさん 2023年11月15日 22:09 >>887 マクロが必要となります。 C#スクリプト(マクロ)とアクションマクロ、どちらかに慣れていますか? 0 key0x2key がしました 890. 名無しさん 2023年11月16日 15:31 >>889 アクションマクロのほうが慣れています。 0 key0x2key がしました 891. 名無しさん 2023年11月16日 20:56 >>890 開発者さんとダブってしまいすみません。 マクロの作成は問題無いと思いますが、一応念のためマクロ例です。 [ {"Name":"Tap","Arguments":["Keys.LButton","17","0"]}, ] 後から割り当ての中身を確認すると、 「離したとき」「離されたら」 に割り当てたはずのマクロが 「マクロが停止した時」 に割り当てられていますがそれで正常に動作します。 0 key0x2key がしました 892. 名無しさん 2023年11月18日 09:35 >>891 ありがとうございます。 0 key0x2key がしました 893. 最小化さん 2023年11月26日 12:19 いつもKeyToKeyにお世話になっています。 タスクスケジューラで起動時に実行するようにしたのですが、ツール本体の最小化ができません。dat→vbsから最小化を試みてもKeyToKey側のDOS窓が最小化されるだけで緑色のツール本体は最小化できないないです...なにか解決策があれば返信を貰えると助かります 0 key0x2key がしました 894. 名無しさん 2023年11月26日 21:33 >>893 最小化に拘る場合、 DOS窓のウィンドウタイトルが「KeyToKey - Console / 非表示:Ctrl + C」で、 メインウィンドウのタイトルが「C:\fullpath\fullpath\fullpath\KeyToKey.exe:KeyToKey」という感じなので、 タイトルでウィンドウを探してみると良いかと思います。 最小化ではありませんが手っ取り早い方法として、 DOS窓の方は、DOS窓にフォーカスを合わせた状態で Ctrl + C を押せば以降非表示となり、 メインウィンドウの方は、タイトルバー右方面にある「非表示」のエリアを左クリックすれば非表示となるはずです。 非表示後はタスクトレイ/通知領域から操作可能です。 0 key0x2key がしました 896. 開発者 2023年11月27日 15:26 >>893 コメント894さんがおっしゃるように「非表示」を使用してみてください。 どうしても最小化を行いたい場合は最小化を行うスクリプトをKeyToKeyで書いてKeyToKey起動時に実行するように設定するといいかもしれません。 ただし、この方法はプロファイルの読み込みを待つ必要があるので最小化されるまで少し時間がかかるかもしれません。 ■設定手順 1.最小化を行うプロファイルを作成します。 2.編集ウィンドウを開き、マクロの作成設定画面を開きます。 3.左側にあるC#スクリプトタブを選択し、ファイルツリーから作成したプロファイルの名前のフォルダを探します(Scripts -> プロファイルの名前) 4.プロファイルの名前のフォルダを右クリックして「新しいスクリプト」をクリックします。 5.下記のスクリプトを貼り付けてCtrl+Sで保存します。 6.環境設定へ移動し、スタートアップスクリプトから「マクロを追加」を選択し作ったスクリプトを指定します。 7.編集を保存します。 8.メインウィンドウの上部プロファイルの名前の横にある+ボタンを押します。 9.タブが追加されるので最小化を実行するプロファイルを選択します。 これでメインウィンドウが起動しプロファイルの読み込みが完了するとスクリプトが実行されメインウィンドウが最小化されるはずです。 ■スクリプト var window = FindWindow("KeyToKey"); if (window.Exists) { window.Minimize(); } 0 key0x2key がしました 895. 名無しさん 2023年11月27日 12:13 いつもお世話になっております。 先程まで問題なく使用できていたのですが、マクロ作成等行うメイン画面だけが急に開かなくなりました。 --------------------------------------------------------- 設定:画像認識の設定 メッセージ:1番目の設定の識別キーが設定されていません。 --------------------------------------------------------- 上記のエラー?が出て開けない状況です。 お忙しいところ恐縮ですがアドバイス頂けますと幸いです。 0 key0x2key がしました 897. 開発者 2023年11月27日 15:46 >>895 そのエラーはプロファイルの読み込みエラーなのでおそらく編集ウィンドウが開かない問題とは関係がないと思われます。 メインウィンドウの「設定編集」をクリックしたとき、他にエラーは出てませんか? あと稀にですが編集ウィンドウは開かれるものの画面に出てこない場合があります。 タスクバーに表示されていないか確認してみてください。 0 key0x2key がしました 898. 名無しさん 2023年11月28日 09:15 >>897 迅速なご返信誠に有難うございます! ご指摘頂いた通り設定編集は開いており枠外に存在しておりました。 お騒がせし申し訳ございませんでした。 これからも愛用させて頂きます! 0 key0x2key がしました コメントフォーム 名前 コメント 記事の評価 リセット リセット 顔 星 情報を記憶 コメントを投稿する
コメント一覧 (898)
同時押しキーにSpaceキーを設定し、Wキーが押された際Wキーを連打するマクロを作成しました。
Spaceキー入力後にWキーを入力するとしっかり連打されるのですが、
その状態のままSpaceキーのみを離した場合、Wキーの連打状態が維持されてしまいます。
Spaceキーのみを離した場合(Wキーは押したままの状態)に、連打状態が解除されて
W押しっぱなしの状態にすることは可能でしょうか?
key0x2key
が
しました
Eキーが押されている間ループするようにしたい場合、条件式にはどのように書いたらいいのでしょうか?
githubの使用方法にはこの辺りの情報が無くてわからなかったので教えていただけたら助かります。
また、参考にできるサイト等があれば教えてほしいです…
key0x2key
が
しました
keytokeyを無効にしてから検索窓でボタンを押し続けたときも0.5秒後ぐらいからrが連打されるので、押し続けた際の連続的な入力がキャンセルされていないからだと思うのですが、なにか設定を変えることで解決できますか?
トリガーとなるキーの最初の入力はキャンセルされていました。
key0x2key
が
しました
スペースキーを押している間、スペースキーとFキーを連打するマクロを組んでいるのですが、スペースキーを押しながらFキーを押した場合、連打ではなく長押し(実際のFキーの入力を優先)させたい場合はどういうアクションや設定の追加が必要でしょうか?
難しければ諦めますので、面倒かどうかだけでもお教えいただけるとありがたいです
key0x2key
が
しました
プロファイルの自働切り替え機能について質問があります。
プロファイル1とプロファイル2を作成し、
それぞれ別々のソフトでプロファイルが切り替わるように設定しました。
プロファイル1はソフトA実行時に、プロファイル2はソフトB実行時に有効になるように設定したのですが、
実際にソフトAを実行しているとプロファイル1のマクロと同時にプロファイル2のマクロまで実行されてしまします。
設定などあるのでしょうか?
key0x2key
が
しました
「画像認識で認識できた位置(座標)にマウスカーソルを移動させる」
といったマクロをアクションマクロで組みたい場合、どうしたらいいと思いますか?
どなたかご存知の方いませんか。
key0x2key
が
しました
KeyToKeyの起動時に一緒にマクロを実行するようにする為に、スタートアップマクロに登録しようとしてます。
その実行したいマクロの質問になります。
外部exeを起動するようにマクロに登録することは可能なのでしょうか?
key0x2key
が
しました
現在以下のようなマクロをキーボード・マウスで使用しています。
[
{"IsDisabled":false,"Name":"UseHighPrecisionWait","Arguments":["True"]},
{"IsDisabled":false,"Name":"Local.Assign","Arguments":["$連打キー","Keys.A"]},
{"IsDisabled":false,"Name":"@While","Arguments":["Input.GetPhysicalState($連打キー)"]},
{"IsDisabled":false,"Name":"@If","Arguments":["Input.GetKeyState(Keys.XButton2)"]},
{"IsDisabled":false,"Name":"Tap","Arguments":["$連打キー","10","10","True"]},
{"IsDisabled":false,"Name":"@Else","Arguments":[]},
{"IsDisabled":false,"Name":"Down","Arguments":["$連打キー","50"]},
{"IsDisabled":false,"Name":"@EndIf","Arguments":[]},
{"IsDisabled":false,"Name":"@EndWhile","Arguments":[]},
{"IsDisabled":false,"Name":"Up","Arguments":["$連打キー"]}
]
簡単に説明すると、マウスのサイドボタンを押している間にAキーが入力されると
Aキーが連打入力になり、それ以外はAキーが通常の入力になります。
このマクロをAキーに割り当てて使用しています。
上記ののマクロをコントローラーと合体させたいと思っています。
PS4コントローラーを使用しているのですが、
コントローラーの〇ボタンが押されている間に左スティックの左が入力されたら
Aキーが連打され、それ以外はAキーが通常の入力になるようにすることは可能でしょうか?
key0x2key
が
しました
右クリックが離れたら。という条件を組むことはできるのでしょうか?
右クリックが離れたら左クリックを押す
というマクロをC#スクリプトで作成したいです。
アクションマクロではできたのですが、C#スクリプトでも作ってみたいので教えていただけたら助かります!
key0x2key
が
しました
現在コントローラーをつないでマクロ機能を使用しているのですが、
右スティックと左スティックを入れ替えてゲーム側に出力することは可能でしょうか?
物理コントローラーの左スティックを入力すると、ゲーム側で右スティックで入力されたと認識させたいです。
逆も同じです。
key0x2key
が
しました
アクションマクロについて質問です。
コントローラーを使用して、仮想Xinputコントローラーにマッピングしております。
十字ボタン下を1回押すとマクロが有効になる。
マクロ有効中は左スティックの上下左右がそれぞれキーボードのWSADに切り替わる。
もう一度十字キー下を押すとマクロが無効化される。
上記のようなマクロを作ってみようと思いましたが、なかなかうまくいきません。
試しに作ったコードを張ろうと思ったのですが、文字数が多くて貼り付けられませんでした。
有識者の方、ご助力をお願いいたします。
key0x2key
が
しました
画像認識を使用して、認識した場所を一度だけクリックさせたいのですが、現状認識範囲内にその画像がある限り連続でクリックし続けてしまいます。
特定の動作を一度だけ行わせて次の動作に移行させたい場合、どのような処理をさせればよいのでしょうか?
初歩的な質問で申し訳ありませんがよろしくお願いします。
key0x2key
が
しました
下記のマクロで画像認識Aと画像認識Bの間に待機30秒を入れているのですが
これを画像認識Aの後 30秒間 画像認識Bを監視し画像Bが表示され次第 Bの内容を実行する事はできますか?
良かったら教えてください、宜しくお願い致します。
[
{"IsDisabled":false,"Name":"@If","Arguments":["TemplateMatching.TryMatch(\"A\") == False"]},
{"IsDisabled":false,"Name":"Tap","Arguments":["Keys.Escape","100","100","True"]},
{"IsDisabled":false,"Name":"@EndIf","Arguments":[]},
{"IsDisabled":false,"Name":"WaitSeconds","Arguments":["30"]},
{"IsDisabled":false,"Name":"@If","Arguments":["TemplateMatching.TryMatch(\"B\") == True"]},
{"IsDisabled":false,"Name":"MouseMoveBySteps","Arguments":["500","600","100","1","True","True"]},
{"IsDisabled":false,"Name":"Tap","Arguments":["Keys.LButton","100","100","True"]},
{"IsDisabled":false,"Name":"@EndIf","Arguments":[]},
{"IsDisabled":false,"Name":"@If","Arguments":["TemplateMatching.TryMatch(\"C\") == True"]},
{"IsDisabled":false,"Name":"Tap","Arguments":["Keys.B","100","100","True"]},
{"IsDisabled":false,"Name":"@EndIf","Arguments":[]}
]
key0x2key
が
しました
key0x2key
が
しました
タスクスケジューラで起動時に実行するようにしたのですが、ツール本体の最小化ができません。dat→vbsから最小化を試みてもKeyToKey側のDOS窓が最小化されるだけで緑色のツール本体は最小化できないないです...なにか解決策があれば返信を貰えると助かります
key0x2key
が
しました
先程まで問題なく使用できていたのですが、マクロ作成等行うメイン画面だけが急に開かなくなりました。
---------------------------------------------------------
設定:画像認識の設定
メッセージ:1番目の設定の識別キーが設定されていません。
---------------------------------------------------------
上記のエラー?が出て開けない状況です。
お忙しいところ恐縮ですがアドバイス頂けますと幸いです。
key0x2key
が
しました