キーイベントハンドルのsnippet

LDRをパクった参考にした。
とりあえず、IE/FF/Operaで動作確認。MacとSafariは不明。
Firefoxの「キー入力時に検索を開始する」はstop_eventで抑止。

<html>
  <head>
    <script>
function add_event(obj, type, handler, flag) {
  function handler_wrapper(e) {
    e = e || event;
    return handler(e);
  }

  if (obj.addEventListener) {
    obj.addEventListener(type, handler_wrapper, flag);
  } else if (obj.attachEvent) {
    obj.attachEvent("on" + type, handler_wrapper);
  }
}

cancel_event = function(e) {
  e.preventDefault ? e.preventDefault() : (e.returnValue = false);
};

stop_event = function(e) {
  e.stopPropagation ? e.stopPropagation() : (e.cancelBubble = true);
};

function add_key_event(obj, event, handler, flag) {
  function handler_wrapper(e) {
    var key = e.keyCode || e.which;
    return handler(e, key, e.altKey, e.ctrlKey, e.shiftKey);
  }

  add_event(obj, event, handler_wrapper, flag);
}

function log(x) {
  var console = document.getElementById('console');
  console.innerHTML = x;
}

add_key_event(document, 'keydown', function(e, key, alt, ctrl, shift) {
  var msg = 'key:' + key + ' alt:' + alt + ' ctrl:' + ctrl + ' shift:' + shift;
  log(msg);
  stop_event(e);
  cancel_event(e);
  return false;
});

    </script>
  </head>
  <body>
    abcdefg hijklmn opqrstu vwxyz
    <div id="console"></div>
  </body>
</html>