Responses Registration
In this article:
Accurate and flexible response registration is a fundamental requirement in most psychological and behavioral experiments. EventIDE provides a broad range of input elements for capturing participant responses and external signals from various devices. These elements support standard input hardware (e.g. keyboards, joysticks), custom laboratory equipment (e.g. EEG, MRI, eye-trackers), as well as communication interfaces (e.g. TCP, LPT, COM).
Input Registration Logic in EventIDE
In EventIDE, input elements operate within the time frame of their parent event. This behavior allows precise control over the time window in which input is detected—making it easy to define response intervals aligned with stimulus presentation.
If you require continuous listening across multiple events, you can place the input element in a parent event and organize the rest of your experiment within sub-events (via sub-layers). This approach ensures that the element remains active throughout the trial sequence. Some input elements also operate at the global experiment level by design.
Input Elements in EventIDE
Below is a summary of input elements available in EventIDE, grouped by their functional categories:
Input Registration
Element | Description |
Button | Detects button presses/releases on devices supported by the DirectInput API (e.g. keyboard, mouse, joystick, gamepads). |
HID Input | Communicates with USB HID devices (e.g. response boxes, keyboards). Reads button states and analogue axes. |
MIDI Input | Reads input from MIDI devices, such as digital pianos connected via USB or MIDI port. |
ROI (Region of Interest) | Defines screen regions and tracks cursor or gaze position in relation to them. Useful for mouse, joystick, or eye-tracking tasks. |
Voice Recorder | Captures voice input and stores it as WAV files. |
Speech Listener | Performs real-time speech recognition from a microphone. Converts spoken input into text for classification. |
Key Logger | Logs all keypress and key release events during an event into a text stream. |
Cedrus XID | Supports Cedrus XID-compatible devices such as RB response pads, StimTracker, and SV-1 voice key. |
Ink Canvas | Captures drawing or handwriting strokes from pen or touch input for analysis. |
Mouse, Touch, and Joystick Trackers
Element | Description |
Mouse Tracker | Records continuous mouse movement trajectories on the stimulus screen. |
Joystick Tracker | Converts joystick input into positional data. Can be calibrated to stimulus screen coordinates. |
Multi-Touch Tracker | Captures multi-touch gestures from supported touchscreens. |
ELO Touch Tracker | Specialized tracker for ELO Touch displays (requires touch mode set to “Click on release”). |
PQLab Tracker | Tracker element for PQLab touchscreen systems. |
Secondary PQLab Tracker | Allows tracking from a second PQLab screen connected to the same PC. |
Communication
Element | Description |
TCP/UDP Listener | Listens to incoming messages over TCP or UDP network ports. Currently receive-only. |
UDP Port | Allows bidirectional data transfer via UDP protocol. Useful for sending sync markers. |
LPT Port | Interfaces with the parallel port for sending/receiving digital signals. Used for trigger synchronization. |
COM Port | Sends/receives data through a serial port (COM). |
Advantech Port | Supports I/O via Advantech DAQ digital ports (e.g. 8-bit trigger signals). |
FTDI BitBanger | Generates digital pulses (e.g. TTL) by toggling FTDI board pins. |
LSL Streamer | Forwards selected EventIDE signals into a LSL stream. |
LSL Event Marker | Sends time-stamped event markers to other systems via the Lab Streaming Layer (LSL). |
MRI Trigger | Detects scan-start signals from MRI machines. |
MC Analog/Digital Ports | Interfaces with Measurement Computing DAQ boards for analogue/digital signal I/O. |
PupilLabs Companion | Communicates with PupilLabs mobile app to trigger recording and synchronize markers. |
NI DAQ Elements | Multiple elements support National Instruments DAQ cards: |
NI Counter Pulse | Sends a single pulse or a pulse train through an output counter channel on a National Instruments DAQ card. Useful for precise hardware triggering or timed pulse delivery. |
NI Analog Port | Outputs continuous or discrete analogue voltage signals through an analogue channel on an NI DAQ card. Commonly used to control or synchronize external hardware. (Note: does not support analogue input reading.) |
NI Change Detector | Detects and responds to digital input changes (e.g. rising/falling edges) on NI digital ports. Useful for registering asynchronous events such as button presses or TTL triggers. |
NI Digital Line | Provides fine-grained access to individual digital lines on a digital port. Each line can be independently read or written, enabling precise digital I/O control. |
NI Port | Sends and receives digital byte-level signals via entire digital ports on a National Instruments DAQ card. Often used to transmit trigger codes or read multiple binary states simultaneously. |
Other Research Hardware
EventIDE also supports input from specialized research equipment via dedicated AddIns:
Eye-trackers – Access gaze data and calibration tools. (Pupil Labs, Tobii, EyeLink, etc.)
EEG Amplifiers – Read signals and synchronize triggers from EEG devices.
Kinect Sensors – Track 3D body and facial data from Microsoft Kinect.
Leap Motion – Capture hand and finger tracking data.
Xsens Motion Trackers – Integrate full-body motion tracking.
Oculus Rift – Monitor headset inputs and triggers.
Webcam-based Tracking – For facial expression or webcam eye-tracking.
To enable support for these devices, navigate to Application Menu > AddIn Manager, and activate the relevant AddIns.
For a complete list of supported input registration elements please refer to Element Library.
Using Button Elements
To set up response registration, follow these general steps (demonstrated using the Button element):
Step 1 – Add the Element
Insert a Button element into the event during which the response should be detected.
Open its Property Panel and configure:
Input Device – Select from the connected devices.
Triggering Mode – Choose whether to detect button presses or releases.
Monitored Button – Specify a particular button, or monitor all.
You may add multiple Button elements for different buttons, or a single one that listens to all inputs.

Step 2 – Detecting the Input
Once the Button element is triggered (i.e. a press/release is detected), it updates its Status Properties and invokes the Triggered snippet, where you can place your response handling code.
Available Status Properties:
Property | Description |
Triggering Time | Local event-relative timestamp of the input. Suitable for calculating reaction time. |
Triggered Button | Returns the name/ID of the button pressed. |
Is Triggered | Boolean: true if any trigger occurred during the event. |
Is Down | Boolean: true if the monitored button is currently held down. |
You can use Is Triggered property to control experiment flow. For example, assign a proxy variable to Is Triggered property and activate an outgoing flow route when a response is detected:
(IsTriggered == true)Step 3 – Access in Code
The Triggered snippet is called when an input is detected. Here, you can write custom logic, such as logging response, calculating reaction time, or providing feedback.
// Inside Triggered snippet
ResponseTime = TriggeringTime;
PressedButton = TriggeredButton;To use this information across the experiment, assign proxy variables to the element’s properties.
Using Other Input Elements
Most input elements follow this pattern:
1. Select the input device in the element's properties.
2. Configure detection mode (e.g. signal type, trigger pattern).
3. Handle the input either via:
Status properties (read in snippets).
Triggered snippet (code called on input event).
Control experiment flow using proxy variables and route conditions.
