JQuery key code для командной клавиши

Я прочитал jQuery Event Keypress: какой ключ был нажат? и Как проверить, нажата ли клавиша во время клика? событие с jquery?

Однако мой вопрос в том, можно ли получить одно и то же ключевое событие для всех браузеров? В настоящее время я знаю, что Firefox дает кнопке command (Mac) код 224, в то время как Chrome и Safari дают ей значение 91. Лучше всего просто проверить, какой браузер используется пользователем, и закрепить клавишу нажатой на нее или есть способ, чтобы я мог получить 1 key code во всех браузерах? Примечание. Я получаю значение с помощью:

var code = (evt.keyCode ? evt.keyCode : evt.which);

Я бы не хотел использовать плагин, если это возможно, потому что мне нужно только знать о кнопке command/ctrl (Windows system).

Ответ 2

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

В противном случае для событий keydown и keyup вам нужно иметь значение keyCode во всех браузерах. К сожалению, ключ Command не имеет того же key code во всех браузерах, а в левом и правом Command s имеют разные значения в WebKit (соответственно 91 и 93). Я не вижу простого способа обнаружить эти ключи без какого-либо браузера, но может быть и один. Свойство which определенно не поможет вам.

Для получения дополнительной информации http://unixpapa.com/js/key.html имеет всестороннее покрытие обработки ключевых событий во всех основных браузерах.

Ответ 3

Здесь вы, попробуйте этот live в этом фрагменте кода:

$(window).on('keypress', function(event) {
  $("body").append($("<p>").text(
       "ctrlKey " + event.ctrlKey
    + "; altKey " + event.altKey
    + "; metaKey " + event.metaKey
    + "; shiftKey " + event.shiftKey
    + "; isCommandPressed " + isCommandPressed(event)
  ));
  
});

function isCommandPressed(event) {
  return event.metaKey && ! event.ctrlKey;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<p>Focus on this select control and try pressing keys:</p>

<p><select><option>Test</option></select></p>