<?xml version="1.0"?>
<Experiment xmlns:dt="urn:schemas-microsoft-com:datatypes"><General><Version><Major>2</Major><Minor>0</Minor><Internal>8</Internal><Build>90</Build><_VersionPersist dt:dt="int">50</_VersionPersist></Version></General><ExperimentObject><Root dt:dt="string">SessionProc</Root><Author dt:dt="string">Brandon S. Cernicky (Psychology Software Tools)</Author><Abstract dt:dt="string">The InputDevice.History property holds information about all of the 
responses received by the corresponding input device 
(i.e. Keyboard, Mouse, SRBox, Port) since the start of the 
experiment. Using the input device History, the current state of a 
key or button can be assessed via InLine script.

This sample assesses the state of the Q key and the spacebar via 
the Keyboard.History property. During each trial, a message 
(i.e. "Checking the state of the keys now…") is presented. 
Immediately following this message, InLine script is used to check 
the current state of the keys. Feedback about each key is then 
presented.

This sample can be modified to assess the state of other keyboard 
keys or the buttons from other devices (i.e. mouse, SRBox, etc) as 
well. In the CheckState InLine, simply change the parameters sent 
to the GetLastState and/or GetLastResponseData functions. For 
example, to get the state of SRBox button 3, you would use:

nLastState = GetLastState("3", SRBox)

