7from pygaze
import libscreen
8from pygaze
import libtime
9from pygaze
import liblog
10from pygaze
import libinput
11from pygaze
import eyetracker
17disp = libscreen.Display()
20tracker = eyetracker.EyeTracker(disp)
23keyboard = libinput.Keyboard(keylist=[
'space'], timeout=
None)
27log.write([
"trialnr",
"trialtype",
"endpos",
"latency",
"correct"])
30inscreen = libscreen.Screen()
31inscreen.draw_text(text=
"When you see a cross, look at it and press space. Then make an eye movement to the black circle when it appears.\n\n(press space to start)", fontsize=24)
32fixscreen = libscreen.Screen()
33fixscreen.draw_fixation(fixtype=
'cross',pw=3)
35targetscreens[
'left'] = libscreen.Screen()
36targetscreens[
'left'].draw_circle(pos=(int(constants.DISPSIZE[0]*0.25),constants.DISPSIZE[1]/2), fill=
True)
37targetscreens[
'right'] = libscreen.Screen()
38targetscreens[
'right'].draw_circle(pos=(int(constants.DISPSIZE[0]*0.75),constants.DISPSIZE[1]/2), fill=
True)
40feedbackscreens[1] = libscreen.Screen()
41feedbackscreens[1].draw_text(text=
'correct', colour=(0,255,0), fontsize=24)
42feedbackscreens[0] = libscreen.Screen()
43feedbackscreens[0].draw_text(text=
'incorrect', colour=(255,0,0), fontsize=24)
57for trialnr
in range(1,21):
59 trialtype = random.choice([
'left',
'right'])
66 checked = tracker.drift_correction()
69 tracker.start_recording()
70 tracker.status_msg(
"trial %d" % trialnr)
71 tracker.log(
"start_trial %d trialtype %s" % (trialnr, trialtype))
74 disp.fill(screen=fixscreen)
76 tracker.log(
"fixation")
77 libtime.pause(random.randint(750, 1250))
80 disp.fill(targetscreens[trialtype])
82 tracker.log(
"target %s" % trialtype)
85 t1, startpos = tracker.wait_for_saccade_start()
86 endtime, startpos, endpos = tracker.wait_for_saccade_end()
89 tracker.stop_recording()
92 if (trialtype ==
'left' and endpos[0] < constants.DISPSIZE[0]/2)
or (trialtype ==
'right' and endpos[0] > constants.DISPSIZE[0]/2):
98 disp.fill(feedbackscreens[correct])
103 log.write([trialnr, trialtype, endpos, t1-t0, correct])