flyd-keyboard
Advanced tools
Comparing version 1.0.1 to 1.1.0
43
index.js
@@ -5,3 +5,46 @@ var stream = require('flyd').stream; | ||
var keycode = require('keycode'); | ||
var flyd = require('flyd'); | ||
var scanMerge = require('flyd-scanmerge'); | ||
exports.keysDown = function() { | ||
var kd = stream(); | ||
var ku = stream(); | ||
var keysDown = scanMerge([ | ||
[kd, function(mem, c) { | ||
return mem.concat(c); | ||
}], | ||
[ku, function(mem, c) { | ||
return mem.filter(function(x) { | ||
return x !== c; | ||
}); | ||
}], | ||
], []); | ||
document.addEventListener('keydown', function(ev) { | ||
// Prevent repeated events for the same key. | ||
// dropRepeats can't be used on `kd` because it won't deactivate after | ||
// `ku` has fired for the same key. Other (heavier?) option would be to | ||
// do dropRepeatsWith(deepEqual) for keysDown. | ||
var c = ev.keyCode; | ||
if (keysDown().indexOf(c) < 0) kd(c); | ||
}, false); | ||
document.addEventListener('keyup', function(ev) { | ||
ku(ev.keyCode); | ||
}, false); | ||
return keysDown; | ||
}; | ||
exports.presses = function() { | ||
var presses = stream(); | ||
document.addEventListener('keypress', function(ev) { | ||
presses(ev.keyCode); | ||
}, false); | ||
return presses; | ||
}; | ||
exports.key = function(key) { | ||
@@ -8,0 +51,0 @@ var ks = stream(false); |
{ | ||
"name": "flyd-keyboard", | ||
"version": "1.0.1", | ||
"version": "1.1.0", | ||
"description": "Keyboard as Flyd streams", | ||
@@ -15,2 +15,3 @@ "main": "index.js", | ||
"flyd-droprepeats": "^2.0.0", | ||
"flyd-scanmerge": "0.0.3", | ||
"keycode": "^2.1.0" | ||
@@ -17,0 +18,0 @@ }, |
@@ -5,6 +5,7 @@ # flyd-keyboard | ||
__Arrows__ | ||
## API | ||
### `arrows()` | ||
```js | ||
var kb = require('flyd-keyboard') | ||
var arrows$ = kb.arrows(); | ||
@@ -15,6 +16,5 @@ arrows$(); // { x: 0, y: 0 } | ||
__Key__ | ||
### `key()` | ||
```js | ||
var kb = require('flyd-keyboard') | ||
var enter$ = kb.key('enter'); | ||
@@ -25,2 +25,18 @@ enter$(); // false | ||
### `presses()` | ||
Emits ASCII codes of pressed keys. | ||
```js | ||
var presses$ = kb.presses(); | ||
``` | ||
### `keysDown()` | ||
Emits a list of keys as keycodes that are currently held down. | ||
```js | ||
var keysDown$ = kb.keysDown(); | ||
``` | ||
### examples | ||
@@ -30,1 +46,3 @@ | ||
- [enter](http://raine.github.io/flyd-keyboard/enter) | ||
- [presses](http://raine.github.io/flyd-keyboard/presses) | ||
- [keysdown](http://raine.github.io/flyd-keyboard/keysdown) |
Sorry, the diff of this file is not supported yet
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
45
1
5238
4
7
77
1
+ Addedflyd-scanmerge@0.0.3
+ Addedflyd-scanmerge@0.0.3(transitive)