Ответ 1

var onkeydown = (function (ev) {
  var key;
  var isShift;
  if (window.event) {
    key = window.event.keyCode;
    isShift = !!window.event.shiftKey; // typecast to boolean
  } else {
    key = ev.which;
    isShift = !!ev.shiftKey;
  }
  if ( isShift ) {
    switch (key) {
      case 16: // ignore shift key
        break;
      default:
        alert(key);
        // do stuff here?
        break;
    }
  }
});

Ответ 2

event.shiftKey является булевым. true, если нажата клавиша Shift, false, если нет. altKey и ctrlKey работают одинаково.

Таким образом, в основном вам просто нужно обнаружить keydown как обычно с помощью onkeydown и проверить эти свойства по мере необходимости.