KbWait不会注册按键

时间:2014-10-14 20:34:11

标签: matlab psychtoolbox

我正在尝试收集键盘数据,但我无法让KbWait工作。在下面的代码中,我试图等待参与者回复,检查他们的响应是否是两个可接受的答案之一,然后继续。只有当参与者按下“j”或“f”时才会继续。

        response = [];        
        while isempty(response)&&(GetSecs - FlipTimestamp) < 10
            [keyIsDown, RTsecs, RTkeyCode, deltaSecs] = KbWait;
            if keyIsDown
                r=find(RTkeyCode);%this should be the code for the key pressed
                response=KbName(r);%Figure out what key was pressed
                rt=num2str(RTsecs-time);  %subtract off timestamp from when window was flipped
                if response == 'f'
                    match_response= false;
                end
                if response == 'j'
                    match_response= true;
                end
            end
        end

然而,KbWait永远不会回来。当我尝试从命令行运行它时,它也不起作用。它只是挂起并拒绝返回,我必须打断程序。

2 个答案:

答案 0 :(得分:1)

你发布这个已经九个月了,所以我想你已经找到了某种解决方案。但我也有这个问题,这就是我发现的:

我浏览了整个HID列表:devices = PsychHID('Devices') 当我检查每个人的'usageName'属性时,我发现多个设备被认为是'键盘',即使我只连接了一个实际的键盘。

然后我尝试将每个索引作为KbWait的参数。当我找到正确的那个时,KbWait工作了。

答案 1 :(得分:0)

您好,我认为您的问题是KbWait功能。

你使用KbWait就像ist KbCheck但这些函数的输出是不同的

[secs, keyCode, deltaSecs] = KbWait([deviceNumber][, forWhat=0][, untilTime=inf])

[keyIsDown, secs, keyCode, deltaSecs] = KbCheck([deviceNumber])

尝试KbCheck比KbWait更精确,因为KbWait每5毫秒检查一次键盘

这是我之前写的一个函数:working KbCheck