@@ -49,7 +49,9 @@ These are nicely curated inputs from the keyboard. See the
49lower-level interface that will let you define more complicated behavior.
49lower-level interface that will let you define more complicated behavior.
52−(function() {
52+function nativeKeyboard(elm) {
53 function keySignal(f) {
55 function keySignal(f) {
54 var signal = Elm.Signal.lift(f)(Elm.Keyboard.Raw.keysDown);
56 var signal = Elm.Signal.lift(f)(Elm.Keyboard.Raw.keysDown);
55 Elm.Keyboard.Raw.keysDown.defaultNumberOfKids += 1;
57 Elm.Keyboard.Raw.keysDown.defaultNumberOfKids += 1;
@@ -57,67 +59,36 @@ lower-level interface that will let you define more complicated behavior.
57 return signal;
59 return signal;
60− function dir(left,right,up,down) {
62+ function dir(up) { return function(down) {
63+ return function(left) { return function(right) {
61 function f(ks) {
64 function f(ks) {
62 var x = 0, y = 0;
65 var x = 0, y = 0;
63− while (ks[0] == "Cons") {
66+ while (ks.ctor == "Cons") {
64− switch (ks[1]) {
67+ switch (ks._0) {
65 case left : --x; break;
68 case left : --x; break;
66 case right: ++x; break;
69 case right: ++x; break;
67 case up : ++y; break;
70 case up : ++y; break;
68 case down : --y; break;
71 case down : --y; break;
70− ks = ks[2];
73+ ks = ks._1;
72− return { _:[true], x:[x], y:[y] };
75+ return { _:{}, x:x, y:y };
74 return keySignal(f);
77 return keySignal(f);
77 function is(key) {
81 function is(key) {
78 function f(ks) {
82 function f(ks) {
79− while (ks[0] == "Cons") {
83+ while (ks.ctor == "Cons") {
80− if (key == ks[1]) return true;
84+ if (key == ks._0) return true;
81− ks = ks[2];
85+ ks = ks._1;
83 return false;
87 return false;
85 return keySignal(f);
89 return keySignal(f);
88− /*[Directions]*/
92+ elm.Native.Keyboard = { isDown:is, dir:dir };
90− /** arrows : Signal { x:Int, y:Int }
91− A signal of records indicating which arrow keys are pressed.
93− `{ x = 0, y = 0 }` when pressing no arrows.
94− `{ x =-1, y = 0 }` when pressing the left arrow.
95− `{ x = 1, y = 1 }` when pressing the up and right arrows.
96− `{ x = 0, y =-1 }` when pressing the down, left, and right arrows.
98− Elm.Keyboard.arrows = dir(37,39,38,40);
100− /** wasd : Signal { x:Int, y:Int }
101− Just like the arrows signal, but this uses keys w, a, s, and d,
102− which are common controls for many computer games.
104− Elm.Keyboard.wasd = dir(65,68,87,83);
108− /** shift : Signal Bool
109− Whether the shift key is pressed.
111− Elm.Keyboard.shift = is(16);
113− /** ctrl : Signal Bool
114− Whether the control key is pressed.
116− Elm.Keyboard.ctrl = is(17);
118− /** space : Signal Bool
119− Whether the space key is pressed.
121− Elm.Keyboard.space = is(32);