2012-02-16 3 views
0

Когда я нажимаю клавишу на своей клавиатуре, я могу получить keyCode этого ключа, используя e.keyCode. Но keyCode, который я получаю, не учитывает нажатые клавиши alt/ctrl/shift, которые изменяют код клавиши.javascript - вычислить «истинный» keyCode

К счастью, я получаю свойства shiftKey/altKey/ctrlKey с событием, поэтому я могу вычислить «истинный» код ключа.

Но я не знаю, как правильно рассчитать это значение. Где я могу прочитать об этом? Легко ли вычесть 32, если нажата кнопка shift и т. Д., Или есть много исключений?

+0

Существует множество исключений, и при использовании международных раскладок клавиатуры ухудшается. Расширенная поддержка обработки клавиатуры в javascript является ужасной. –

ответ

1

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

Захват keypress событие, которое позволит вам получить доступ к кодам символов.

el.onkeypress = function (evt) { 
    alert((evt || window.event).charCode); 
} 
0

Я не понимаю, почему вы хотели бы рассчитать «истинные» ключевые коды. Если вы делаете ярлыки для своего сайта/приложения/независимо, вы можете просто проверить, была ли нажата кнопка (например) S, и одновременно был нажат Ctrl.

Истинные ключевые коды не имеют никакого значения сами по себе (если вам это не нужно для чего-то конкретного).

Кстати, вам следует рассмотреть возможность использования jQuery для вашего проекта. Он нормализует keyCodes, поэтому у вас нет какого-либо странного поведения в любом браузере (Windows и ОС). Думаю, это более важно.

+0

Мне нужно это для оболочки, где это необходимо –

Смежные вопросы