以下に記すのはKbDemoの中の
function KbDemoPart1
をちょっと変更したものです。
このプログラムではKbCheckが4回呼ばれています。
KbCheck1から3は必須ですが、KbCheck4があるとキー押しを正しく検出できなくなります。
プログラムの作成時につまづいたので、覚書として残しておきます。
KbCheck4があるとうまくいかないのは、KbCheck2(またはKbCheck3)とKbCheck4の間に何かのキーが押されると、
その情報はKbCheck2では検出できないため(だと思う)。
function keytest2clearall;ListenChar(2);KbName('UnifyKeyNames');%myKeyCheck;while KbCheck; end % どのキーも押されていないことを確認。(KbCheck1)while 1 % キーの状態をチェック [ keyIsDown, seconds, keyCode ] = KbCheck; %(KbCheck2) if keyIsDown fprintf('You pressed key %i which is %s\n', find(keyCode), KbName(keyCode)); if keyCode(KbName('ESCAPE')) break; end while KbCheck; end % 1回のキー押しに対して、fprintfが1回呼ばれるためにはこれが必要。 (KbCheck3) end %while KbCheck; end % ここのKbCheckは不要。これがあるとキー押しを正しく検出できない。 (KbCheck4)endListenChar(0);