Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Supported by

Collecting keyboard responses while flipping screens

amhamh
edited April 2018 in OpenSesame

I am trying to make an experiment in which a stimulus is moving over the screen for x screens, during which the participant may press a button (stimulus should keep moving, ignoring the response).
I prepare a list of canvasses in advance, which I can loop through during a trial. At a certain frame, I send a parallel port trigger. This all works really well. However, I can't get the response collection to work.
I tried while loops as well as a coroutines item but both seem to wait until the animation (aka showing a list of canvasses in succession) is done before recognising the keypress?
I tried just asking for my_keyboard.get_key() both with and without timeout (timeout messes up the animation, apart from not helping), both before and after canvaslist[i].show() and both before and after checking if i reaches a certain point. It doesn't work, at least not in the ways I tried... I can get it all to work easily if I have to show just one canvas instead of a succession of them.

This is my show-loop, how can I get python to collect keyboard responses during the whole loop?
thanks!!

(edit: oke, this post keeps crashing if I want to add some code...). I'll try in a reply.

Comments

  • keeps crashing. Here it is in a txt-file:

  • amhamh
    edited April 2018

    We found it! For future reference: ket_key() will give you back something even if no key has been pressed: none for the key, with a timestamp of in my case the last screen refresh. Which I could have known instead of spending 1.5 days on puzzling, as in the documentation "if response==None" is used, which I read as "is it empty" or maybe is.na() without checking this assumption. Sigh.

    I added an if statement to catch the first keyboard response:

    key,timestamp=my_keyboard.get_key()
    if key != None and alreadypressed==0
      #save variables here
      alreadypressed=1

    I would have liked to use coroutines, as the current script will give me some noise due to sampling per refresh rate, but it'll do :smile:

Sign In or Register to comment.