﻿<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Millisecond Forums » Millisecond Forums » Inquisit 5  » Multiple correct responses</title><generator>InstantForum 2017-1 Final</generator><description>Millisecond Forums</description><link>https://forums.millisecond.com/</link><webMaster>Millisecond Forums</webMaster><lastBuildDate>Fri, 11 Sep 2026 19:31:28 GMT</lastBuildDate><ttl>20</ttl><item><title>RE: Multiple correct responses</title><link>https://forums.millisecond.com/Topic29868.aspx</link><description>&lt;blockquote data-id="29867" class="if-quote-wrapper" unselectable="on" data-guid="1602512192230" id="if_insertedNode_1602512191264" contenteditable="false"&gt;&lt;a class="quote-para" unselectable="on" style="display: none;" href="#" data-id="29867" title="Move Cursor Below" contenteditable="false"&gt;&lt;span unselectable="on"&gt;+&lt;/span&gt;&lt;/a&gt;&lt;a class="quote-delete" unselectable="on" style="display: none;" href="#" data-id="29867" title="Delete Quote" contenteditable="false"&gt;&lt;span unselectable="on"&gt;x&lt;/span&gt;&lt;/a&gt;&lt;span unselectable="on" class="quote-markup"&gt;[quote]&lt;/span&gt;&lt;div unselectable="on" class="if-quote-header" contenteditable="false"&gt;&lt;div unselectable="on" class="if-quote-toggle-wrapper"&gt;&lt;a class="if-quote-toggle quote-link" href="#" data-id="29867" title=" "&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[b]&lt;/span&gt;clarkm - 10/12/2020&lt;span unselectable="on" class="quote-markup"&gt;[/b]&lt;/span&gt;&lt;/div&gt;&lt;div class="if-quote-message if-quote-message-29867"&gt;&lt;div class="if-quote-message-margin" contenteditable="true"&gt;Hi all!&lt;br/&gt;&lt;br/&gt;I am creating a simple experiment where participants see a picture of an object, followed by a sound, and must respond with two simultaneous key presses. When participants respond, it should immediately go on to the next trial. The following code does that, which is great. However, I would like it so that pressing just ONE key (either 34 or 38) is recorded as an incorrect response. Currently, pressing just one key does nothing and Inquisit waits for a second key press before moving onto the next trial.&amp;nbsp;&lt;br/&gt;&lt;br/&gt;I am assuming the problem lies somewhere in the &amp;lt;trial&amp;gt; element (see below). Anyone have any ideas?&amp;nbsp;&lt;br/&gt;&lt;br/&gt;Thank you all in advance :-)&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;trial power_low&amp;gt;&lt;br/&gt;/ inputdevice = keyboard&lt;br/&gt;/ ontrialbegin = [list.bigstims.nextvalue]&lt;br/&gt;/ ontrialbegin = [values.Grip = "WHG"; values.Tone = "low"]&lt;br/&gt;/ ontrialbegin = [values.first_key=0; values.first_key_latency=0;&lt;br/&gt;&amp;nbsp; values.second_key=0; values.second_key_latency = 0;&lt;br/&gt;&amp;nbsp; values.correctkeys = "34, 38"; ]&lt;br/&gt;/ stimulustimes = [1 = big_objects; 2000 = sound.low]&lt;br/&gt;/ validresponse = (34, 38)&lt;br/&gt;/ isvalidresponse = [if(values.first_key==0) {&lt;br/&gt;&amp;nbsp; values.first_key=trial.power_low.response;&lt;br/&gt;&amp;nbsp; values.first_key_latency=trial.power_low.latency;&lt;br/&gt;&amp;nbsp; false; };&lt;br/&gt;&amp;nbsp; if (values.first_key != 0 &amp;amp;&amp;amp; trial.power_low.latency&amp;gt;values.first_key_latency) {&lt;br/&gt;&amp;nbsp; values.second_key=trial.power_low.response;&lt;br/&gt;&amp;nbsp; values.second_key_latency = trial.power_low.latency;&lt;br/&gt;&amp;nbsp; false; };&lt;br/&gt;&amp;nbsp; values.first_key != 0 &amp;amp;&amp;amp; values.second_key != 0]&lt;br/&gt;/ iscorrectresponse = [contains(values.correctkeys, values.first_key) &amp;amp;&amp;amp; contains(values.correctkeys, values.second_key)&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;amp;&amp;amp; (values.first_key != values.second_key)]&lt;br/&gt;/ beginresponsetime = 2000&lt;br/&gt;/ responseinterrupt = immediate&lt;br/&gt;/ recorddata = true&lt;br/&gt;/ timeout = (7000)&lt;br/&gt;/ branch = [if (trial.power_low.error) trial.errorfb]&lt;br/&gt;/ branch = [if (trial.power_low.correct) trial.correctfb]&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;a class="if-quote-goto quote-link" href="#" data-id="29867"&gt;&lt;span class="goto"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[/quote]&lt;/span&gt;&lt;/blockquote&gt;&lt;br/&gt;The trial will wait for a 2nd response for the duration of the timeout. If no such response occurs, it'll move on to the next. That's how the trial is set up. If you want to reduce the amount of time the participant has to submit the two responses, reduce the timeout. Inquisit has no way of knowing whether a participant still *will* press the 2nd key after they've pressed the first.&lt;br/&gt;&lt;br/&gt;Key presses will virtually never happen at exactly the same time, so: Inquisit *has* to wait for the 2nd key press (and will do so for the duration of the timeout). If you were to terminate the trial after detecting a single key press, you would never even have the chance to catch the 2nd key press. Now, if for the purpose of scoring responses as correct / incorrect, you wish to check that the key presses are no more than X milliseconds apart, you can do that via /iscorrectresponse.&lt;br/&gt;&lt;br/&gt;&amp;lt;values&amp;gt;&lt;br/&gt;/ first_key = 0&lt;br/&gt;/ second_key = 0&lt;br/&gt;/ first_key_latency = 0&lt;br/&gt;/ second_key_latency = 0&lt;br/&gt;/ correctkeys = ""&lt;br/&gt;&amp;lt;/values&amp;gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;trial power_low&amp;gt;&lt;br/&gt;/ inputdevice = keyboard&lt;br/&gt;/ ontrialbegin = [values.first_key=0; values.first_key_latency=0;&lt;br/&gt;  values.second_key=0; values.second_key_latency = 0;&lt;br/&gt;  values.correctkeys = "34, 38"; ]&lt;br/&gt;/ stimulustimes = [1 = wait; 2000 = respond]&lt;br/&gt;/ validresponse = (34, 38)&lt;br/&gt;/ isvalidresponse = [if(values.first_key==0 &amp;amp;&amp;amp; trial.power_low.response &amp;gt; 0) {&lt;br/&gt;  values.first_key=trial.power_low.response;&lt;br/&gt;  values.first_key_latency=trial.power_low.latency;&lt;br/&gt;  false; };&lt;br/&gt;  if (values.first_key &amp;gt; 0 &amp;amp;&amp;amp; trial.power_low.response &amp;gt; 0 &amp;amp;&amp;amp; trial.power_low.latency&amp;gt;values.first_key_latency) {&lt;br/&gt;  values.second_key=trial.power_low.response;&lt;br/&gt;  values.second_key_latency = trial.power_low.latency;&lt;br/&gt;  false; };&lt;br/&gt;  values.first_key &amp;gt; 0 &amp;amp;&amp;amp; values.second_key &amp;gt; 0]&lt;br/&gt;/ iscorrectresponse = [contains(values.correctkeys, values.first_key) &amp;amp;&amp;amp; contains(values.correctkeys, values.second_key)&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;amp;&amp;amp; (values.first_key != values.second_key) &amp;amp;&amp;amp; abs(values.second_key_latency-values.first_key_latency)&amp;lt;100]&lt;br/&gt;/ beginresponsetime = 2000&lt;br/&gt;/ responseinterrupt = immediate&lt;br/&gt;/ recorddata = true&lt;br/&gt;/ timeout = 7000&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;text wait&amp;gt;&lt;br/&gt;/ items = ("wait...")&lt;br/&gt;&amp;lt;/text&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;text respond&amp;gt;&lt;br/&gt;/ items = ("NOW RESPOND")&lt;br/&gt;&amp;lt;/text&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;block myblock&amp;gt;&lt;br/&gt;/ trials = [1-4 = power_low]&lt;br/&gt;&amp;lt;/block&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;data&amp;gt;&lt;br/&gt;/ columns = (date time subject group blocknum blockcode trialnum trialcode response latency correct &lt;br/&gt;values.first_key values.first_key_latency values.second_key values.second_key_latency values.correctkeys)&lt;br/&gt;/ separatefiles = true&lt;br/&gt;&amp;lt;/data&amp;gt;&lt;br/&gt;</description><pubDate>Mon, 12 Oct 2020 14:46:51 GMT</pubDate><dc:creator>Dave</dc:creator></item><item><title>Multiple correct responses</title><link>https://forums.millisecond.com/Topic29867.aspx</link><description>Hi all!&lt;br/&gt;&lt;br/&gt;I am creating a simple experiment where participants see a picture of an object, followed by a sound, and must respond with two simultaneous key presses. When participants respond, it should immediately go on to the next trial. The following code does that, which is great. However, I would like it so that pressing just ONE key (either 34 or 38) is recorded as an incorrect response. Currently, pressing just one key does nothing and Inquisit waits for a second key press before moving onto the next trial.&amp;nbsp;&lt;br/&gt;&lt;br/&gt;I am assuming the problem lies somewhere in the &amp;lt;trial&amp;gt; element (see below). Anyone have any ideas?&amp;nbsp;&lt;br/&gt;&lt;br/&gt;Thank you all in advance :-)&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;trial power_low&amp;gt;&lt;br/&gt;/ inputdevice = keyboard&lt;br/&gt;/ ontrialbegin = [list.bigstims.nextvalue]&lt;br/&gt;/ ontrialbegin = [values.Grip = "WHG"; values.Tone = "low"]&lt;br/&gt;/ ontrialbegin = [values.first_key=0; values.first_key_latency=0;&lt;br/&gt;&amp;nbsp; values.second_key=0; values.second_key_latency = 0;&lt;br/&gt;&amp;nbsp; values.correctkeys = "34, 38"; ]&lt;br/&gt;/ stimulustimes = [1 = big_objects; 2000 = sound.low]&lt;br/&gt;/ validresponse = (34, 38)&lt;br/&gt;/ isvalidresponse = [if(values.first_key==0) {&lt;br/&gt;&amp;nbsp; values.first_key=trial.power_low.response;&lt;br/&gt;&amp;nbsp; values.first_key_latency=trial.power_low.latency;&lt;br/&gt;&amp;nbsp; false; };&lt;br/&gt;&amp;nbsp; if (values.first_key != 0 &amp;amp;&amp;amp; trial.power_low.latency&amp;gt;values.first_key_latency) {&lt;br/&gt;&amp;nbsp; values.second_key=trial.power_low.response;&lt;br/&gt;&amp;nbsp; values.second_key_latency = trial.power_low.latency;&lt;br/&gt;&amp;nbsp; false; };&lt;br/&gt;&amp;nbsp; values.first_key != 0 &amp;amp;&amp;amp; values.second_key != 0]&lt;br/&gt;/ iscorrectresponse = [contains(values.correctkeys, values.first_key) &amp;amp;&amp;amp; contains(values.correctkeys, values.second_key)&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;amp;&amp;amp; (values.first_key != values.second_key)]&lt;br/&gt;/ beginresponsetime = 2000&lt;br/&gt;/ responseinterrupt = immediate&lt;br/&gt;/ recorddata = true&lt;br/&gt;/ timeout = (7000)&lt;br/&gt;/ branch = [if (trial.power_low.error) trial.errorfb]&lt;br/&gt;/ branch = [if (trial.power_low.correct) trial.correctfb]&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;</description><pubDate>Mon, 12 Oct 2020 14:20:36 GMT</pubDate><dc:creator>clarkm</dc:creator></item></channel></rss>