elm/core/Native/Keyboard.js

35 lines
760 B
JavaScript
Raw Normal View History

function nativeKeyboard() {
2013-02-21 08:40:41 +00:00
'use strict';
function keySignal(f) {
var signal = Elm.Signal.lift(f)(Elm.Keyboard.Raw.keysDown);
Elm.Keyboard.Raw.keysDown.defaultNumberOfKids += 1;
signal.defaultNumberOfKids = 0;
return signal;
}
2013-02-21 08:40:41 +00:00
function dir(up) { return function(down) {
return function(left) { return function(right) {
function f(ks) {
var x = 0, y = 0;
2013-02-21 08:40:41 +00:00
while (ks.ctor == "Cons") {
switch (ks._0) {
case left : --x; break;
case right: ++x; break;
case up : ++y; break;
case down : --y; break;
}
2013-02-21 08:40:41 +00:00
ks = ks._1;
}
2013-02-21 08:40:41 +00:00
return { _:{}, x:x, y:y };
}
return keySignal(f);
2013-02-21 08:40:41 +00:00
}}}
}
function is(key) { return keySignal(Elm.List.member(key)); }
Elm.Native.Keyboard = { isDown:is, dir:dir };
2013-02-21 08:40:41 +00:00
}