on 39b3fcb help sign in
elk/core/Native/Keyboard.js
38 lines 743 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, down, left, right) {
18 function f(ks) {
19 var x = 0, y = 0;
20 while (ks.ctor == "Cons") {
21 switch (ks._0) {
22 case left : --x; break;
23 case right: ++x; break;
24 case up : ++y; break;
25 case down : --y; break;
26 }
27 ks = ks._1;
28 }
29 return { _:{}, x:x, y:y };
30 }
31 return keySignal(f);
32 }
34 function is(key) { return keySignal(Elm.List.member(key)); }
36 Elm.Native.Keyboard = { isDown:is, dir:F4(dir) };
38}());