keyDown/keyUp to start/stop an event in psychoJS

Hi all,

If anyone needs both keyup and keydown in PsychoJS you can do the following:

SOLUTION:

function TrialRoutineEachFrame(trials) {
	
let KEY_TYPE_ARROW_LEFT = "ArrowLeft";
let KEY_TYPE_ARROW_RIGHT = "ArrowRight";
let KEY_DOWN = "keydown";
let KEY_UP = "keyup";
let LEFT_BOUNDARY = -360;
let RIGHT_BOUNDARY = 360;

window.onkeydown = window.onkeyup = window.onkeypress = slideHandler;

function slideHandler(e) {

    // start of Arrow LEFT keydown
    if (e.type === KEY_DOWN && e.key === KEY_TYPE_ARROW_LEFT) {
        if (xaxis > LEFT_BOUNDARY) {
            xaxis = xaxis - 5;
        } else {
            xaxis = LEFT_BOUNDARY;
        }
    }

    // start of Arrow LEFT keyup
    if (e.type === KEY_UP && e.key === KEY_TYPE_ARROW_LEFT) {
    }

    // start of Arrow RIGHT keydown
    if (e.type === KEY_DOWN && e.key === KEY_TYPE_ARROW_RIGHT) {
        if (xaxis < RIGHT_BOUNDARY) {
            xaxis = xaxis + 5;
        } else {
            xaxis = RIGHT_BOUNDARY;
        }
    }

    // start of Arrow RIGHT keyup
    if (e.type === KEY_UP && e.key === KEY_TYPE_ARROW_RIGHT) {
    }

}

xaxis is a variable that set the x pos of a polygon and the boundries defined how far left or right it could move. When the button was down the polygon moved and stopped when released.

1 Like