@@ -1,40 +1,51 @@
6−(function() {
2+Elm.Native.Keyboard.Raw = function(elm) {
7 'use strict';
3 'use strict';
9− var keysDown = Elm.Signal.constant(Elm.Native.List.Nil);
5+ var Signal = Elm.Signal(elm);
10− var charPressed = Elm.Signal.constant(Elm.Maybe.Nothing);
6+ var NList = Elm.Native.List(elm);
7+ var List = Elm.List(elm);
8+ var Maybe = Elm.Maybe(elm);
9+ var Misc = Elm.Native.Misc(elm);
12− Value.addListener(document, 'keydown', function(e) {
11+ var keysDown = Signal.constant(NList.Nil);
13− if (Elm.List.member(e.keyCode)(keysDown.value)) return;
12+ var charPressed = Signal.constant(Maybe.Nothing);
14− var list = Elm.Native.List.Cons(e.keyCode, keysDown.value);
15− var hasListener = Dispatcher.notify(keysDown.id, list);
17− this.removeEventListener('keydown',arguments.callee,false);
19− Value.addListener(document, 'keyup', function(e) {
20− function notEq(kc) { return kc !== e.keyCode; }
21− var codes = Elm.List.filter(notEq)(keysDown.value);
22− var hasListener = Dispatcher.notify(keysDown.id, codes);
24− this.removeEventListener('keyup',arguments.callee,false);
26− Value.addListener(window, 'blur', function(e) {
27− var hasListener = Dispatcher.notify(keysDown.id, ["Nil"]);
29− this.removeEventListener('blur',arguments.callee,false);
31− Value.addListener(document, 'keypress', function(e) {
32− var next = Elm.Maybe.Just(e.charCode || e.keyCode);
33− var hasListener = Dispatcher.notify(charPressed.id, next);
34− Dispatcher.notify(charPressed.id, Elm.Maybe.Nothing);
36− this.removeEventListener('keypress',arguments.callee,false);
15+ if (List.member(e.keyCode)(keysDown.value)) return;
16+ var list = NList.Cons(e.keyCode, keysDown.value);
17+ var hasListener = elm.notify(keysDown.id, list);
19+ this.removeEventListener('keydown',arguments.callee,false);
22+ function notEq(kc) { return kc !== e.keyCode; }
23+ var codes = List.filter(notEq)(keysDown.value);
24+ var hasListener = elm.notify(keysDown.id, codes);
26+ this.removeEventListener('keyup',arguments.callee,false);
29+ var hasListener = elm.notify(keysDown.id, NList.Nil);
31+ this.removeEventListener('blur',arguments.callee,false);
34+ var next = Maybe.Just(e.charCode || e.keyCode);
35+ var hasListener = elm.notify(charPressed.id, next);
36+ elm.notify(charPressed.id, Maybe.Nothing);
38+ this.removeEventListener('keypress',arguments.callee,false);
41+ Misc.addListener(document, 'keydown' , down );
42+ Misc.addListener(document, 'keyup' , up );
43+ Misc.addListener(window , 'blur' , blur );
44+ Misc.addListener(document, 'keypress', press);
46+ return elm.Native.Keyboard.Raw = {
39− Elm.Native.Keyboard.Raw = {keysDown:keysDown, charPressed:charPressed};
48+ charPressed:charPressed