MouseBox のキーボード イベントに関するバグを修正以下のコードを検討してください。
Names Default To Here( 1 );
New Window( "SetKey Example", mb = MouseBox( tb = Text Box( "Press a key." ) ) );
mb << setkey( Function( {this, key}, show( key ) ) );
mb << setkeyenable( 1 );
mb << setfocus;などのボタンを押すとK 、添付された関数が 2 回実行されます。明らかに、タイミングなどで回避策を作成できますが、JMP 開発者でさえ、そのようなユーザーベースの回避策は残念だと考えると思います。
このウィッシュ リスト リクエストのきっかけは何ですか?
あなたが見たいと思う改善は何ですか?
なぜこの考えが重要なのですか?
自動化とスクリプトRe: MouseBox のキーボード イベントに関するバグを修正うわー、なんてクールな機能:セットキー!
言及してくれてありがとう...
それにもかかわらず、本当に奇妙な問題です!
驚くべきことに、関数は常に 2 回トリガーされるとは限らず (a、b、r、t、z を参照)、Return (および Enter) の場合は、追加の End を取得します":
ドイツ語キーボードの Jmp17:

Re: MouseBox のキーボード イベントに関するバグを修正キーを押してからもう一度放したことが原因なのだろうかと思いました。
ただし、キーを押し続けると、機能が何度もトリガーされます。
Return キーを押したときの結果は特に興味深いものです。 それは次のとおりです。

Re: MouseBox のキーボード イベントに関するバグを修正コマンドの 2 つのトリガーの間にどのくらいの時間がかかるのか疑問に思いました - そうすることで、簡単な解決策を見つけました。
コマンドを少しだけ作りますより長いですshow(key) よりも - そしてそれはちょうど1回トリガーされます:)
最初の関数は 2 回トリガーされます。

2 番目の (少し長い) 関数のコメントを外すと、問題が解決します。

Names Default To Here( 1 );
time0 = 0;
doSomething = Function( {this, key},
time = HP Time();
Write("\!n v1: ",key," ", time);
);
doSomething2 = Function( {this, key},
time = HP Time();
dt = (time - time0)/1000000;
Write ( "\!n v2: ", key," ", dt);
time0 = time;
);
New Window( "SetKey Example",
H List box(mb = MouseBox( tb = Text Box( "Press a key." )), Button Box ("save", onSave()))
);
mb << setkey( Function( {this, key}, doSomething( this, key ) ) );
//mb << setkey( Function( {this, key}, doSomething2( this, key ) ) );
mb << setkeyenable( 1 );
mb << setfocus;
Re: MouseBox のキーボード イベントに関するバグを修正 - ステータスが次のように変更されました: Acknowledgedやあ@ErraticAttack 、そしてコメントをくださった皆様。 これはバグのように聞こえます。 テクニカル サポートと共有しています。
Re: MouseBox のキーボード イベントに関するバグを修正残念ながら、Mouse Box のドキュメントは完全ではありません。私たちは認識しており、修正するリストに載っています。それまでの間、<< Set Key メッセージは、囲まれた関数からの「ブール値」の戻り値に応答するように設計されていることに注意してください。関数が "true" (1 など) を返す場合、キーの押下が処理されたことを Set Key に示し、見かけ上の 2 番目の関数呼び出しは取得されません。関数が "false" (0 など) を返す場合、OP の例で示されている動作が得られます。これは、キーを押すたびに単一のステートメントをログに書き込む OP の例の変更です。
Names Default To Here( 1 );
New Window( "SetKey Example", mb = MouseBox( tb = Text Box( "Press a key." ) ) );
mb << setkey( Function( {this, key},
show( key );
1; // return "boolean" to indicate if the key press was processed.
) );
mb << setkeyenable( 1 );
mb << setfocus;Re: MouseBox のキーボード イベントに関するバグを修正ありがとう@_jr 、これは完全に理にかなっています-Qtイベントと同じです。
Re: MouseBox のキーボード イベントに関するバグを修正 - ステータスが次のように変更されました: 配信済み