on master help sign in
Change the name of `Keyboard` to `Keys`. Change some function names and change type of `charPressed` to be the latest char pressed (default is '\0')
commit79093ff4da89ead8130021500c645af62d4e8578 authorevancz <info@elm-lang.org> dateSat 23 Mar 2013, 16:52 (14 years ago) parente80f19b
2 files changed+20−16
libraries/Keyboard.elm → libraries/Keys.elm+12−5 libraries/Native/Signal/Keyboard.js → libraries/Native/Signal/Keys.js+8−11
libraries/Keyboard.elm → libraries/Keys.elmrenamed+12−5
@@ -2,9 +2,9 @@
22-- [Keyboard.Raw library](/docs/Signal/KeyboardRaw.elm) for a
33-- lower-level interface that will let you define more complicated behavior.
44
5−module Keyboard where
5+module Keys where
66
7−import Native.Keyboard as N
7+import Native.Keys as N
88
99type KeyCode = Int
1010
@@ -22,9 +22,12 @@ arrows = N.directions 37 39 38 40
2222wasd : Signal { x:Int, y:Int }
2323wasd = N.directions 65 68 87 83
2424
25+-- Custom key directions so that you can support different locales.
26+-- The plan is to have a locale independent version of this function
27+-- that uses the physical location of keys, but I don't know how to do it.
2528directions : KeyCode -> KeyCode -> KeyCode -> KeyCode -> Signal { x:Int, y:Int }
2629
27−
30+-- Whether an arbitrary key is pressed.
2831isDown : KeyCode -> Signal Bool
2932
3033-- Whether the shift key is pressed.
@@ -39,5 +42,9 @@ ctrl = N.isDown 17
3942space : Signal Bool
4043space = N.isDown 32
4144
42−keysDown : Signal [KeyCode]
43−charPressed : Signal (Maybe Char)
45+-- Whether the enter key is pressed.
46+enter : Signal Bool
47+enter = N.isDown 13
48+
49+down : Signal [KeyCode]
50+presses : Signal Char
libraries/Native/Signal/Keyboard.js → libraries/Native/Signal/Keys.jsrenamed+8−11
@@ -1,15 +1,14 @@
11
2−Elm.Native.Keyboard = function(elm) {
2+Elm.Native.Keys = function(elm) {
33 'use strict';
44 elm.Native = elm.Native || {};
5− if (elm.Native.Keyboard) return elm.Native.Keyboard;
5+ if (elm.Native.Keys) return elm.Native.Keys;
66
77 var Signal = Elm.Signal(elm);
88 var NList = Elm.Native.List(elm);
9− var Maybe = Elm.Maybe(elm);
109
1110 var keysDown = Signal.constant(NList.Nil);
12− var charPressed = Signal.constant(Maybe.Nothing);
11+ var charPressed = Signal.constant('\0');
1312
1413 function down(e) {
1514 if (NList.member(e.keyCode)(keysDown.value)) return;
@@ -28,9 +27,7 @@ Elm.Native.Keyboard = function(elm) {
2827 if (!hasListener) elm.node.removeEventListener('blur', blur);
2928 }
3029 function press(e) {
31− var next = Maybe.Just(e.charCode || e.keyCode);
32− var hasListener = elm.notify(charPressed.id, next);
33− elm.notify(charPressed.id, Maybe.Nothing);
30+ var hasListener = elm.notify(charPressed.id, e.charCode || e.keyCode);
3431 if (!hasListener) elm.node.removeEventListener('keypress', press);
3532 }
3633
@@ -40,7 +37,7 @@ Elm.Native.Keyboard = function(elm) {
4037 elm.node.addEventListener('keypress', press);
4138
4239 function keySignal(f) {
43− var signal = A2( Signal.lift, f, elm.Keyboard.Raw.keysDown );
40+ var signal = A2( Signal.lift, f, keysDown );
4441 keysDown.defaultNumberOfKids += 1;
4542 signal.defaultNumberOfKids = 0;
4643 return signal;
@@ -65,11 +62,11 @@ Elm.Native.Keyboard = function(elm) {
6562
6663 function is(key) { return keySignal(NList.member(key)); }
6764
68− return elm.Native.Keyboard = {
65+ return elm.Native.Keys = {
6966 isDown:is,
7067 directions:F4(dir),
71− keysDown:keysDown,
72− charPressed:charPressed
68+ down:keysDown,
69+ presses:charPressed
7370 };
7471
7572};