Обнаружить модификатор Alt Gr (Alt Graph) при нажатии клавиши
В яваскрипта Event
объекта, есть некоторые логические значения, чтобы проверить, если клавиши - модификаторы нажимаются:
-
ctrlKey
: ctrlKey
CTRL. -
altKey
: altKey
ALT. -
altLeft
: ALT левая клавиша. Только для IE. -
altGraphKey
: altGraphKey
ALTGR. Только для Chrome/Safari.
Однако есть некоторые проблемы:
- IE и Chrome устанавливают для
ctrlKey
значение true
и для altKey
значение true
когда вы нажимаете модификатор ALTGR. - Firefox устанавливает для
ctrlKey
значение false
а для altKey
значение true
когда вы нажимаете модификатор ALTGR, так как был нажат только ALT. - Chrome имеет свойство
altGraphKey
, но оно всегда undefined
.
Вопрос: как я могу отличить нажатие клавиш ALT + CTRL или ALTGR? Специально в Chrome.
Ответы
Ответ 1
Похоже, что altGraphKey в браузерах webkit больше не существует (по состоянию на сентябрь 2013 года), и поведение Firefox изменилось. Поведение браузера для клавиши AltGr в настоящее время выглядит следующим образом:
- Webkit (Chrome) - ctrlKey: true, altKey: true
- IE 8 - ctrlKey: false, altKey: true
- IE 10 - ctrlKey: правда, altKey: правда
- Mozilla (Firefox) - ctrlKey: правда, altKey: правда
Иными словами, все они в настоящее время согласованы (кроме IE8, который остается непоследовательным).
Следующий фрагмент должен перехватывать Alt Gr - но не Alt или Ctrl - в современных браузерах. Вам понадобится специальный случай для IE8, однако:
if (event.ctrlKey && event.altKey) {
// Appears to be Alt Gr
}
Ответ 2
Я думаю, что ключ ALTGR и комбинация клавиш CTRL + ALT - это одно и то же, и нет никакого способа сделать разницу в Javascript.
Нажатие ALTGR + e и CTRL + ALT + e производят символ € (евро) на моей клавиатуре/настройке языка.
Есть страницы в Интернете, чтобы проверить коды клавиш. Надеюсь, это поможет.
Ответ 3
Отказ от ответственности: у меня нет клавиатуры, у которой есть этот ключ, поэтому я не могу проверить себя, но спецификация говорит, что может использовать key
. Это может быть хорошим решением, если вам нужно только поддерживать браузеры, которые его реализуют (на момент написания, только Safari этого не делает). Вы можете проверить, является ли значение "AltGraph"
.
window.onkeydown = function (e) {
if (e.key === 'AltGraph') {
console.log(e.key);
}
};
Ответ 4
Следует отметить, что это можно обнаружить в современном браузере, проверив расположение события alt key.
Смотрите: Есть ли способ определить, на какую сторону нажал Alt (справа или слева)?