Log response time for return/enter in inline script
Hi
I have made an experiment in which I use an inline_script.
I want to show my participants a sketchpad and at the same time let them give a multiple character response (i.e., they have to solve arithmetic items which are shown with the sketchpad; answers range from 25-112). They have to submit their answer by pressing the return/enter key.
Using different answers in this forum, I have come up with the following script (remark: my sketchpad is called "StimulusDisplay")
from openexp.canvas import canvas from openexp.keyboard import keyboard my_canvas = canvas(self.experiment) my_keyboard = keyboard(self.experiment) resp = "" # Here we store the response. t1 = self.time() while True: # Get a keyboard response key, time = my_keyboard.get_key() # keyboard.to_chr() converts the keycode to a description, # like 'space' or 'return'. If return is pressed the loop # should be exited. if my_keyboard.to_chr(key) == "return": break # Handle backspace by removing the last character if my_keyboard.to_chr(key) == "backspace": resp = resp[:-1] else: # The built-in chr() converts the keycode to a character, # like ' ' and '/'. resp += my_keyboard.to_chr(key) # Copy the canvas from a sketchpad called 'StimulusDisplay' and # overlay the response my_canvas.copy(self.experiment.items["StimulusDisplay"].canvas) my_canvas.text(resp, x=0, y=300) my_canvas.show() # Save the response rt = time - t1 self.experiment.set("ANSWER", resp) self.experiment.set("ANSWER_rt", rt)
There are several problems with my script.
- I am not sure if my response time variable (rt) gives me the response time for when the return key is pressed?
- My sketchpad disappears after the first key is pressed; i want it to stay until enter/return is pressed
- I want to use the numbers on the AZERTY keyboard, but I need the shift lock to be forced. I have no idea how to do this.
Sorry, I'm really new to Python.
HUGE THANKS IN ADVANCE!
Elien
Comments
Hi Elien,
Your code used a little outdated syntax of Opensesame, by now things can be done a little easier (see my code below). Also, it is somewhat better to present the sketchpad in the inline_script itself, basically the same way you show the response.
Hope it helps,
Eduard