on d53cecf help sign in
elk/core/Native/Keyboard.js
40 lines 803 B history raw
1/*
2import Signal
3import Keyboard.Raw
4import List
5*/
7(function() {
8 'use strict';
10 function keySignal(f) {
11 var signal = Elm.Signal.lift(f)(Elm.Keyboard.Raw.keysDown);
12 Elm.Keyboard.Raw.keysDown.defaultNumberOfKids += 1;
13 signal.defaultNumberOfKids = 0;
14 return signal;
15 }
17 function dir(up) { return function(down) {
18 return function(left) { return function(right) {
19 function f(ks) {
20 var x = 0, y = 0;
21 while (ks.ctor == "Cons") {
22 switch (ks._0) {
23 case left : --x; break;
24 case right: ++x; break;
25 case up : ++y; break;
26 case down : --y; break;
27 }
28 ks = ks._1;
29 }
30 return { _:{}, x:x, y:y };
31 }
32 return keySignal(f);
33 }}}
34 }
36 function is(key) { return keySignal(Elm.List.member(key)); }
38 Elm.Native.Keyboard = { isDown:is, dir:dir };
40}());