Note that the SRBox device must first be added to the experiment 
via the Experiment object's Properties pages.</Abstract><Notes dt:dt="string"></Notes><CreationDateUtc dt:dt="dateTime">2013-10-30T18:31:32.000</CreationDateUtc><Features dt:dt="int">536870912</Features><Devices><Device><Name dt:dt="string">Display</Name><Class dt:dt="string">Display</Class><DeviceObject><_VersionPersist dt:dt="int">1</_VersionPersist><OpenDevice dt:dt="int">-1</OpenDevice><Width dt:dt="int">640</Width><Height dt:dt="int">480</Height><BitsPerPixel dt:dt="int">16</BitsPerPixel><DefaultColor dt:dt="string">white</DefaultColor><DisplayIndex dt:dt="int">1</DisplayIndex><DefaultSettingsUsed dt:dt="string">No</DefaultSettingsUsed></DeviceObject></Device><Device><Name dt:dt="string">Sound</Name><Class dt:dt="string">Sound</Class><DeviceObject><_VersionPersist dt:dt="int">1</_VersionPersist><OpenDevice dt:dt="int">0</OpenDevice><Channels dt:dt="int">2</Channels><Samples dt:dt="int">22050</Samples><Bps dt:dt="int">16</Bps></DeviceObject></Device><Device><Name dt:dt="string">Keyboard</Name><Class dt:dt="string">Keyboard</Class><DeviceObject><_VersionPersist dt:dt="int">1</_VersionPersist><OpenDevice dt:dt="int">-1</OpenDevice><CollectionMode dt:dt="int">3</CollectionMode><EmulateDeviceName dt:dt="string"></EmulateDeviceName><CapsLock dt:dt="boolean">0</CapsLock><NumLock dt:dt="boolean">1</NumLock></DeviceObject></Device><Device><Name dt:dt="string">Mouse</Name><Class dt:dt="string">Mouse</Class><DeviceObject><_VersionPersist dt:dt="int">1</_VersionPersist><OpenDevice dt:dt="int">-1</OpenDevice><CollectionMode dt:dt="int">1</CollectionMode><EmulateDeviceName dt:dt="string"></EmulateDeviceName><OpenMode dt:dt="int">0</OpenMode><ShowCursor dt:dt="boolean">0</ShowCursor></DeviceObject></Device></Devices><Packages/><DataFile><WarnBeforeOverwrite dt:dt="int">-1</WarnBeforeOverwrite><WarnIfConvertFailed dt:dt="int">-1</WarnIfConvertFailed><RemoveERecoveryFile dt:dt="int">0</RemoveERecoveryFile><ReceiveFeedbackDuringDataFileConversion dt:dt="int">-1</ReceiveFeedbackDuringDataFileConversion><LogLevels><LogLevel dt:dt="string">Block</LogLevel><LogLevel dt:dt="string">Trial</LogLevel><LogLevel dt:dt="string">SubTrial</LogLevel><LogLevel dt:dt="string">LogLevel5</LogLevel><LogLevel dt:dt="string">LogLevel6</LogLevel><LogLevel dt:dt="string">LogLevel7</LogLevel><LogLevel dt:dt="string">LogLevel8</LogLevel><LogLevel dt:dt="string">LogLevel9</LogLevel><LogLevel dt:dt="string">LogLevel10</LogLevel></LogLevels></DataFile><StartupInfo><DisplaySummary dt:dt="boolean">1</DisplaySummary><UseDefaults dt:dt="boolean">0</UseDefaults><StartupInfoItems><StartupInfoItem><Name dt:dt="string">Subject</Name><Prompt dt:dt="string">Please enter the Subject Number (1-32767, 0=No Data Logging):</Prompt><DataType dt:dt="int">0</DataType><Enabled dt:dt="int">-1</Enabled><PromptEnabled dt:dt="int">-1</PromptEnabled><Default dt:dt="string">1</Default><Min dt:dt="int">0</Min><Max dt:dt="int">32767</Max></StartupInfoItem><StartupInfoItem><Name dt:dt="string">Session</Name><Prompt dt:dt="string">Please enter the Session Number (1-32767):</Prompt><DataType dt:dt="int">0</DataType><Enabled dt:dt="int">-1</Enabled><PromptEnabled dt:dt="int">-1</PromptEnabled><Default dt:dt="string">1</Default><Min dt:dt="int">1</Min><Max dt:dt="int">32767</Max></StartupInfoItem><StartupInfoItem><Name dt:dt="string">Group</Name><Prompt dt:dt="string">Please enter Subject's Group (0-32767):</Prompt><DataType dt:dt="int">0</DataType><Enabled dt:dt="int">0</Enabled><PromptEnabled dt:dt="int">0</PromptEnabled><Default dt:dt="string">1</Default><Min dt:dt="int">0</Min><Max dt:dt="int">32767</Max></StartupInfoItem><StartupInfoItem><Name dt:dt="string">Name</Name><Prompt dt:dt="string">Please enter Subject's Name:</Prompt><DataType dt:dt="int">1</DataType><Enabled dt:dt="int">0</Enabled><PromptEnabled dt:dt="int">0</PromptEnabled><Default dt:dt="string"></Default><MaxLength dt:dt="int">255</MaxLength></StartupInfoItem><StartupInfoItem><Name dt:dt="string">Age</Name><Prompt dt:dt="string">Please enter Subject's Age (0-150):</Prompt><DataType dt:dt="int">0</DataType><Enabled dt:dt="int">0</Enabled><PromptEnabled dt:dt="int">0</PromptEnabled><Default dt:dt="string">0</Default><Min dt:dt="int">0</Min><Max dt:dt="int">150</Max></StartupInfoItem><StartupInfoItem><Name dt:dt="string">Sex</Name><Prompt dt:dt="string">Please enter Subject's Sex:</Prompt><DataType dt:dt="int">2</DataType><Enabled dt:dt="int">0</Enabled><PromptEnabled dt:dt="int">0</PromptEnabled><Default dt:dt="string">male</Default><Choices><Choice dt:dt="string">male</Choice><Choice dt:dt="string">female</Choice></Choices></StartupInfoItem><StartupInfoItem><Name dt:dt="string">Handedness</Name><Prompt dt:dt="string">Enter Subject's Handedness:</Prompt><DataType dt:dt="int">2</DataType><Enabled dt:dt="int">0</Enabled><PromptEnabled dt:dt="int">0</PromptEnabled><Default dt:dt="string">left</Default><Choices><Choice dt:dt="string">left</Choice><Choice dt:dt="string">right</Choice></Choices></StartupInfoItem><StartupInfoItem><Name dt:dt="string">ResearcherID</Name><Prompt dt:dt="string">Please enter Researcher's ID:</Prompt><DataType dt:dt="int">0</DataType><Enabled dt:dt="int">0</Enabled><PromptEnabled dt:dt="int">0</PromptEnabled><Default dt:dt="string">1</Default><Min dt:dt="int">0</Min><Max dt:dt="int">32767</Max></StartupInfoItem></StartupInfoItems></StartupInfo></ExperimentObject><StudioItems><StudioItem><Name dt:dt="string">BlockList</Name><TypeName dt:dt="string">List</TypeName><Tag dt:dt="string"></Tag><Notes dt:dt="string"></Notes><ObjectData><Guid dt:dt="string">{78ACB7A1-343F-4C52-B28C-CB00BE8A9BFD}</Guid><Version><Major>2</Major><Minor>0</Minor><Internal>8</Internal><Build>87</Build><_VersionPersist dt:dt="int">1</_VersionPersist></Version><LoggingItems/><ItemList><Item dt:dt="string">BlockProc</Item></ItemList><Order dt:dt="int">0</Order><OrderBy dt:dt="int">0</OrderBy><ResetEveryRun dt:dt="boolean">0</ResetEveryRun><HideLevelsWithZeroWeight dt:dt="boolean">0</HideLevelsWithZeroWeight><CycleDef dt:dt="int">0</CycleDef><CycleValueSamples dt:dt="int">0</CycleValueSamples><CycleValueCondition dt:dt="string"></CycleValueCondition><ExitDef dt:dt="int">0</ExitDef><ExitValueCycles dt:dt="int">1</ExitValueCycles><ExitValueSamples dt:dt="int">1</ExitValueSamples><ExitValueSeconds dt:dt="int">0</ExitValueSeconds><ExitValueCondition dt:dt="string"></ExitValueCondition><LoadMethod dt:dt="int">0</LoadMethod><Filename dt:dt="string"></Filename><Attributes><Attribute><Name dt:dt="string">Weight</Name><System dt:dt="int">1</System><DefaultValue dt:dt="string"></DefaultValue><Width dt:dt="int">75</Width><Visible dt:dt="boolean">1</Visible><OrderIndex dt:dt="int">0</OrderIndex></Attribute><Attribute><Name dt:dt="string">Nested</Name><System dt:dt="int">1</System><DefaultValue dt:dt="string"></DefaultValue><Width dt:dt="int">75</Width><Visible dt:dt="boolean">1</Visible><OrderIndex dt:dt="int">1</OrderIndex></Attribute><Attribute><Name dt:dt="string">Procedure</Name><System dt:dt="int">1</System><DefaultValue dt:dt="string"></DefaultValue><Width dt:dt="int">75</Width><Visible dt:dt="boolean">1</Visible><OrderIndex dt:dt="int">2</OrderIndex></Attribute></Attributes><Levels><Level dt:dt="string">1		BlockProc</Level></Levels></ObjectData></StudioItem><StudioItem><Name dt:dt="string">TrialList</Name><TypeName dt:dt="string">List</TypeName><Tag dt:dt="string"></Tag><Notes dt:dt="string"></Notes><ObjectData><Guid dt:dt="string">{436C115A-D0CC-4F17-81B8-440F10750B00}</Guid><Version><Major>2</Major><Minor>0</Minor><Internal>8</Internal><Build>87</Build><_VersionPersist dt:dt="int">1</_VersionPersist></Version><LoggingItems><LoggingItem><Name dt:dt="string">Stim</Name><Log dt:dt="boolean">1</Log></LoggingItem></LoggingItems><ItemList><Item dt:dt="string">TrialProc</Item></ItemList><Order dt:dt="int">0</Order><OrderBy dt:dt="int">0</OrderBy><ResetEveryRun dt:dt="boolean">0</ResetEveryRun><HideLevelsWithZeroWeight dt:dt="boolean">0</HideLevelsWithZeroWeight><CycleDef dt:dt="int">0</CycleDef><CycleValueSamples dt:dt="int">0</CycleValueSamples><CycleValueCondition dt:dt="string"></CycleValueCondition><ExitDef dt:dt="int">0</ExitDef><ExitValueCycles dt:dt="int">1</ExitValueCycles><ExitValueSamples dt:dt="int">1</ExitValueSamples><ExitValueSeconds dt:dt="int">0</ExitValueSeconds><ExitValueCondition dt:dt="string"></ExitValueCondition><LoadMethod dt:dt="int">0</LoadMethod><Filename dt:dt="string"></Filename><Attributes><Attribute><Name dt:dt="string">Weight</Name><System dt:dt="int">1</System><DefaultValue dt:dt="string"></DefaultValue><Width dt:dt="int">75</Width><Visible dt:dt="boolean">1</Visible><OrderIndex dt:dt="int">0</OrderIndex></Attribute><Attribute><Name dt:dt="string">Nested</Name><System dt:dt="int">1</System><DefaultValue dt:dt="string"></DefaultValue><Width dt:dt="int">75</Width><Visible dt:dt="boolean">1</Visible><OrderIndex dt:dt="int">1</OrderIndex></Attribute><Attribute><Name dt:dt="string">Procedure</Name><System dt:dt="int">1</System><DefaultValue dt:dt="string"></DefaultValue><Width dt:dt="int">75</Width><Visible dt:dt="boolean">1</Visible><OrderIndex dt:dt="int">2</OrderIndex></Attribute><Attribute><Name dt:dt="string">Stim</Name><System dt:dt="int">0</System><DefaultValue dt:dt="string">?</DefaultValue><Width dt:dt="int">75</Width><Visible dt:dt="boolean">1</Visible><VarType dt:dt="int">8</VarType><VarTypeInternal dt:dt="int">8</VarTypeInternal></Attribute></Attributes><Levels><Level dt:dt="string">1		TrialProc	Checking the state of the keys now...</Level><Level dt:dt="string">1		TrialProc	Checking the state of the keys now...</Level><Level dt:dt="string">1		TrialProc	Checking the state of the keys now...</Level><Level dt:dt="string">1		TrialProc	Checking the state of the keys now...</Level></Levels></ObjectData></StudioItem><StudioItem><Name dt:dt="string">SessionProc</Name><TypeName dt:dt="string">Procedure</TypeName><Tag dt:dt="string"></Tag><Notes dt:dt="string"></Notes><ObjectData><Guid dt:dt="string">{96DAF487-F2A7-4706-B53A-4ECA4960A7EE}</Guid><Version><Major>2</Major><Minor>0</Minor><Internal>8</Internal><Build>87</Build><_VersionPersist dt:dt="int">1</_VersionPersist></Version><LoggingItems/><ItemList><Item dt:dt="string">SetupVariables</Item><Item dt:dt="string">Introduction</Item><Item dt:dt="string">BlockList</Item><Item dt:dt="string">Goodbye</Item></ItemList><LogData dt:dt="boolean">1</LogData><FlowItems><FlowItem><Name dt:dt="string">SetupVariables</Name></FlowItem><FlowItem><Name dt:dt="string">Introduction</Name></FlowItem><FlowItem><Name dt:dt="string">BlockList</Name></FlowItem><FlowItem><Name dt:dt="string">Goodbye</Name></FlowItem></FlowItems></ObjectData></StudioItem><StudioItem><Name dt:dt="string">TrialProc</Name><TypeName dt:dt="string">Procedure</TypeName><Tag dt:dt="string"></Tag><Notes dt:dt="string"></Notes><ObjectData><Guid dt:dt="string">{5A02A5A1-CDA9-45A0-B2B9-CAC1BC6D0D38}</Guid><Version><Major>2</Major><Minor>0</Minor><Internal>8</Internal><Build>87</Build><_VersionPersist dt:dt="int">1</_VersionPersist></Version><LoggingItems/><ItemList><Item dt:dt="string">Fixation</Item><Item dt:dt="string">Stimulus</Item><Item dt:dt="string">CheckState</Item><Item dt:dt="string">Feedback</Item></ItemList><LogData dt:dt="boolean">1</LogData><FlowItems><FlowItem><Name dt:dt="string">Fixation</Name></FlowItem><FlowItem><Name dt:dt="string">Stimulus</Name></FlowItem><FlowItem><Name dt:dt="string">CheckState</Name></FlowItem><FlowItem><Name dt:dt="string">Feedback</Name></FlowItem></FlowItems></ObjectData></StudioItem><StudioItem><Name dt:dt="string">BlockProc</Name><TypeName dt:dt="string">Procedure</TypeName><Tag dt:dt="string"></Tag><Notes dt:dt="string"></Notes><ObjectData><Guid dt:dt="string">{802777CD-EDBD-47E2-8FE1-70FD5051CBA9}</Guid><Version><Major>2</Major><Minor>0</Minor><Internal>8</Internal><Build>87</Build><_VersionPersist dt:dt="int">1</_VersionPersist></Version><LoggingItems/><ItemList><Item dt:dt="string">Instructions</Item><Item dt:dt="string">TrialList</Item></ItemList><LogData dt:dt="boolean">1</LogData><FlowItems><FlowItem><Name dt:dt="string">Instructions</Name></FlowItem><FlowItem><Name dt:dt="string">TrialList</Name></FlowItem></FlowItems></ObjectData></StudioItem><StudioItem><Name dt:dt="string">CheckState</Name><TypeName dt:dt="string">InLine</TypeName><Tag dt:dt="string"></Tag><Notes dt:dt="string"></Notes><ObjectData><Guid dt:dt="string">{782E2CAD-8A17-4BA7-A805-E7C6DCB86832}</Guid><Version><Major>2</Major><Minor>0</Minor><Internal>8</Internal><Build>87</Build><_VersionPersist dt:dt="int">1</_VersionPersist></Version><LoggingItems/><Code dt:dt="string">'Declare a variable for holding the numeric state of the Q key.
Dim nLastState As Long
nLastState = GetLastState("Q", Keyboard)

