This repository was archived by the owner on Jan 4, 2026. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathxEventManager.js
More file actions
66 lines (55 loc) · 1.67 KB
/
xEventManager.js
File metadata and controls
66 lines (55 loc) · 1.67 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
54
55
56
57
58
59
60
61
62
63
64
65
var x11 = require('x11/lib/x11'),
spawn = require('child_process').spawn;
log = require('sys').puts;
keyMapper = require('./keyMapper.js');
function XManager(XDisplayClient){
self = this;
self.X = XDisplayClient;
self.root = X.display.screen[0].root;
var min = X.display.min_keycode;
var max = X.display.max_keycode;
self.X.GetKeyboardMapping(min, max-min, function(list){
keyMapper.createMapper(list, min, function(mapper){
self.keyMapper = mapper;
});
});
X.GetGeometry(self.root, function(result){
self.width = result.width;
self.height = result.height;
});
}
XManager.prototype.move= function(xPercent, yPercent){
x = Math.round(self.width *(xPercent/100));
y = Math.round(self.height * (yPercent/100));
this.X.WarpPointer(0,this.root,0,0,0,0,x,y);
}
XManager.prototype.moveRelative= function(x, y){
this.X.QueryPointer(this.root, function(res){
newX = res.x + x;
newY = res.y + y;
this.X.WarpPointer(0,this.root,0,0,0,0,x,y);
});
}
XManager.prototype.keyUp = function (keyCode){
X.require('xtest', function(test) {
test.FakeInput(test.KeyRelease, self.keyMapper.mapKey(keyCode), 0, root, 0, 0);
});
}
XManager.prototype.keyDown = function (keyCode){
X.require('xtest', function(test) {
test.FakeInput(test.KeyPress, self.keyMapper.mapKey(keyCode), 0, root, 0,0);
});
}
XManager.prototype.click = function (clickCode){
X.require('xtest', function(test){
test.FakeInput(test.ButtonPress, clickCode, 0, root, 0,0);
test.FakeInput(test.ButtonRelease, clickCode, 0, root, 0,0);
});
}
module.exports.createXManager = function(cb){
x11.createClient(function(display) {
X = display.client;
XManager = new XManager(X);
cb(XManager);
});
}