Можно ли переопределить задержку повторного нажатия клавиш в JavaScript?

Задача состоит в том, чтобы вручную установить удерживаемую клавишу «скорость повтора».

Например, когда в текстовом поле и нажав и удерживая клавишу X, я понимаю, что естьбраузерные способы повторения нажатого символа, В некоторых он приостанавливается, а затем непрерывно вызывает нажатую клавишу. В других это не повторяется вообще. Я хочу смягчить это, заставляя нажатую клавишу повторяться через определенный интервал, независимо от браузера.

В результате исследования я придумала попытку, основанную на таймере, но в Safari она не повторяет символ. У меня есть система меню, в которой удержание стрелки прокручивает список, но анимация перевода и частота повторения не похожи друг на друга.

var repeating = false;
var repeatRateTimer = null;

$( document ).bind( 'keyup', function( input ) {
    if( repeatRateTimer != null )
    {
        clearTimeout( repeatRateTimer );
        repeatRateTimer = null;
    }

    repeating = false;
} );

$( document ).bind( 'keydown', function( input ) {
    input.preventDefault( );

    if( repeating == true )
    {
        if( repeatRateTimer != null )
        {
            clearTimeout( repeatRateTimer );
            repeatRateTimer = null;
        }
        else
        {
            repeatRateTimer = setTimeout( function( ){ repeating = false; }, 1000 );
        }

        return;
    }
    repeating = true;

    // ...keyboard logic
} );

Возможно, я все испортил ... Я попытался воссоздать упрощенную версиюэтот ТАК пост, Тем не менее, я чувствую тамhas чтобы быть лучшим способом сделать это. Какие-нибудь мысли?

Update:

Мы можем предположить, что конечный пользователь не установил скорость повторения клавиатуры ОС выше, чем скорость, которую я хочу использовать (1000 мс). Если это так, то он должен возвращаться к их частоте повторения, поскольку он не будет продолжать вызывать событие нажатия клавиши. Если это не так (более вероятно, так как большинство людей не изменяют это), то мы переопределим это поведение, чтобы оно задержало наш указанный период.

Ответы на вопрос(3)

Ваш ответ на вопрос