Ответ 1
Я не думаю, что keyCode отличается.
Вы можете использовать e.ctrlKey
для лучшего способа определить, нажата ли клавиша управления.
Кажется, Flash не может указать, какой из них нажат (либо это, либо неправильно закодировано).
У меня есть прослушиватель событий в Javascript, я могу определить, является ли ключевым событием Ctrl (e.keyCode == 17)
, но как я могу узнать, что этот Ctrl идет с правой или левой?
Я не думаю, что keyCode отличается.
Вы можете использовать e.ctrlKey
для лучшего способа определить, нажата ли клавиша управления.
Кажется, Flash не может указать, какой из них нажат (либо это, либо неправильно закодировано).
Простое замечание: я бы не основывал архитектуру/дизайн на доступности правильного ключа управления - на многих клавиатурах ноутбуков могут не быть двух клавиш управления.
MSIE предоставляет свойство ctrlLeft
для большинства событий. Значения свойств:
true
, если во время события нажата левая клавишаfalse
, если левая клавиша не была нажата.Вы можете комбинировать event.ctrlKey
и event.ctrlLeft
, чтобы определить, была ли нажата правая клавиша Ctrl:
if (event.ctrlKey) {
if (event.ctrlLeft) {
// left Ctrl key pressed
} else {
// right Ctrl key pressed
}
} else {
// no Ctrl key pressed
}
Обратите внимание, что свойство ctrlLeft
в keyup
равно undefined, потому что клавиша Ctrl больше не нажата.
Протестировано в MSIE7 и MSIE9. Не работает в Firefox.
Подробнее см. http://help.dottoro.com/ljqlvhuf.php.
Если вы проследите его, вы найдете тот же ключ для обоих (17). Я думаю, что невозможно отличить
Я не знаю, было ли это доступно, когда это было задано, но вы можете различать left- from right-ctrl, а также alt и shift. Теперь вы можете использовать свойства KeyboardEvent.DOM_KEY_LOCATION_ *, чтобы сделать это различие.
Смотрите Может ли javascript указать разницу между клавишей сдвига влево и вправо?
Помните, однако, что я обнаружил, что у Chrome, похоже, есть дефект в его реализации. См. Как я могу различать клавиши слева и справа, ctrl и alt onkeyup в Chrome с Javascript
Существует свойство event.location
для левой клавиши ctrl, это будет 1 для правой 2, вы можете проверить поддержку браузера на canIuse
if (e.which == 17) {
if (event.location == 1) {
// left ctrl key
} else if (event.location == 2) {
// right ctrl key
}
}