Loosing frames when keeping a button pressed

In my key-down online demo I use two keyboard responses, one detecting key presses and the other key releases.

https://run.pavlovia.org/vespr/key-down/

Key Down code | try it | discussion thread

Compares the length of two keyboard components (one detecting key presses and the other key releases) to determine whether a key is currently pressed down.

if key_down.keys: # Online key_down.keys does not exit until a key has been pressed
    if not key_release.keys:
        keyDown = True
        if key_down.keys[-1] == 'right':
            thisOri += 1
        elif key_down.keys[-1] == 'left':
            thisOri -= 1
        msg = 'key_down.keys ' + str(len(key_down.keys)) + '\nkey_release.keys 0\nfudgeFactor ' + str(fudgeFactor)
    elif len(key_down.keys) > len(key_release.keys) + fudgeFactor:
        keyDown = True
        if key_down.keys[-1] == 'right':
            thisOri += 1
        elif key_down.keys[-1] == 'left':
            thisOri -= 1
        elif key_down.keys[-1] == 'space':
            continueRoutine = False
        # Sometime a key release gets missed
        if len(key_down.keys) > len(key_release.keys) + 1 + fudgeFactor:
            fudgeFactor += 1
        msg = 'key_down.keys ' + str(len(key_down.keys)) + '\nkey_release.keys ' + str(len(key_release.keys)) + '\nfudgeFactor ' + str(fudgeFactor)
    else:
        keyDown = False
        # Sometime a key press gets missed
        if len(key_down.keys) < len(key_release.keys) + fudgeFactor:
            fudgeFactor -= 1
        msg = 'key_down.keys ' + str(len(key_down.keys)) + '\nkey_release.keys ' + str(len(key_release.keys)) + '\nfudgeFactor ' + str(fudgeFactor)
        


1 Like