Millisecond Forums

recording timing and output of multiple keystrokes (using a set of specific keys) during a single trial

By mlleng13 - 6/3/2015

Is it possible to record multiple key strokes/responses during a single trial while a video is playing using Inquisit 4? Also, would it be possible to record the timing of each of the key strokes in the trial?

I am trying to set up a trial that plays a video while keeping track of participant's responses throughout the duration of the video. Essentially I need/want a way to keep track of when participants identify, and indicate (by pressing 1 of 2 valid keys) they have seen, a piece of information from the video. The problem is that the video needs to be played continuously, therefore the responses cannot be separated into multiple trials.

So far, it appears that it isn't possible but I wanted to be sure before I gave up. For the record this is my second day using Inquisit so you may have to bare with me. 
By Dave - 6/3/2015

There are two options:

#1: You can display your video via a <block>'s /bgstim. In this case, you *can* separate the responses into multiple trials.

<block someblock>
/ bgstim = (somevideo)
/ trials [1=sometrial]
/ timeout = [approximate length of video in milliseconds]

<trial sometrial>
/ ontrialend = [values.timeofresponse = block.someblock.elapsedtime]
/ validresponse = ("a", "b")
/ branch = [trial.sometrial]

#2: It is possible to have a single <trial> record multiple key presses. That requires some trickery using the /isvalidresponse attribute. See this example to get an idea:

By mlleng13 - 6/4/2015

Thank you, this was extremely helpful.
By Blazer - 6/4/2015

Hey Dave,

I just had a couple of comments/questions about your options.

First, I just wanted to mention that the timeout attribute gets out of sync with the video if the block has preinstructions. Factoring in that people take different amounts of time to read, the video will get cut off early or get paused at the final frame depending on how long they stayed on the preinstructions and how many buffer milliseconds you added. A surveypage can serve essentially the same purpose, but I guess you would have to put the surveypage in a separate block so that it won't be covered by the bgstim video. Is there a feasible workaround for that, such as adding a kind of "trialduration" of the preinstructions to a calculated timeout?

Second, I have to say that concatenating method that you suggested for me on option #2 works just as I want it to--giving me the exact number of times the participant hit the spacebar, plus the timestamps of each press--but I only have one valid key press. When you have two possible reponses, is it possible to match each time stamp to the key press that went with it using the concatenate method? If not, then I would guess that option #1 is more preferable, since it's automatically recording that data.
By Dave - 6/4/2015

Re. #1: You can also have your instruction pages displayed by a separate <block>. Alternatively you can determine the timeout dynamcally, e.g. by using setting it to the desired value in the 1st trial (i.e., after the instruction pages).

Re. #2: Yes, you can use the method to also record which key was pressed in the same way. Simply concatenate the trial's response property to another value.