---
API: 2.1
OpenSesame: 3.3.0a27
Platform: posix
---
set width 1024
set uniform_coordinates yes
set title "OSWeb multiple-character-input demo"
set subject_parity even
set subject_nr 0
set start experiment
set sound_sample_size -16
set sound_freq 48000
set sound_channels 2
set sound_buf_size 1024
set sampler_backend legacy
set round_decimals 2
set mouse_backend legacy
set keyboard_backend legacy
set height 768
set fullscreen no
set form_clicks no
set foreground white
set font_underline no
set font_size 18
set font_italic no
set font_family mono
set font_bold no
set experiment_path "/home/sebastiaan/Downloads"
set disable_garbage_collection yes
set description "The main experiment item"
set coordinates uniform
set compensation 0
set color_backend legacy
set clock_backend legacy
set canvas_backend legacy
set background "#646464"
define sequence experiment
set flush_keyboard yes
set description "Runs a number of items in sequence"
run init always
run get_input_loop always
run verify_input always
define loop get_input_loop
set source table
set repeat 200
set order random
set description "Repeatedly runs another item"
set cycles 1
set continuous no
set break_if_on_first yes
set break_if "[response] = return or [response] = enter"
setcycle 0 empty_column ""
run get_input_sequence
define sequence get_input_sequence
set flush_keyboard yes
set description "Runs a number of items in sequence"
run show_input always
run number_input always
run process_input always
define inline_javascript init
set description "Executes JavaScript code (ECMA 5.1)"
set _run ""
___prepare__
vars.multichar_response = ''
vars.response = ''
__end__
define keyboard_response number_input
set timeout infinite
set flush yes
set event_type keypress
set duration keypress
set description "Collects keyboard responses"
define inline_javascript process_input
set description "Executes JavaScript code (ECMA 5.1)"
___run__
console.log(vars.response)
if (vars.response in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) {
vars.multichar_response += vars.response.toString()
} else if (vars.response === 'backspace') {
vars.multichar_response = vars.multichar_response.toString().slice(0, vars.multichar_response.toString().length - 1)
} else if (vars.response !== 'enter') {
vars.multichar_response += vars.response
}
__end__
set _prepare ""
define sketchpad show_input
set duration 0
set description "Displays stimuli"
draw textline center=1 color=white font_bold=no font_family=mono font_italic=no font_size=18 html=yes show_if=always text="Enter your response
Press 'return' to accept
Response: [multichar_response]" x=0 y=0 z_index=0
define feedback verify_input
set reset_variables yes
set duration keypress
set description "Provides feedback to the participant"
draw textline center=1 color=white font_bold=no font_family=mono font_italic=no font_size=18 html=yes show_if=always text="Your response is: [multichar_response]" x=0 y=0 z_index=0