@@ -1,8 +1,6 @@
2Elm.Keyboard = { Raw : function() {
2Elm.Keyboard = { Raw : function() {
3 var keysDown = Elm.Signal.constant(["Nil"]);
3 var keysDown = Elm.Signal.constant(["Nil"]);
4− keysDown.defaultNumberOfKids = 2;
6 var charPressed = Elm.Signal.constant(["Nothing"]);
4 var charPressed = Elm.Signal.constant(["Nothing"]);
8 function remove(x,xs) {
6 function remove(x,xs) {
@@ -46,27 +44,45 @@ Elm.Keyboard = { Raw : function() {
48(function() {
46(function() {
47+ function keySignal(f) {
48+ var signal = Elm.Signal.lift(f)(Elm.Keyboard.Raw.keysDown);
49+ Elm.Keyboard.Raw.keysDown.defaultNumberOfKids += 1;
50+ signal.defaultNumberOfKids = 0;
49 function dir(left,right,up,down) {
54 function dir(left,right,up,down) {
50− function f(ks) {
55+ function f(ks) {
51− var x = 0, y = 0;
56+ var x = 0, y = 0;
52− while (ks[0] == "Cons") {
57+ while (ks[0] == "Cons") {
53− switch (ks[1]) {
58+ switch (ks[1]) {
54− case left : --x; break;
59+ case left : --x; break;
55− case right: ++x; break;
60+ case right: ++x; break;
56− case up : ++y; break;
61+ case up : ++y; break;
57− case down : --y; break;
62+ case down : --y; break;
59− ks = ks[2];
64+ ks = ks[2];
61− return { _:[true], x:[x], y:[y] };
63− return Elm.Signal.lift(f)(Elm.Keyboard.Raw.keysDown);
66+ return { _:[true], x:[x], y:[y] };
65− var arrows = dir(37,39,38,40);
66− arrows.defaultNumberOfKids = 0;
67− var wasd = dir(65,68,87,83);
68− wasd.defaultNumberOfKids = 0;
73+ while (ks[0] == "Cons") {
74+ if (key == ks[1]) return true;
70− Elm.Keyboard.arrows = arrows;
82+ Elm.Keyboard.arrows = dir(37,39,38,40);
71− Elm.Keyboard.wasd = wasd;
83+ Elm.Keyboard.wasd = dir(65,68,87,83);
84+ Elm.Keyboard.shift = is(16);
85+ Elm.Keyboard.ctrl = is(17);
86+ Elm.Keyboard.space = is(32);