mirror of
https://github.com/jspsych/jsPsych.git
synced 2025-05-12 08:38:11 +00:00
commit
a7916b8d33
34
jspsych.js
34
jspsych.js
@ -105,6 +105,7 @@ window.jsPsych = (function() {
|
||||
'max_load_time': 60000,
|
||||
'max_preload_attempts': 10,
|
||||
'default_iti': 0,
|
||||
'minimum_valid_rt': 0,
|
||||
'experiment_width': null
|
||||
};
|
||||
|
||||
@ -2039,6 +2040,7 @@ jsPsych.pluginAPI = (function() {
|
||||
}
|
||||
|
||||
module.getKeyboardResponse = function(parameters) {
|
||||
|
||||
//parameters are: callback_function, valid_responses, rt_method, persist, audio_context, audio_context_start_time, allow_held_key?
|
||||
|
||||
parameters.rt_method = (typeof parameters.rt_method === 'undefined') ? 'performance' : parameters.rt_method;
|
||||
@ -2050,37 +2052,47 @@ jsPsych.pluginAPI = (function() {
|
||||
var start_time;
|
||||
if (parameters.rt_method == 'performance') {
|
||||
start_time = performance.now();
|
||||
} else if (parameters.rt_method == 'audio') {
|
||||
} else if (parameters.rt_method === 'audio') {
|
||||
start_time = parameters.audio_context_start_time;
|
||||
}
|
||||
|
||||
var listener_id;
|
||||
|
||||
var listener_function = function(e) {
|
||||
|
||||
var key_time;
|
||||
if (parameters.rt_method == 'performance') {
|
||||
key_time = performance.now();
|
||||
} else if (parameters.rt_method == 'audio') {
|
||||
} else if (parameters.rt_method === 'audio') {
|
||||
key_time = parameters.audio_context.currentTime
|
||||
}
|
||||
var rt = key_time - start_time;
|
||||
|
||||
// overiding via parameters for testing purposes.
|
||||
var minimum_valid_rt = parameters.minimum_valid_rt;
|
||||
if(!minimum_valid_rt){
|
||||
minimum_valid_rt = jsPsych.initSettings().minimum_valid_rt || 0;
|
||||
}
|
||||
|
||||
if(rt <= minimum_valid_rt){
|
||||
return;
|
||||
}
|
||||
|
||||
var valid_response = false;
|
||||
if (typeof parameters.valid_responses === 'undefined' || parameters.valid_responses == jsPsych.ALL_KEYS) {
|
||||
if (typeof parameters.valid_responses === 'undefined' || parameters.valid_responses === jsPsych.ALL_KEYS) {
|
||||
valid_response = true;
|
||||
} else {
|
||||
if(parameters.valid_responses != jsPsych.NO_KEYS){
|
||||
if(parameters.valid_responses !== jsPsych.NO_KEYS){
|
||||
for (var i = 0; i < parameters.valid_responses.length; i++) {
|
||||
if (typeof parameters.valid_responses[i] == 'string') {
|
||||
if (typeof parameters.valid_responses[i] === 'string') {
|
||||
var kc = jsPsych.pluginAPI.convertKeyCharacterToKeyCode(parameters.valid_responses[i]);
|
||||
if (typeof kc !== 'undefined') {
|
||||
if (e.keyCode == kc) {
|
||||
if (e.keyCode === kc) {
|
||||
valid_response = true;
|
||||
}
|
||||
} else {
|
||||
throw new Error('Invalid key string specified for getKeyboardResponse');
|
||||
}
|
||||
} else if (e.keyCode == parameters.valid_responses[i]) {
|
||||
} else if (e.keyCode === parameters.valid_responses[i]) {
|
||||
valid_response = true;
|
||||
}
|
||||
}
|
||||
@ -2088,8 +2100,8 @@ jsPsych.pluginAPI = (function() {
|
||||
}
|
||||
// check if key was already held down
|
||||
|
||||
if (((typeof parameters.allow_held_key == 'undefined') || !parameters.allow_held_key) && valid_response) {
|
||||
if (typeof held_keys[e.keyCode] !== 'undefined' && held_keys[e.keyCode] == true) {
|
||||
if (((typeof parameters.allow_held_key === 'undefined') || !parameters.allow_held_key) && valid_response) {
|
||||
if (typeof held_keys[e.keyCode] !== 'undefined' && held_keys[e.keyCode] === true) {
|
||||
valid_response = false;
|
||||
}
|
||||
}
|
||||
@ -2101,7 +2113,7 @@ jsPsych.pluginAPI = (function() {
|
||||
|
||||
parameters.callback_function({
|
||||
key: e.keyCode,
|
||||
rt: key_time - start_time
|
||||
rt: rt,
|
||||
});
|
||||
|
||||
if (keyboard_listeners.includes(listener_id)) {
|
||||
|
Loading…
Reference in New Issue
Block a user