Кросс-браузерный способ автоматически повторять события нажатия клавиш при удерживании клавиши

Используя Javascript / jQuery, как я могу получить автоматически повторяющиеся события нажатия клавиш или эквивалент, когда кто-то удерживает клавишу?

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

Это решение сталкивается с проблемой в моем случае. Я разрабатываю онлайн эксперимент. Пользователь должен удерживать клавишу «Т» ключ для всего эксперимента, никогда не подводя его. Эксперимент состоит из нескольких испытаний, и каждое испытание не имеет доступа к информации, записанной в предыдущих исследованиях. Таким образом, испытание 1 может записать нажатие клавиши для T, но испытание 2 нене иметь доступа к этой записи и, следовательно, не будетне знаю, был ли Т вниз или нет.

Теперь, если нажатие клавиши T приведет к автоматически повторяющимся событиям нажатия клавиш для T, у меня не будет проблем, потому что пробная версия 2 просто перехватит следующее событие нажатия клавиш для T, чтобы оно появилось. Но, похоже, яне получить автоматически повторяющиеся события нажатия клавиши, удерживая клавишу, по крайней мере, в Firefox. Из того, что я вижу, кажется, что разные браузеры могут удерживать клавишу в разных направлениях. Что такое хороший кросс-браузерный способ решения моей проблемы?

Кстати, если это имеет значение, мне также нужно иметь возможность обнаруживать события keyup и keydown для других клавиш, пока все это происходит.

РЕДАКТИРОВАТЬ: после прочтения некоторых комментариев я вернулся и подтвердил, что действительно получаю повторяющиеся события нажатия клавиш при обычных обстоятельствах. Но я действительно нене получить их в конкретной ситуации, в которой они мне нужны. Я'у нас есть простой код, который, я думаю, изолирует проблему:














var i;
function foo() {
    i++;
    $('#target').html(i);
}

function doTrial() { // do trial
    i=0;
    $(document).keydown(foo);
    $(document).keyup(endTrial);
}

function endTrial() { // end trial
    $('#target').html('');
    $(document).unbind('keydown',foo);
    $(document).unbind('keyup',endTrial);
    doTrial();
}

doTrial();




Если нажать и удерживать клавишу, затем отпустить, а затем снова нажать, поведение будет таким, как ожидалось, то есть есть счетчик, который увеличивается, когда клавиша удерживается нажатой, исчезает, когда она 'S, а затем снова начинает увеличиваться, когданажал снова.

Но если вы нажмете ДВУХ клавиш, а затем отпустите ОДИН, я бы подумал, что другой (не отпущенный) ключ продолжит отправлять события нажатия клавиш, чтобы счетчик (после сброса) продолжал увеличиваться. На самом деле это неэто случилось. Есть идеи, почему и как это сделать?