forked from bmatusiak/node-kbstroke
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
53 lines (41 loc) · 1.41 KB
/
index.js
File metadata and controls
53 lines (41 loc) · 1.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
// Copyright 2013 Bradley Matusiak
var events = require('events');
var bindings = require('./build/Release/binding');
exports = module.exports = new events.EventEmitter();
var enabled = false;
var currentKeyMap = [];
var currentMousePos = [];
bindings.KeyMap(function(err,keymap,numLock,capsLock,scrollLock){
currentKeyMap = keymap;
});
var checkKeyMap = function (app) {
if(enabled){
bindings.KeyMap(function(err,keymap,numLock,capsLock,scrollLock,mousePos){
processKeyMap(keymap,numLock,capsLock,scrollLock,mousePos);
});
setInterval(checkKeyMap,0);
}
};
function processKeyMap(keymap,numLock,capsLock,scrollLock,mousePos){
for(var i = 0; i <= 256 ; i++){
if(keymap[i] === 0 && currentKeyMap[i] === 1){
exports.emit("keyup",i,numLock,capsLock,scrollLock,mousePos);
}
if(keymap[i] === 1 && currentKeyMap[i] === 0){
exports.emit("keydown",i,numLock,capsLock,scrollLock,mousePos);
}
currentKeyMap[i] = keymap[i];
}
if(mousePos[0] !== currentMousePos[0] || mousePos[1] !== currentMousePos[1]){
exports.emit("mousemove",{x:mousePos[0],y:mousePos[1]});
}
currentMousePos[0] = mousePos[0];
currentMousePos[1] = mousePos[1];
}
exports.enable = function(){
enabled = true;
setInterval(checkKeyMap,0);
};
exports.disable = function(){
enabled = false;
};