'Assess the state of the Q key and log a description (i.e. "down" or "up")
'in an attribute so that it can be used for feedback later in the experiment.
If nLastState = ebStatePress Then
	c.SetAttrib "Q_STATE", "down"
End If

If nLastState = ebStateRelease Then
	c.SetAttrib "Q_STATE", "up"
End If

'''''''''''''''''''''''''''''''''''''''''''''''''''

'Declare a variable for holding response information about the spacebar.
Dim theResponseData As ResponseData
Set theResponseData = GetLastResponseData("{SPACE}", Keyboard)

'Assess the state of the spacebar and log a description (i.e. "down" or "up")
'in an attribute so that it can be used for feedback later in the experiment.
'Also log the time at which the last response (press or release) was made.
If Not theResponseData Is Nothing Then

	c.SetAttrib "SPACE_TIME", theResponseData.RTTime

	If theResponseData.State = ebStatePress Then
		c.SetAttrib "SPACE_STATE", "down"
	ElseIf theResponseData.State = ebStateRelease Then
		c.SetAttrib "SPACE_STATE", "up"
	End If

Else

	c.SetAttrib "SPACE_STATE", "(assumed) up"
	c.SetAttrib "SPACE_TIME", "(never)"

End If


'Set trial number and total trials
c.SetAttrib "TrialNum", c.GetAttrib(c.GetAttrib("Running") &amp; ".Sample")
c.SetAttrib "TotalTrials", TrialList.Size</Code></ObjectData></StudioItem><StudioItem><Name dt:dt="string">SetupVariables</Name><TypeName dt:dt="string">InLine</TypeName><Tag dt:dt="string"></Tag><Notes dt:dt="string"></Notes><ObjectData><Guid dt:dt="string">{DBC82D8A-BE40-41A2-93AA-6BA51378B8C3}</Guid><Version><Major>2</Major><Minor>0</Minor><Internal>8</Internal><Build>87</Build><_VersionPersist dt:dt="int">1</_VersionPersist></Version><LoggingItems/><Code dt:dt="string">'Increase the keyboard history
Keyboard.History.MaxCount = 1024</Code></ObjectData></StudioItem><StudioItem><Name dt:dt="string">Fixation</Name><TypeName dt:dt="string">TextDisplay</TypeName><Tag dt:dt="string"></Tag><Notes dt:dt="string"></Notes><ObjectData><Guid dt:dt="string">{384F5DED-B95A-4D21-A734-4B863C076B0A}</Guid><Version><Major>2</Major><Minor>0</Minor><Internal>8</Internal><Build>87</Build><_VersionPersist dt:dt="int">1</_VersionPersist></Version><LoggingItems><LoggingItem><Name dt:dt="string">OnsetDelay</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">OnsetTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">DurationError</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">PreRelease</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">Duration</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">StartTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">OffsetTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">FinishTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">TimingMode</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">CustomOnsetTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">CustomOffsetTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">ActionDelay</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">ActionTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">TargetOffsetTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">TargetOnsetTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">OffsetDelay</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">RTTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">ACC</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">RT</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">RESP</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">CRESP</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">Tag</Name><Log dt:dt="boolean">0</Log></LoggingItem></LoggingItems><InputMasks/><Duration dt:dt="string">500</Duration><JumpLabel dt:dt="string"></JumpLabel><TimingMode dt:dt="int">0</TimingMode><PreRelease dt:dt="string">0</PreRelease><OnsetSync dt:dt="int">1</OnsetSync><OffsetSync dt:dt="int">0</OffsetSync><ForeColor dt:dt="string">black</ForeColor><BackColor dt:dt="string">white</BackColor><BackStyle dt:dt="string">opaque</BackStyle><BorderColor dt:dt="string">black</BorderColor><BorderWidth dt:dt="string">0</BorderWidth><X dt:dt="string">center</X><Y dt:dt="string">center</Y><Width dt:dt="string">100%</Width><Height dt:dt="string">100%</Height><XAlign dt:dt="string">center</XAlign><YAlign dt:dt="string">center</YAlign><AlignHorizontal dt:dt="string">center</AlignHorizontal><AlignVertical dt:dt="string">center</AlignVertical><ClearAfter dt:dt="string">No</ClearAfter><FontName dt:dt="string">Courier New</FontName><FontSize dt:dt="string">18</FontSize><FontBold dt:dt="string">Yes</FontBold><FontItalic dt:dt="string">No</FontItalic><FontUnderline dt:dt="string">No</FontUnderline><FontStrikeout dt:dt="string">No</FontStrikeout><Text dt:dt="string">+</Text><WordWrap dt:dt="int">-1</WordWrap><DisplayName dt:dt="string"></DisplayName></ObjectData></StudioItem><StudioItem><Name dt:dt="string">Stimulus</Name><TypeName dt:dt="string">TextDisplay</TypeName><Tag dt:dt="string"></Tag><Notes dt:dt="string"></Notes><ObjectData><Guid dt:dt="string">{1E080387-3AAA-4056-8C9E-2B65381F61E3}</Guid><Version><Major>2</Major><Minor>0</Minor><Internal>8</Internal><Build>87</Build><_VersionPersist dt:dt="int">1</_VersionPersist></Version><LoggingItems><LoggingItem><Name dt:dt="string">OnsetDelay</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">OnsetTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">DurationError</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">PreRelease</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">Duration</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">StartTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">OffsetTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">FinishTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">TimingMode</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">CustomOnsetTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">CustomOffsetTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">ActionDelay</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">ActionTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">TargetOffsetTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">TargetOnsetTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">OffsetDelay</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">RTTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">ACC</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">RT</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">RESP</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">CRESP</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">Tag</Name><Log dt:dt="boolean">0</Log></LoggingItem></LoggingItems><InputMasks/><Duration dt:dt="string">1000</Duration><JumpLabel dt:dt="string"></JumpLabel><TimingMode dt:dt="int">0</TimingMode><PreRelease dt:dt="string">0</PreRelease><OnsetSync dt:dt="int">1</OnsetSync><OffsetSync dt:dt="int">0</OffsetSync><ForeColor dt:dt="string">black</ForeColor><BackColor dt:dt="string">white</BackColor><BackStyle dt:dt="string">opaque</BackStyle><BorderColor dt:dt="string">black</BorderColor><BorderWidth dt:dt="string">0</BorderWidth><X dt:dt="string">center</X><Y dt:dt="string">center</Y><Width dt:dt="string">100%</Width><Height dt:dt="string">100%</Height><XAlign dt:dt="string">center</XAlign><YAlign dt:dt="string">center</YAlign><AlignHorizontal dt:dt="string">center</AlignHorizontal><AlignVertical dt:dt="string">center</AlignVertical><ClearAfter dt:dt="string">No</ClearAfter><FontName dt:dt="string">Courier New</FontName><FontSize dt:dt="string">18</FontSize><FontBold dt:dt="string">Yes</FontBold><FontItalic dt:dt="string">No</FontItalic><FontUnderline dt:dt="string">No</FontUnderline><FontStrikeout dt:dt="string">No</FontStrikeout><Text dt:dt="string">[Stim]</Text><WordWrap dt:dt="int">-1</WordWrap><DisplayName dt:dt="string"></DisplayName></ObjectData></StudioItem><StudioItem><Name dt:dt="string">Feedback</Name><TypeName dt:dt="string">TextDisplay</TypeName><Tag dt:dt="string"></Tag><Notes dt:dt="string"></Notes><ObjectData><Guid dt:dt="string">{B3F310A1-2B78-4975-ACDB-E539AA028868}</Guid><Version><Major>2</Major><Minor>0</Minor><Internal>8</Internal><Build>87</Build><_VersionPersist dt:dt="int">1</_VersionPersist></Version><LoggingItems><LoggingItem><Name dt:dt="string">OnsetDelay</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">OnsetTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">DurationError</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">PreRelease</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">Duration</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">StartTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">OffsetTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">FinishTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">TimingMode</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">CustomOnsetTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">CustomOffsetTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">ActionDelay</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">ActionTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">TargetOffsetTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">TargetOnsetTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">OffsetDelay</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">RTTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">ACC</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">RT</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">RESP</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">CRESP</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">Tag</Name><Log dt:dt="boolean">0</Log></LoggingItem></LoggingItems><InputMasks/><Duration dt:dt="string">2500</Duration><JumpLabel dt:dt="string"></JumpLabel><TimingMode dt:dt="int">0</TimingMode><PreRelease dt:dt="string">0</PreRelease><OnsetSync dt:dt="int">1</OnsetSync><OffsetSync dt:dt="int">0</OffsetSync><ForeColor dt:dt="string">black</ForeColor><BackColor dt:dt="string">white</BackColor><BackStyle dt:dt="string">opaque</BackStyle><BorderColor dt:dt="string">black</BorderColor><BorderWidth dt:dt="string">0</BorderWidth><X dt:dt="string">center</X><Y dt:dt="string">center</Y><Width dt:dt="string">100%</Width><Height dt:dt="string">100%</Height><XAlign dt:dt="string">center</XAlign><YAlign dt:dt="string">center</YAlign><AlignHorizontal dt:dt="string">center</AlignHorizontal><AlignVertical dt:dt="string">center</AlignVertical><ClearAfter dt:dt="string">No</ClearAfter><FontName dt:dt="string">Courier New</FontName><FontSize dt:dt="string">18</FontSize><FontBold dt:dt="string">Yes</FontBold><FontItalic dt:dt="string">No</FontItalic><FontUnderline dt:dt="string">No</FontUnderline><FontStrikeout dt:dt="string">No</FontStrikeout><Text dt:dt="string">Trial #[TrialNum] out of [TotalTrials].


The Q appears to be [Q_STATE]


The Spacebar {SPACE} appears to be [SPACE_STATE] and the last transition happened at [SPACE_TIME]

</Text><WordWrap dt:dt="int">-1</WordWrap><DisplayName dt:dt="string"></DisplayName></ObjectData></StudioItem><StudioItem><Name dt:dt="string">Introduction</Name><TypeName dt:dt="string">TextDisplay</TypeName><Tag dt:dt="string"></Tag><Notes dt:dt="string"></Notes><ObjectData><Guid dt:dt="string">{26B3D1D5-36A6-444F-9180-AB9B7A2F2FFE}</Guid><Version><Major>2</Major><Minor>0</Minor><Internal>8</Internal><Build>87</Build><_VersionPersist dt:dt="int">1</_VersionPersist></Version><LoggingItems><LoggingItem><Name dt:dt="string">OnsetDelay</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">OnsetTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">DurationError</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">PreRelease</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">Duration</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">StartTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">OffsetTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">FinishTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">TimingMode</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">CustomOnsetTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">CustomOffsetTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">ActionDelay</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">ActionTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">TargetOffsetTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">TargetOnsetTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">OffsetDelay</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">RTTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">ACC</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">RT</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">RESP</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">CRESP</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">Tag</Name><Log dt:dt="boolean">0</Log></LoggingItem></LoggingItems><InputMasks><InputMask><DeviceName dt:dt="string">Keyboard</DeviceName><DeviceClass dt:dt="string">Keyboard</DeviceClass><AllowableInput dt:dt="string">{SPACE}</AllowableInput><CorrectInput dt:dt="string"></CorrectInput><TimeLimit dt:dt="string"></TimeLimit><MaxCount dt:dt="string">1</MaxCount><InputAction dt:dt="int">1</InputAction><SyncOwnerDuration dt:dt="boolean">1</SyncOwnerDuration><Enabled dt:dt="boolean">1</Enabled><FlushInputBuffer dt:dt="string">Yes</FlushInputBuffer><TerminationInput dt:dt="string"></TerminationInput><UserTag dt:dt="string"></UserTag><EchoClients/><ResponseMode dt:dt="string">All</ResponseMode><ProcessBackspace dt:dt="string">Yes</ProcessBackspace></InputMask></InputMasks><Duration dt:dt="string">-1</Duration><JumpLabel dt:dt="string"></JumpLabel><TimingMode dt:dt="int">0</TimingMode><PreRelease dt:dt="string">0</PreRelease><OnsetSync dt:dt="int">1</OnsetSync><OffsetSync dt:dt="int">0</OffsetSync><ForeColor dt:dt="string">black</ForeColor><BackColor dt:dt="string">white</BackColor><BackStyle dt:dt="string">opaque</BackStyle><BorderColor dt:dt="string">black</BorderColor><BorderWidth dt:dt="string">0</BorderWidth><X dt:dt="string">center</X><Y dt:dt="string">center</Y><Width dt:dt="string">100%</Width><Height dt:dt="string">100%</Height><XAlign dt:dt="string">center</XAlign><YAlign dt:dt="string">center</YAlign><AlignHorizontal dt:dt="string">center</AlignHorizontal><AlignVertical dt:dt="string">center</AlignVertical><ClearAfter dt:dt="string">No</ClearAfter><FontName dt:dt="string">Courier New</FontName><FontSize dt:dt="string">18</FontSize><FontBold dt:dt="string">Yes</FontBold><FontItalic dt:dt="string">No</FontItalic><FontUnderline dt:dt="string">No</FontUnderline><FontStrikeout dt:dt="string">No</FontStrikeout><Text dt:dt="string">Welcome to the experiment.

This sample demonstrates how to get the current state of a particular key/button using E-Basic script.

Press the spacebar to begin.</Text><WordWrap dt:dt="int">-1</WordWrap><DisplayName dt:dt="string"></DisplayName></ObjectData></StudioItem><StudioItem><Name dt:dt="string">Goodbye</Name><TypeName dt:dt="string">TextDisplay</TypeName><Tag dt:dt="string"></Tag><Notes dt:dt="string"></Notes><ObjectData><Guid dt:dt="string">{400230C7-242C-476D-B52E-B5EDBE6BA7C5}</Guid><Version><Major>2</Major><Minor>0</Minor><Internal>8</Internal><Build>87</Build><_VersionPersist dt:dt="int">1</_VersionPersist></Version><LoggingItems><LoggingItem><Name dt:dt="string">OnsetDelay</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">OnsetTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">DurationError</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">PreRelease</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">Duration</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">StartTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">OffsetTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">FinishTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">TimingMode</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">CustomOnsetTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">CustomOffsetTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">ActionDelay</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">ActionTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">TargetOffsetTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">TargetOnsetTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">OffsetDelay</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">RTTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">ACC</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">RT</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">RESP</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">CRESP</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">Tag</Name><Log dt:dt="boolean">0</Log></LoggingItem></LoggingItems><InputMasks/><Duration dt:dt="string">2500</Duration><JumpLabel dt:dt="string"></JumpLabel><TimingMode dt:dt="int">0</TimingMode><PreRelease dt:dt="string">0</PreRelease><OnsetSync dt:dt="int">1</OnsetSync><OffsetSync dt:dt="int">0</OffsetSync><ForeColor dt:dt="string">black</ForeColor><BackColor dt:dt="string">white</BackColor><BackStyle dt:dt="string">opaque</BackStyle><BorderColor dt:dt="string">black</BorderColor><BorderWidth dt:dt="string">0</BorderWidth><X dt:dt="string">center</X><Y dt:dt="string">center</Y><Width dt:dt="string">100%</Width><Height dt:dt="string">100%</Height><XAlign dt:dt="string">center</XAlign><YAlign dt:dt="string">center</YAlign><AlignHorizontal dt:dt="string">center</AlignHorizontal><AlignVertical dt:dt="string">center</AlignVertical><ClearAfter dt:dt="string">No</ClearAfter><FontName dt:dt="string">Courier New</FontName><FontSize dt:dt="string">18</FontSize><FontBold dt:dt="string">Yes</FontBold><FontItalic dt:dt="string">No</FontItalic><FontUnderline dt:dt="string">No</FontUnderline><FontStrikeout dt:dt="string">No</FontStrikeout><Text dt:dt="string">Thank you for participating.

Goodbye!</Text><WordWrap dt:dt="int">-1</WordWrap><DisplayName dt:dt="string"></DisplayName></ObjectData></StudioItem><StudioItem><Name dt:dt="string">Instructions</Name><TypeName dt:dt="string">TextDisplay</TypeName><Tag dt:dt="string"></Tag><Notes dt:dt="string"></Notes><ObjectData><Guid dt:dt="string">{65664B9D-1D41-4047-9BEF-E32B274D38A1}</Guid><Version><Major>2</Major><Minor>0</Minor><Internal>8</Internal><Build>87</Build><_VersionPersist dt:dt="int">1</_VersionPersist></Version><LoggingItems><LoggingItem><Name dt:dt="string">OnsetDelay</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">OnsetTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">DurationError</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">PreRelease</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">Duration</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">StartTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">OffsetTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">FinishTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">TimingMode</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">CustomOnsetTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">CustomOffsetTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">ActionDelay</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">ActionTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">TargetOffsetTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">TargetOnsetTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">OffsetDelay</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">RTTime</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">ACC</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">RT</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">RESP</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">CRESP</Name><Log dt:dt="boolean">0</Log></LoggingItem><LoggingItem><Name dt:dt="string">Tag</Name><Log dt:dt="boolean">0</Log></LoggingItem></LoggingItems><InputMasks><InputMask><DeviceName dt:dt="string">Keyboard</DeviceName><DeviceClass dt:dt="string">Keyboard</DeviceClass><AllowableInput dt:dt="string">{SPACE}</AllowableInput><CorrectInput dt:dt="string"></CorrectInput><TimeLimit dt:dt="string"></TimeLimit><MaxCount dt:dt="string">1</MaxCount><InputAction dt:dt="int">1</InputAction><SyncOwnerDuration dt:dt="boolean">1</SyncOwnerDuration><Enabled dt:dt="boolean">1</Enabled><FlushInputBuffer dt:dt="string">Yes</FlushInputBuffer><TerminationInput dt:dt="string"></TerminationInput><UserTag dt:dt="string"></UserTag><EchoClients/><ResponseMode dt:dt="string">All</ResponseMode><ProcessBackspace dt:dt="string">Yes</ProcessBackspace></InputMask></InputMasks><Duration dt:dt="string">-1</Duration><JumpLabel dt:dt="string"></JumpLabel><TimingMode dt:dt="int">0</TimingMode><PreRelease dt:dt="string">0</PreRelease><OnsetSync dt:dt="int">1</OnsetSync><OffsetSync dt:dt="int">0</OffsetSync><ForeColor dt:dt="string">black</ForeColor><BackColor dt:dt="string">white</BackColor><BackStyle dt:dt="string">opaque</BackStyle><BorderColor dt:dt="string">black</BorderColor><BorderWidth dt:dt="string">0</BorderWidth><X dt:dt="string">center</X><Y dt:dt="string">center</Y><Width dt:dt="string">100%</Width><Height dt:dt="string">100%</Height><XAlign dt:dt="string">center</XAlign><YAlign dt:dt="string">center</YAlign><AlignHorizontal dt:dt="string">center</AlignHorizontal><AlignVertical dt:dt="string">center</AlignVertical><ClearAfter dt:dt="string">No</ClearAfter><FontName dt:dt="string">Courier New</FontName><FontSize dt:dt="string">18</FontSize><FontBold dt:dt="string">Yes</FontBold><FontItalic dt:dt="string">No</FontItalic><FontUnderline dt:dt="string">No</FontUnderline><FontStrikeout dt:dt="string">No</FontStrikeout><Text dt:dt="string">During each trial, InLine script is used to assess the state of the Q key and the spacebar. When the message about checking the key states appears, press and/or release one or both of these keys.

Press the spacebar to continue.</Text><WordWrap dt:dt="int">-1</WordWrap><DisplayName dt:dt="string"></DisplayName></ObjectData></StudioItem></StudioItems><UserScript dt:dt="string">Function GetLastState(strResponse As String, theDevice As InputDevice) As Long

	'Verify that the device being passed to this Function is valid.
	Debug.Assert Not theDevice Is Nothing

	'Declare a variable that will hold the "release" version of a response.
	Dim strResponseRelease As String

	'Convert strResponse (i.e. either Q or {SPACE}) to its release
	'version (i.e. {-Q} or {-SPACE}) for comparison.
	If Left(strResponse, 1) = "{" Then
		strResponseRelease = "{-"
		strResponseRelease = strResponseRelease &amp; Mid(strResponse, 1)		
	Else
		strResponseRelease = "{-"
		strResponseRelease = strResponseRelease &amp; Mid(strResponse, 1)
		strResponseRelease = strResponseRelease &amp; "}"
	End If	

	'Clone the history collection so that the script can enumerate through the 
	'responses without the collection changing on accident while the script
	'is running (i.e. if the subject presses another key during this time).
	Dim theHistoryCollection As RteCollection
	Set theHistoryCollection = theDevice.History.Clone

	'Enumerate through the collection in reverse order to determine
	'what the last state of the key specified is.
	Dim theResponseData As ResponseData
	Dim nIndex As Long

	For nIndex = theHistoryCollection.Count To 1 Step - 1

		Set theResponseData = CResponseData(theHistoryCollection(nIndex))

		If Not theResponseData Is Nothing Then
		
			'Assess whether the response is a press or a release.
			If theResponseData.State = ebStatePress Then

				'Does this press match what we are looking for?
				If UCase(strResponse) = UCase(theResponseData.Resp) Then
					GetLastState = ebStatePress
					Exit Function
				End If

			ElseIf theResponseData.State = ebStateRelease Then

				'Does this release match what we are looking for?
				If UCase(strResponseRelease) = UCase(theResponseData.Resp) Then
					GetLastState = ebStateRelease
					Exit Function
				End If

			End If

		End If

	Next

	'If the script gets to this point, the key is assumed to have never been
	'pressed (i.e. assumed release).
	GetLastState = ebStateRelease

End Function


Function GetLastResponseData(strResponse As String, theDevice As InputDevice) As ResponseData

	'Verify that the device being passed to this Function is valid.
	Debug.Assert Not theDevice Is Nothing

	'Declare a variable that will hold the "release" version of a response.
	Dim strResponseRelease As String

	'Convert strResponse (i.e. either Q or {SPACE}) to its release
	'version (i.e. {-Q} or {-SPACE}) for comparison.
	If Left(strResponse, 1) = "{" Then
		strResponseRelease = "{-"
		strResponseRelease = strResponseRelease &amp; Mid(strResponse, 2)
	Else	
		strResponseRelease = "{-"
		strResponseRelease = strResponseRelease &amp; strResponse
		strResponseRelease = strResponseRelease &amp; "}"
	End If	

	'Clone the history collection so that the script can enumerate through the 
	'responses without the collection changing on accident while the script
	'is running (i.e. if the subject presses another key during this time).
	Dim theHistoryCollection As RteCollection
	Set theHistoryCollection = theDevice.History.Clone

	'Enumerate through the collection in reverse order to determine
	'what the last state of the key specified is.
	Dim theResponseData As ResponseData
	Dim nIndex As Long

	For nIndex = theHistoryCollection.Count To 1 Step - 1

		Set theResponseData = CResponseData(theHistoryCollection(nIndex))

		If Not theResponseData Is Nothing Then

			'Assess whether the response is a press or a release.
			If theResponseData.State = ebStatePress Then

				'Does this press match what we are looking for?
				If UCase(strResponse) = UCase(theResponseData.Resp) Then
					Set GetLastResponseData = theResponseData
					Exit Function
				End If

			ElseIf theResponseData.State = ebStateRelease Then

				'Does this release match what we are looking for?
				If UCase(strResponseRelease) = UCase(theResponseData.Resp) Then
					Set GetLastResponseData = theResponseData
					Exit Function
				End If

			End If

		End If

	Next

	'If the script gets to this point, the key is assumed to have never been
	'pressed (i.e. assumed release).
	Set GetLastResponseData = Nothing

End Function</UserScript></Experiment>
