2015-03-02 5 views
2

Я пишу сценарий, который требует от пользователя одновременного нажатия нескольких клавиш. Я отслеживаю, какие нажаты, используя onkeydown и onkeyup event-слушатели. Однако некоторые комбинации клавиш несовместимы, что обычно приводит к звуку, и прослушиватель событий не запускается. Есть ли способ обнаружить ошибку клавиатуры?Обнаружение ошибок клавиатуры в javascript

Вот некоторые из моих кодов. Если, например, пользователь нажимает следующую последовательность без отпускания, компьютер выдаст сигнал ошибки: T, R, O. Однако 'O' не будет запускать keyDonwFn.

В html-коде у меня есть onkeydown = "keyDownFn (event);"

function keyDownFn(e) { 
    if (isCorrectKey(e.keyCode)){ 
     do A 
    }else if (e.keyCode != currentKey){ 
     do B 
    }else if (e.keyCode == currentKey){ 
     do C 
    } 
} 

, и я хотел бы иметь другое еще, если за ошибки:

else if (e.keyCode == error){ 
    do D 
} 
+5

Измените свой вопрос, чтобы включить соответствующий фрагмент кода и пример ввода, который вызывает проблему. –

+0

Неудивительно, что прослушиватель событий не запускается. Вы должны предположить, что это ваш код, если вы не можете доказать обратное. Покажите нам, что не работает – charlietfl

+0

Как обсуждалось в duskwuff, большинство клавиатур не поддерживают n-key rollover. Я просто пытаюсь определить, когда достигнуты ограничения клавиатуры. Я отредактировал, чтобы привести пример 3-буквенного комбо, который несовместим. – Brukba

ответ

0

Нет, это, вероятно, не представляется возможным.

Большинство ограничений, которые вы описываете, скорее всего ограничены аппаратным обеспечением клавиатуры - большинство клавиатур не поддерживают n-key rollover, поэтому они физически неспособны правильно обнаруживать одновременное нажатие нескольких клавиш. На аппаратном уровне нет уведомления о том, что это происходит, поэтому его нельзя распространять на веб-страницу.

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

+0

Вы хотите сказать, что на уровне программного обеспечения нет уведомлений? При подаче несовместимых клавиш одновременно звучит сигнал ошибки, по крайней мере, на моем компьютере. Разве это не уведомление об аппаратном уровне? – Brukba