【過去ログ】質問・要望・不具合報告
コメントするにあたってのお願い
不具合の報告をする際は可能な限りで構いませんので発生した状況や設定について詳細に報告してください。
コンソールウィンドウやKeyToKeyのフォルダ内にある「Log.txt」にメッセージが記録されていましたら内容を記載してください。
コンソールウィンドウやKeyToKeyのフォルダ内にある「Log.txt」にメッセージが記録されていましたら内容を記載してください。
連絡先
KeyToKeyはゲームなどで使うことを目的として開発されたユーティリティツールです。 キーボード、マウス、コントローラーにキーやマウスのボタン、マクロを割り当てることができます。最新のゲームなどでも動作可能です。
コメント一覧 (98)
マクロの編集について、以前は編集を終えると『ESC』キーを押すことで編集モードを抜けられたのですが、現在は『ESC』キーを押しても抜けられず画面外をクリックすることで抜けています。正式にはどのキーが編集を抜けるようになっているのでしょうか。
key0x2key
が
しました
先日から使用させていただいておりますがマクロを繰り返し行った際、「 待機<ミリ秒> 」の値が正常に処理されないことがあります。
さらに、この事象が起きると「 key to key 」を再起動するまで改善しませんでした。
バージョンは最新版を使用しております。
2時間のうちに4回ほど起こったので発生率も高いものと感じましたのでご報告させていただきます。
もし対処法等ございましたらご教示いただけると幸いです。
key0x2key
が
しました
同じC#スクリプトをメニュー経由での実行した場合は正常に動作することを確認済みです。
"MacroName": null,
"Line": null,
"Method": null,
"Trigger": null,
"Message": "引数の数が足りません。",
"Data": {},
"InnerException": null,
"StackTrace": " 場所 KeyToKey.Macro.Core.MacroStorage.SetParameter() 場所 C:\\Users\\root\\Source\\Repos\\KeyToKey\\KeyToKey\\Macro\\Core\\MacroStorage.cs:行 141\r\n 場所 KeyToKey.Macro.Core.QuickLaunchMacro.Execute() 場所 C:\\Users\\root\\Source\\Repos\\KeyToKey\\KeyToKey\\Macro\\Core\\QuickLaunch.cs:行 57",
"HelpLink": null,
"Source": "KeyToKey",
"HResult": -2146233088
一点、クイックランチャーの登録画面においてC#スクリプトのアイコンが「C#」となっているのに、クイックランチャーでの実行対象選択画面ではアイコンがアクションマクロのものが表示されていることに違和感を感じております。
拡張スクリプトとアクションマクロは登録画面、実行対象選択画面ともにアイコンは同一でした。
引数の有無は不具合の本質とは関係ない可能性もありますが、確認いただけますと幸いです。
key0x2key
が
しました
端的に言えば、拡張スクリプトから呼び出した場合の挙動はKeyToKeyを起動した時の状態のままで、関数内のコードを変更しても反映されません。
メニューからの呼び出しとキーボードをトリガーとした呼び出しで、同一の挙動を示すことを確認しています。
具体的には以下のファイル構成で、csex_debug() を呼び出した場合とcall_debug.csxを呼び出した場合の挙動を確認しています。
ファイル __extension.csx
// -------------------------------------------------------------
#load "cs_debug.csx"
bool csex_debug()
{
cs_debug();
rfeturn true;
}
// -------------------------------------------------------------
ファイル cs_debug.csx(このファイルを変更してコンソールの表示内容で挙動を確認しています。)
// -------------------------------------------------------------
bool cs_debug()
{
Console.WriteLine($"Test.");
return true;
}
// -------------------------------------------------------------
ファイル call_debug.csx
// -------------------------------------------------------------
#load "cs_debug.csx"
cs_debug();
// -------------------------------------------------------------
分かりにくい内容で申し訳ありませんが、ご確認よろしくお願いします。
key0x2key
が
しました
指摘の部分を修正してみましたが、当初に述べた通り拡張スクリプト経由で既存のC#スクリプト内に記述した関数を呼び出した場合、KeyToKeyを起動した時点のままであることを確認しました。
(当然ですが、再起動かリロードをすれば拡張スクリプト経由でも反映されます。)
実際に、検証した際のキャプチャーを保存しておりますので、確認して頂ければと思います。
https://youtu.be/hWdp0GOGC2U
key0x2key
が
しました
key0x2key
が
しました
このため、コピー&ペーストでアクションを追加することができないケースが多くなってしまい、困っています。
また、アクションを追加した際のアクションの編集画面で、編集終了後に右上のチェックアイコンをクリックしてもアクションの編集画面が閉じません。このチェックアイコンを何度もクリックすると、その回数分だけアクションが追加されてしまいます。しょうがないので、アクションの編集画面以外のところをクリックすると「編集中の項目があります。閉じますか?」とのポップアップが表示され、「はい」を選択することでアクションの編集ウィンドウを閉じることができます。
Windows11(64bit、pro)です。WindowsUpdateのせいかもしれませんが、ご報告いたします。4日ぐらい前はこのような不具合はありませんでした。
key0x2key
が
しました
お騒がせいたしました。
key0x2key
が
しました
入力の可視化→マウス→横向きにする
の挙動が少しおかしいようです。
実際の表示が縦向きになっていますが、「横向き」にチェックが入っています。
初めに開いたときと、実際の表示が縦向きで閉じ→開いたときと、両方で確認されました。
1回叩けばチェックが外れ、もう1回叩けば実際の表示も横向きになる、現状でも実用上問題ありません。
key0x2key
が
しました
Controller.LeftStick.Thumb
Controller.LeftStick.ThumbAsShort
において、
物理XInputゲームパッドを使うと、Y=+32767が期待されるスティック位置で-32768が出力されます。Xに関しては期待通りです。なお、Controller.LeftStick.Angleは問題なく計算されていますし、アプリやwindowsコントロールパネルや入力の可視化→コントローラ総合PS4などの挙動は期待通りです。
物理DirectInputゲームパッドを使うと、X、Y、共に-32678が期待されるスティック位置で-32767が出力されます。(これは手元のゲームパッドの出力の癖かも知れませんし、この違いが問題になるようなマクロを書かないので、このままでも全く困りません)
key0x2key
が
しました
コメント末尾にあるマクロを使っております。このDisposing内で確率的に
VirtualXInput.SetMappingState(0,mapping,true);
が実行されず、マッピング・オフのままマクロが終了してしまう事がしばしばあります。
一度このモードに入ると、次のマクロの開始・終了後にもマッピング・オフのままが多いのですが、たまに確率的にマッピング・オンに戻ります。
このマクロの起動は、キーボードのキーやマウスのボタンを「押したとき」に割り当てていて、「トグルモード」と「トリガーを離したときに実行中のマクロを終了させる」にチェックを付けています。なお、キーボードもマウスもポーリングで使用しているため取りこぼしはあるのですが、それとは別の問題であることをコンソールへのデバグ出力「開始・終了」で確認しています。
var mapping=new[]{
MappingSources.B,
MappingSources.LeftStickX,
};
Disposing+=(sender,e)=>{
VirtualXInput.SetMappingState(0,mapping,true);
var dt = DateTime.Now;
Console.WriteLine(" 終了 "+dt.ToString("HH:mm:ss"));
};
var dt = DateTime.Now;
Console.Write("開始 "+dt.ToString("HH:mm:ss"));
const int tick=17;
while(true){
VirtualXInput.SetMappingState(0,mapping,false);
Wait(tick);
}
key0x2key
が
しました
1. 正常に動作している状態から
2. Select(Back)ボタンをトリガーとしてキー割当を行います
3. ○/B ボタンを入力して割り当てます。とくに詳細設定はしません
4. 同じトリガーにもう一つ ○/B ボタンを追加します。詳細設定なし
5. 保存して ○/Bボタンを押します。正しく動作します(入力の可視化コントローラ等で確認)
6. Select(Back)キーを押したり離したりしても、正しく動作しています
7. 以降、○/B ボタンを押しても反応しません。コンソールにはなにも出力されません
○×同時押し的なマクロを作成しようとして、「○押す×押すwait、×離す○離す」というのを設定して気づきました。
key0x2key
が
しました
【新しい不具合】
Controller.NormalizedRightStick 【Right】
に関して、物理XInputゲームパッドでは、水平垂直ともに【Left】の値を読んでしまっているようです。
なお、物理DirectInputゲームパッドでは、Right、Leftともに期待通りの値が読めました。
【過去の不具合の検証】
ツール→入力の可視化→マウス→横向きにする
に関して、一番初めに使ったときは「実表示も横、緑チェックマークもあり」と同期されています。
しかし、「実表示が縦」の状態で閉じる(またはKeyToKeyを再起動する)などすると「実表示は縦、緑チェックマークはあり」とテレコされてしまうようです。
1回叩けば同期されるのと、実表示は期待通りに保存されるようなので、実用上は問題ありません。
Controller.LeftStick.ThumbAsShort
に関して、物理XInputゲームパッドでスティック下側マックスで急に負の値-32768に飛ぶ現象が前バージョンと同じままである事を確認しました。
旧型式・非推奨という事でこれらのプロパティは使用終了します。
VirtualXInput.SetMappingState()
に関して、まだ深く検証していませんが素晴らしい仕様になったと思います。
ループ中で高頻度マッピング・オフしていたのは、今から考えるとゴリ押しすぎでした。
key0x2key
が
しました
KeyToKey 210207 + vJoy 2.1.9.1 で正常に vJoy へ出力できている環境にて
1. KeyToKey の 210211~220523 では、vJoyへのマッピング設定がおかしな動作になります。
割り当て設定(コントローラ) → 仮想DirectInputコントローラの マッピングの設定を行う を開くと、全ての項目が「使用しない」になっています(210207以前では適切な割り当てになっています)。
「使用する」などに変更してこのマッピング先の設定ダイアログを閉じすぐ開くと、やはり全て「使用しない」になります。ただし 変更して保存すると、vJoyへの出力は正常に行われています。
2. vJoy を 2.2.1.1 に変更すると vJoy への出力が動作しません。コンソールにも特にエラーは出力されません。
KeyToKey 210207~220523 で確認。
この vJoy 2.2.1.1 は 2.1.9.1 の入手先の github.com/jshafer817/vJoy から fork した
github.com/njz3/vJoy/ で入手したものです。
3. vJoy ではなく、仮想XInputコントローラの マッピングの設定を行う 内の割り当ての初期値が、220522.1 より 全て「無効」になりました。ただし 項目1のvJoyのそれとは違い、変更した設定は閉じて開いても正しく反映・動作します。不具合ではありませんが、項目1のこともあったので一応の報告です。
key0x2key
が
しました
◆バージョン
220523
◆事象
KeyToKeyを非表示にしている際に、クイックランチャーを開こうとすると
反応せずKeyToKeyが落ちることが高頻度で発生します。
以前のバージョンから発生しており、バージョン220522.1では一時的に改善されたように感じましたが
再度発生しているようです。
key0x2key
が
しました
以下の4方法の内で「新しい方法、極座標」のみ、方向が不思議な感じに離散化されてしまいました。
+135°までの範囲ではおよそ45°で離散化されますが、その先の挙動は法則がわかりませんでした。
左スティックでも右スティックでも同じ現象が起きています。
(弧度法や角度やdoubleやintが入り混じって当方のひどい勘違いかも知れません。他の3方法は上手く動いてるので、緊急度はゼロです。)
var angle=(2*Math.PI/360)*15.0; // 15°
//var rpt=0.5*(2*Math.PI*tick/1000);
{
//新しい方法、直交座標
VirtualXInput.GetController(userIndex: 0).LeftStick.SetValue(Math.Sin(angle), Math.Cos(angle));
//新しい方法、極座標 ← 角度の細かい指定ができない
VirtualXInput.GetController(userIndex: 0).LeftStick.SetValueByAngle(angle/(2*Math.PI/360));
//前の方法、直交座標
VirtualXInput.SetStickValue(0, XInputSticks.LeftStickX, (short)(32767*Math.Sin(angle)));
VirtualXInput.SetStickValue(0, XInputSticks.LeftStickY, (short)(32767*Math.Cos(angle)));
//前の方法、極座標
VirtualXInput.SetStickValue(0, isLeftStick:true, (int)(angle/(2*Math.PI/360)));
//angle=(angle+rpt)%(2*Math.PI);
}
key0x2key
が
しました
1. joy.cpl で vJoy Device を表示させておきます
2. 割り当て設定(コントローラー)画面を表示しておきます
3. 入力の可視化 → コントローラー(Dualshock4) で、コントローラー → DirectInput → vJoy Device と設定します
*仮想DirectInputコントローラーのマッピング設定は初期値のままです。
ここで実物のコントローラーを適当に操作すると、
joy.cpl と 割り当て設定(コントローラー)の左ペイン?のコントローラー画像内 では全てのボタン入力に対して正しく反応しているように見えますが、入力の可視化 の画像のほうだけは 十字キー、左右スティック のみが反応する状態です
vJoyへの出力としては正しく動いており、見た目だけの問題ですが一応報告します。
なお vJoy 2.2.1.1 では一切反応しないのは以前と同様です。
key0x2key
が
しました
編集をクリックすると、反応なしで編集ウィンドウがどこかに開いているようですが
どこにもないです。
試しに、名前の変更をクリックしたら、編集ウィンドウを閉じてくださいと
表示されるので、どこかみえないところにひらいているのだとおもいますが、
KeyToKeyを終了させてもタスクマネージャーを見ると、バッググランドプロセスに
KeyToKeyという名前のものが終了しないで生きています。
このKeyToKeyを強制終了して、再度、KeyToKeyを起動して、編集をしようとしても
やはり出来ません。
KeyToKeyが起動した状態で、タスクバーで右クリックして、ウィンドウを左右に並べる、または
上下に並べるをしても、編集ウィンドウは表示されませんでした。
PCを再起動したらなおるかも?知れませんが、今作業中につきしばらくPCを再起動できないです。
ご報告でございます。
key0x2key
が
しました
以前、「仮想ゲームパッドのスティック値に(short)0を書き込むと反映されない」と報告したおりに、ScpVBusの不具合だろうと推測していたのですが、今回触ったところ、KeyToKeyのdualshockの可視化の不具合かもしれないと思いました。
【準備】仮想ゲームパッド 0 を有効にし、Dualshock4 の可視化で XInput Device 0 を表示させます。(物理ゲームパッド不要です)
【検証】以下のマクロを走らせると、コンソールでは -1, 0, 1 と繰り返し表示されますが、可視化には 0 だけ反映されません。
毎回おまじないを当てて回避していましたが、おまじないを忘れたときの挙動から再度検証してみました。
おまじないの負荷は極小なので、こちらも緊急度ゼロです。
var mapping=new[]{
MappingSources.LeftStickX,
MappingSources.LeftStickY,
};
Disposing+=(sender,e)=>{
VirtualXInput.SetMappingState(0,mapping,true);
};
VirtualXInput.SetMappingState(0,mapping,false);
const int tick=250;
const double zero=0.0; // (short)0では可視化に反映されない
//const double zero=3.1e-5; // (short)1や(short)-1は可視化に反映される
for(int i=0;i<9;i++){
SetWriteLeft(-1.0, 0);
Wait(tick);
SetWriteLeft(zero, 0);
Wait(tick);
SetWriteLeft( 1.0, 0);
Wait(tick);
}
void SetWriteLeft(double h,double v){
//仮想ゲームパッドへ書き込み
VirtualXInput.GetController(userIndex: 0).LeftStick.SetValue(h,v);
//仮想ゲームパッドから読み込み
var stick = XInput.GetState(userIndex: 0).NormalizedLeftStick;
Console.WriteLine("{0: 0.00000;-0.00000} {1: 0.00000;-0.00000}",stick.Horizontal,stick.Vertical);
}
key0x2key
が
しました
最新バージョンです
key0x2key
が
しました
アクションマクロ作成時、右クリックメニューの「置換」機能、「置換後の文字」のウィンドウに文字入力が受け付けないようですが不具合でしょうか?(現環境で5/22のアップデート前には使ったことがあるのですが、、、操作ミスでしたらすみません)
再度ダウンロードして、ScriptsやProfilesが空っぽの状態でも試しましたが、同じ症状でした。
key0x2key
が
しました
無線(BT)が切断されるとコンソールに以下の出力がなされます。
その後無線を再接続しても、vJoy へ出力されません。
vJoy へ出力されないだけで、可視化では正常に拾えています。
KeyToKey のメインウィンドウなどで リロード を行うと また vJoy へ正常出力されるようになります。
例外が起きてるというあたりから、リロードせずとも vJoy へ出力されるのが本来なのかなという推測での報告です。
==== コンソール出力ここから
SharpDX.SharpDXException: HRESULT: [0x80004005], Module: [General], ApiCode: [E_FAIL/Unspecified error], Message: エラーを特定できません
場所 SharpDX.Result.CheckError() 場所 C:\projects\sharpdx\Source\SharpDX\Result.cs:行 195
場所 SharpDX.DirectInput.DirectInput.CreateDevice(Guid arg0, IntPtr& arg1, ComObject arg2) 場所 C:\projects\sharpdx\Source\SharpDX.DirectInput\Generated\Interfaces.cs:行 882
場所 SharpDX.DirectInput.Joystick..ctor(DirectInput directInput, Guid deviceGuid) 場所 C:\projects\sharpdx\Source\SharpDX.DirectInput\Joystick.cs:行 26
場所 KeyToKey.Input.Controllers.JoystickDevice.Connect() 場所 C:\Users\root\Source\Repos\KeyToKey\KeyToKey\Input\Controllers\DirectInputListener2.cs:行 371
SharpDX.SharpDXException: HRESULT: [0x80040154], Module: [SharpDX.DirectInput], ApiCode: [DIERR_DEVICENOTREG/DeviceNotRegistered], Message: クラスが登録されていません
場所 SharpDX.Result.CheckError() 場所 C:\projects\sharpdx\Source\SharpDX\Result.cs:行 195
場所 SharpDX.DirectInput.DirectInput.CreateDevice(Guid arg0, IntPtr& arg1, ComObject arg2) 場所 C:\projects\sharpdx\Source\SharpDX.DirectInput\Generated\Interfaces.cs:行 882
場所 SharpDX.DirectInput.Joystick..ctor(DirectInput directInput, Guid deviceGuid) 場所 C:\projects\sharpdx\Source\SharpDX.DirectInput\Joystick.cs:行 26
場所 KeyToKey.Input.Controllers.JoystickDevice.Connect() 場所 C:\Users\root\Source\Repos\KeyToKey\KeyToKey\Input\Controllers\DirectInputListener2.cs:行 371
==== コンソール出力ここまで
続きます
key0x2key
が
しました
複数個所からキーボードの Up() を同時に呼んだとき(??)、希に例外が投げられるようです。
System.NullReferenceException: オブジェクト参照がオブジェクト インスタンスに設定されていません。
場所 KeyToKey.Macro.Scripts.Features.InternalKeyboard.Up(Keys key, Int32 interval, Boolean eventCancel) 場所 C:\Users\root\Source\Repos\KeyToKey\KeyToKey\Macro\Scripts\Features\Globals.cs:行 2150
場所 KeyToKey.Macro.Scripts.Features.Globals.Up(Keys key, Int32 interval, Boolean eventCancel) 場所 C:\Users\root\Source\Repos\KeyToKey\KeyToKey\Macro\Scripts\Features\Globals.cs:行 964
場所 Submission#0.<<Initialize>>b__0_0(Object sender, DisposingEventArgs e) 場所 :行 65
場所 KeyToKey.Macro.Scripts.Features.Globals.OnDisposing(DisposingEventArgs e) 場所 C:\Users\root\Source\Repos\KeyToKey\KeyToKey\Macro\Scripts\Features\Globals.cs:行 557
場所 KeyToKey.Macro.Scripts.Features.Globals.Dispose(DisposingEventArgs e) 場所 C:\Users\root\Source\Repos\KeyToKey\KeyToKey\Macro\Scripts\Features\Globals.cs:行 278
あるマクロ内で、
var keyList=new[]{
Keys.LButton,
Keys.W,
Keys.S,
Keys.A,
Keys.D,
//略
Keys.LShiftKey,
Keys.RShiftKey,
//略
//計マウス1ボタン、キーボード14キー
};
Disposing+=(sender,e)=>{
WaitConfig.Mouse.HighPrecision = true;
WaitConfig.Wait.HighPrecision = true;
foreach(var k in keyList){
Up(k,interval:1);// interval:0 だと例外発生、interval:1 で回避可能
}
};
としています。
・スタートアップマクロに登録しています。
・通常のマクロ終了ですとDisposing は1回しか呼ばれないため、単にUp()が逐次的に呼ばれるだけで何の問題もありません。
・プロファイルをリロードするとき、Disposing がほぼ同時に2回呼ばれるようです。
・Up()が少ないと例外発生しにくいですが、Up()の数が10を超えていると、ほぼ例外発生するようです。
interval:1 の指定で抑えられるので現在はそれで凌いでいます。(マクロの編集が落ち着いてくるとプロファイルのリロードも減りますので問題も起こりにくくなっています)
key0x2key
が
しました
本日、半年ほどぶりにアップデートしたのですが、それまでは正常に動いていたマクロの挙動がおかしくなってしまいました。
[
{"IsDisabled":false,"Name":"Down","Arguments":["Keys.Left","0","True"]},
{"IsDisabled":false,"Name":"Down","Arguments":["Keys.NumPad4","25","True"]},
{"IsDisabled":false,"Name":"Down","Arguments":["Keys.NumPad1","20","True"]},
{"IsDisabled":false,"Name":"Keyboard.UpAll","Arguments":[]},
{"IsDisabled":false,"Name":"Tap","Arguments":["Keys.Right","15","20","True"]},
{"IsDisabled":false,"Name":"Keyboard.UpAll","Arguments":[]}
]
というアクションリストなのですが、「全てのキーを離す」のアクションを実行しているにも関わらず、マクロに実行後に押させたキーがすべて押しっぱなしの状態になってしまいます。
アップデート前までは、マクロの実行後にはキーを離している状態になっていました。
また、「全てのキーを離す」のアクションを使っていない他のマクロに関しては正常に動作しています。
私には「全てのキーを離す」をアクションに不具合が発生しているのか、それともアップデートによりマクロの仕様が変化したのかは判断できないのですが、もし前者であるのであれば、お時間がある時にご確認いただければ幸いです。
改めて、素晴らしいツールをありがとうございます。
key0x2key
が
しました
2022/06/10 13:56:45:
{
"ClassName": "System.Runtime.InteropServices.COMException",
"Message": "OpenClipboard に失敗しました (HRESULT からの例外:0x800401D0 (CLIPBRD_E_CANT_OPEN))",
"Data": null,
"InnerException": null,
"HelpURL": null,
"StackTraceString": " 場所 System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo)\r\n 場所 System.Windows.Clipboard.Flush()\r\n 場所 System.Windows.Clipboard.CriticalSetDataObject(Object data, Boolean copy)\r\n 場所 System.Windows.Clipboard.SetDataInternal(String format, Object data)\r\n 場所 System.Windows.Clipboard.SetText(String text, TextDataFormat format)\r\n 場所 System.Windows.Clipboard.SetText(String text)\r\n 場所 KeyToKey.ViewModels.MacroSetting.MenuCommands.ActionList.CopyActionsCommand.OnExecute(Object parameter) 場所 C:\\Users\\root\\Source\\Repos\\KeyToKey\\KeyToKey\\ViewModels\\MacroSetting\\MenuCommands\\ActionList\\CopyActionsCommand.cs:行 36\r\n 場所 KeyToKey.ViewModels.MacroSetting.MenuCommands.BaseCommand.Execute(Object parameter) 場所 C:\\Users\\root\\Source\\Repos\\KeyToKey\\KeyToKey\\ViewModels\\MacroSetting\\MenuCommands\\BaseCommand.cs:行 47",
"RemoteStackTraceString": null,
"RemoteStackIndex": 0,
"ExceptionMethod": "8\nThrowExceptionForHRInternal\nmscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\nSystem.Runtime.InteropServices.Marshal\nVoid ThrowExceptionForHRInternal(Int32, IntPtr)",
"HResult": -2147221040,
"Source": "mscorlib",
"WatsonBuckets": null
}
key0x2key
が
しました
再度keytokeyを起動して終了しなおしても割り当てが解除されることはなく、PCを再起動するしか解決法がありませんでした。
key0x2key
が
しました
1.
拡大縮小150%で画像認識に失敗します。
windowsの設定→システム→ディスプレイ→拡大縮小とレイアウト→テキスト、アプリ、その他の項目のサイズを変更する
を【100%以外の設定でwindowsを起動】した間は、その後で100%に設定を変更しても、ターゲットアプリを再起動、KeyToKeyを再起動などしても、とにかく画像認識に失敗するようです
逆に、拡大縮小を【100%に設定してwindowsを起動】させると、その後は何%に設定を変更しても画像認識に成功するようです。
【100%起動】されすれば使えるので、対応が難しいようであれば放置でも大丈夫です。
(ただ、一部のアプリや一部の表示が、windows起動時の設定にひきずられるため【100%起動】を常用するのは少し厳しいです。)
(KeyToKey外の話ですが、D3D11以外の方法でキャプチャを試みると座標値も画像データも、この拡大縮小に撹乱されてとても苦労した記憶があります。)
2.
KeyToKey→ツール→ステータスが縦に潰れます。
ステータスを表示している半透明のウィンドウを画面上部の端を上に越えて移動させると縦が潰れてしまいます。
これはこれで使いどころがあるので、あっても良いかなと思うのですが、単純にマウス座標だけ見たいときやや使い辛いです。
3.
Keys.OemComma のキャメルケースがおかしいです。
表題の通りですが、Keys.Oemcommaとなってしまっているようです。
(個人的には、影響の範囲が狭そうなので後方互換?を考えずにさくさく修正してしまって問題無いかと思います。)
key0x2key
が
しました
あと細かいですが更新履歴の日付が未来の22/06/22になってます。
key0x2key
が
しました
コントローラのボタンの単純連射目的とし、
仮想XInputコントローラと、仮想DirectInputコントローラのマッピングは設定済みでどちらも正常動作している上で、
1. ○ボタンにトリガー作成
2. キー割り当て ○/B (この一つのみ)
3. 繰り返し有効、フェーズ1後待機時間300、フェーズ2後待機時間100
として保存します。
入力の可視化 コントローラーDS4→XInput Device 0 ないしは joy.cpl(の対応コントローラ)で確認すると、
○ボタン押下中、正しく連射されています。
しかし 入力の可視化 コントローラーDS4→vJoy ないしは joy.cpl(のvJoy Device)で確認すると、
○ボタン押下中は、単に○ボタンが押下され続けているだけになっています。
220621.1 で確認
key0x2key
が
しました
以下のマクロを作成し、適当にトリガーに設定します。
トグルモードオン、繰り返しオンとします。
====
DirectInput.押す("B", 0)
XInput.押す(0, "B", 0)
待機<ミリ秒>(200)
XInput.離す(0, "B", 0)
DirectInput.離す("B", 0)
待機<ミリ秒>(100)
====
トリガー実行すると、程よく連打され一見うまく動いているように見えますが、
入力の可視化やjoy.cpl等で見てみると、入力されているはずのボタンが光りません。
長時間動作させて観察すると、マレにボタンの入力が一瞬だけ光ります。
Xinput側、DirectInput側共に同じ挙動です。
1msか1fか、ごく短時間だけ押されている印象です。
押すと離すを分離せずに、
Xinput.押して離す() / DirectInput.押して離す() も同様で、
「押した後の待機時間」の設定にかかわらず、ごく短時間だけ押されているように見えます。
220621.1 で確認
key0x2key
が
しました
ドラッグアンドドロップで持っていけない感じになってます
持っていけたとしても関係のないのがきたりして
これは不具合でしょうか?
key0x2key
が
しました
1. KeyToKey 220621.1 をインストール
2. アプリケーションの設定 より 仮想XInput Device 0-3 を有効にする
3. 割当設定(コントローラ) より なにか適当に DirectInput のコントローラをセットアップ
3-1. 手元では DS4Windows の DS4出力(物理パッドもDS4) "Wireless Controller" を選択
3-2. セットアップを実行・完了させる
4. 同割当設定内で、コントローラの入力を仮想XInputコントローラにマッピング をオン
同様に XInput Device 1-3 のマッピングもオン
5. 保存
ここで joy.cpl、DS4Windows settingsタブ Utils枠内 XInputChecker、gamepad-tester.com 等で出力を確認すると、XInput Device 0 は正常に出力されていますが、XInput Device 1-3 は一切動作しません。
XInput Device 1-3を有効にするにあたって、何か他に必要な操作があったりするのでしょうか?
key0x2key
が
しました
SquareEnix のゲーム FF11の、ゲームパッド設定アプリ "Final Fantasy 11 Config"(以下ff11config) です。
KeyToKey 220621.1 で作成、マッピングした XInput Device 0 を ff11config で利用するようにしたとき、
RTとLTが 単一の軸 を読んでいるような動きになっています。
具体的には
o 入力が全ニュートラルにも関わらずRTがオンになりっぱなし
o R2トリガーを(物理的に)引いても 変化なし
o L2トリガーを引くと RT がオフになり LT がオンになる。トリガー戻すと RT オンに戻る
o R2 L2 両方引くと、RT LT 両方オンになる。
といった感じです。
KeyToKey で作成した仮想XInput デバイスではなく、別の XInput デバイスを ff11config で使うようにすると、
RT LT 問題なく動作しました。
例えば、(手元に物理 XInput デバイスが無いので) DS4Windows を xbox360 モードで動作させ
た場合など(この際KeyToKeyはもちろん実行停止しておきます)。
このような挙動になるのは、確認出来た限りではこの ff11config 上でだけで、
gamepad-tester.com や DS4Windows内ユーティリティ XInputChecker では、KeyToKey、DS4Windows 作成の仮想XInputデバイスはトリガー含めて正常に動作しています。
一点不思議なのは KeyToKey、DS4Windows 作成の仮想XInputデバイスの挙動を joy.cpl で見てみると、 R2 L2 を引く等 するとどちらも Z軸のみ が増減します。そもそも XInput なら軸がもう一つないとおかしいような?
そしてこの挙動ですが 版を遡って調べたところ KeyToKey 201218 では起きないことが確認できました。
つまり KeyToKey 201218 + ff11config の組み合わせで RT LT 正常動作します。
公開されている次の版、210123 では 220621.1 と同様の挙動になります。
key0x2key
が
しました
たとえば △○×□ 4ボタン全てに Button1 を割り当てたりすると、設定自体は完了できますが、
実際には、この順で最後のボタン(□)に のみ Button1 が割り当てられています。
他の(△○×)ボタンには何も割り当てられません。
本来割り当てられないものなら UI にて無効になってるとわかりやすいかな、と思います。
220708 で確認
key0x2key
が
しました
key0x2key
が
しました
key0x2key
が
しました
https://keytokey-dev.net/archives/32198975.html#comment-261
を試そうとして、
アナログスティックの8方向を有効にし、アナログスティック斜め方向にマウスカーソルの移動を割り当てたところ例外が吐かれました。Log.txtには何も出力されていません。
アナログスティック斜め4方向に割り当てた機能は実行されず(メインウィンドウに割り当てが表示されていないので順当)、縦横4方向に割り当てた機能は実行されています。
設定 : カーソル割り当て
メッセージ : 種類 'System.Exception' の例外がスローされました。
[StackTrace]
System.Exception: 種類 'System.Exception' の例外がスローされました。
場所 KeyToKey.Macro.Core.CursorAssign.get_IsLeft() 場所 C:\Users\root\Source\Repos\KeyToKey\KeyToKey\Macro\Core\CursorAssign.cs:行 60
場所 KeyToKey.Macro.Core.CursorAssign.GetDeadZone() 場所 C:\Users\root\Source\Repos\KeyToKey\KeyToKey\Macro\Core\CursorAssign.cs:行 110
場所 KeyToKey.Macro.Core.CursorAssign..ctor(MacroRepository Repository, ControllerButtons button, String[] args, AssignData setting) 場所 C:\Users\root\Source\Repos\KeyToKey\KeyToKey\Macro\Core\CursorAssign.cs:行 75
場所 KeyToKey.Macro.Core.RepositoryBuilder.CreateCursorAssign(MacroRepository repository, Group group, AssignData x) 場所 C:\Users\root\Source\Repos\KeyToKey\KeyToKey\Macro\Core\RepositoryBuilder.cs:行 714
*
もう1件は、同じく、
割り当て設定(コントローラー)→カーソル割り当て
において、オプション内の「横の移動量」の次が「左に移動」となっています。これは「横に移動」の方がわかりやすいと思います。
key0x2key
が
しました