码迷,mamicode.com
首页 > 其他好文 > 详细

psychtoolbox获取按键KbGet

时间:2015-02-21 06:35:12      阅读:242      评论:0      收藏:0      [点我收藏+]

标签:

psychtoolbox获取按键有许多方法,常见的有KbCheck, KbWait, KbStrokeWait, KbPressWait, KbReleaseWait

其中,KbCheck检查键盘所有按键的状态,不打断程序执行,而Wait系列会让程序“卡死”,直到按下了一个按键。往往程序只需要获取一个按键即可,可实际测试下来,用Wait系列精度不够,在两次按键间隔小于0.1秒时,Wait系列的函数不能很好地反映所按下的按键,连续按按键会miss许多。

为此,这里用KbCheck实现了一个KbGet,它可以打断程序执行,直到按下按键为止,并获取这个按下的按键。按键时间间隔可以小于0.05。


复制以下内容后保存成KbGet.m,放在实验程序文件夹下
========================================

function [secs key] = KbGet(limit, varargin)

%[secs key] = KbGet([limit])

%获取一个按键,并返回得到这个按键时的时间

%可以设置limit来限制按键反应时间,超时则返回key = 0

%精度比KbStrokeWait高

%author: zbg 2015-2

    if nargin == 0

        limit = inf;

    end

    [keyIsDown, oldsecs, oldkeyCode, deltaSecs] = KbCheck;

    x = [];

    while numel(x) == 0

        [keyIsDown, secs, keyCode, deltaSecs] = KbCheck;

        x = find(keyCode > oldkeyCode);

        oldkeyCode = keyCode;

        if secs - oldsecs > limit

            key = 0;

            return

        end

    end

    key = x(1);

    

end


psychtoolbox获取按键KbGet

标签:

原文地址:http://my.oschina.net/u/1387924/blog/379421

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!