memo: javascript keyboard event

自作のAngularJSで組んでるアプリでKeyboard eventが必要になったので、簡単なライブラリを組んでたらハマったのでメモ。

UnitTestでChrome、Firefox、PhantomJSとやっていて、全部実装が違うってどういうことなのかと。

FX

KeyboardEvent.initKeyEvent (type, bubbles, cancelable, viewArg,  ctrlKeyArg, altKeyArg, shiftKeyArg, metaKeyArg, keyCodeArg, charCodeArg) 

IE10

KeyboardEvent.initKeyboardEvent(eventType, canBubble,  cancelable, viewArg, keyArg, locationArg, modifiersListArg, repeat, locale);

Safari/Chrome

KeyboardEvent.initKeyboardEvent(typeArg, canBubbleArg, cancelableArg, viewArg, keyIdentifierArg, keyLocationArg, modifiersListArg, repeat);

Phontomjs

initKeyboardEvent( type, canBubble, cancelable, view, keyIdentifier, keyLocation, ctrlKey, altKey, shiftKey, metaKey, altGraphKey);
initKeyboardEvent(type, canBubble, cancelable, view, keyIdentifier, keyLocation, ctrlKey, altKey, shiftKey, metaKey);

W3C DOM Level 3

KeyboardEvent.initKeyboardEvent (typeArg, bubblesArg, cancelableArg, viewArg, detailArg, keyArg, locationArg, modifiersListArg, repeat);
dictionary KeyboardEventInit {
    boolean       bubbles = false;
    boolean       cancelable = false;
    AbstractView? view = null;
    long          detail = 0;
    DOMString     key = "";
    unsigned long location = 0;
    boolean       ctrlKey = false;
    boolean       shiftKey = false;
    boolean       altKey = false;
    boolean       metaKey = false;
    boolean       repeat = false;
    unsigned long charCode = 0;
    unsigned long keyCode = 0;
    unsigned long which = 0;
};

参考情報

specialKeyの各実装

Chrome,IE

event.shiftKey event.ctrlKey event.altKey event.metaKey

FX,OP?

e.modifiers

keyCodeの各実装

which keyCode key charCode char keyidentifier