检测python中的同时按键

时间:2016-11-30 08:48:58

标签: python-2.7

我想提出一些刺激。在每次刺激之后,请求两个同时按键。 只有一个键负责呈现下一个刺激。两者都应记录下来。我如何在python中获得它们?

我试过这样:

kb = keyboard(keylist = ['f','g','h','j','<','-','d','k'])
Break = canvas()
Break.text('')
A = canvas()
A.text('A')
B = canvas()
B.text('B')
seq = [A,B]*5 
seq.reverse() #pop wählt von hinten aus
var.T_Resp=[]
var.T_Resp2=[]
var.Resp=[]
var.Resp2=[]
var.Stim=[]
var.T_Stim=[]
last=None
last2=None
t =seq[-1].show()
var.T_Stim.append(t)
if seq[-1] == A:
    var.Stim.append('A')
else:
    var.Stim.append('B')
print var.Stim, t
seq.pop() #pops out the last
while True:
    if (len(seq)!=0):
        key, time = kb.get_key(timeout=0)
        if key == 'f':
            var.T_Resp2.append(time)
            var.Resp2.append(key)
            print key, time
            kb.flush()    
        elif key == '-':
            print key, time
            var.T_Resp.append(time)
            var.Resp.append(key)
            t = seq[-1].show()
            var.T_Stim.append(t)
            if seq[-1] == A:
                var.Stim.append('A')
            else:
                var.Stim.append('B')
            print var.Stim, t
            seq.pop()
    if (len(seq)==0): #Last presses
        key, time = kb.get_key(timeout=0)
        if key == 'f':
            var.T_Resp2.append(time)
            var.Resp2.append(key)
            print key, time
            if (time-t)>200:
                last2=time
            kb.flush() 
        elif key == '-':
            print key, time
            var.T_Resp.append(time)
            var.Resp.append(key)
            last=time
        elif last>0 and last2>0:
            print "Break", var.T_Resp, var.T_Resp2
            break
        elif last2==None and len(var.Resp)>9 :
            print "Break", var.T_Resp, var.T_Resp2
            break

    #log.write_vars() #NOT POSSIBLE: slows down the whole loop

for i in range(len(var.Stim)):
    var.Stim1=var.Stim[i]
    var.T_Stim1=var.T_Stim[i]
    log.write_vars()
    print var.Stim1, var.T_Stim1

for i in range(len(var.Resp)):
    var.Resp1=var.Resp[i]
    var.T_Resp1=var.T_Resp[i]
    log.write_vars()
    print var.Resp1, var.T_Resp1

for i in range(len(var.Resp2)):
    var.Resp2_1=var.Resp2[i]
    var.T_Resp2_1=var.T_Resp2[i]
    log.write_vars()
    print var.Resp2_1, var.T_Resp2_1

print "Resp", len(var.Resp), "Resp2", len(var.Resp2)

for i in range(len(var.T_Resp)):
    print "IOI", var.T_Resp[i]-var.T_Resp2[i]

然而,由于两个原因,这不能很好地运作:

1)有时无法识别按键。我想知道这是否是完全同时按下键的时候。

2)在我的输出中,起始间隔(IOI)[两次同时按下之间的间隔]不是正态分布的。只有一些数字,例如-29,-2,2,29(由于极少数情况下的可变延迟+ -1)。这是从哪里来的?

我正在使用芝麻开门。

0 个答案:

没有答案