Non ho verificato ma, come da logica, mi pare che tale funzionamento sia gestito proprio dall'ultima condizione del tuo script:
codice:
            if(shifton == true) {
                onShift(0);
                shifton = false;
            }
Prova ad eliminarla o commentarla e vedi che succede.