@@ -1,15 +1,14 @@
2−Elm.Native.Keyboard = function(elm) {
2+Elm.Native.Keys = function(elm) {
3 'use strict';
3 'use strict';
4 elm.Native = elm.Native || {};
4 elm.Native = elm.Native || {};
5− if (elm.Native.Keyboard) return elm.Native.Keyboard;
5+ if (elm.Native.Keys) return elm.Native.Keys;
7 var Signal = Elm.Signal(elm);
7 var Signal = Elm.Signal(elm);
8 var NList = Elm.Native.List(elm);
8 var NList = Elm.Native.List(elm);
9− var Maybe = Elm.Maybe(elm);
11 var keysDown = Signal.constant(NList.Nil);
10 var keysDown = Signal.constant(NList.Nil);
12− var charPressed = Signal.constant(Maybe.Nothing);
11+ var charPressed = Signal.constant('\0');
14 function down(e) {
13 function down(e) {
15 if (NList.member(e.keyCode)(keysDown.value)) return;
14 if (NList.member(e.keyCode)(keysDown.value)) return;
@@ -28,9 +27,7 @@ Elm.Native.Keyboard = function(elm) {
28 if (!hasListener) elm.node.removeEventListener('blur', blur);
27 if (!hasListener) elm.node.removeEventListener('blur', blur);
30 function press(e) {
29 function press(e) {
31− var next = Maybe.Just(e.charCode || e.keyCode);
30+ var hasListener = elm.notify(charPressed.id, e.charCode || e.keyCode);
32− var hasListener = elm.notify(charPressed.id, next);
33− elm.notify(charPressed.id, Maybe.Nothing);
34 if (!hasListener) elm.node.removeEventListener('keypress', press);
31 if (!hasListener) elm.node.removeEventListener('keypress', press);
@@ -40,7 +37,7 @@ Elm.Native.Keyboard = function(elm) {
40 elm.node.addEventListener('keypress', press);
37 elm.node.addEventListener('keypress', press);
42 function keySignal(f) {
39 function keySignal(f) {
43− var signal = A2( Signal.lift, f, elm.Keyboard.Raw.keysDown );
40+ var signal = A2( Signal.lift, f, keysDown );
44 keysDown.defaultNumberOfKids += 1;
41 keysDown.defaultNumberOfKids += 1;
45 signal.defaultNumberOfKids = 0;
42 signal.defaultNumberOfKids = 0;
46 return signal;
43 return signal;
@@ -65,11 +62,11 @@ Elm.Native.Keyboard = function(elm) {
66 function is(key) { return keySignal(NList.member(key)); }
63 function is(key) { return keySignal(NList.member(key)); }
68− return elm.Native.Keyboard = {
65+ return elm.Native.Keys = {
69 isDown:is,
66 isDown:is,
70 directions:F4(dir),
67 directions:F4(dir),
71− keysDown:keysDown,
68+ down:keysDown,
72− charPressed:charPressed
69+ presses:charPressed