rkeys
Version:
A platform for creating tablet/HTML5 virtual-keyboard apps to send keystrokes to remote X11
55 lines (54 loc) • 1.49 kB
JavaScript
// Generated by LiveScript 1.3.0
(function(){
var _, X11, H, Kco, downkeys, i$, ref$, len$, sig;
_ = require('lodash');
X11 = require('x11');
H = require('./helper');
Kco = require('./keycode');
module.exports = {
down: function(it){
return simulate(H.xtest.KeyPress, it);
},
up: function(it){
return simulate(H.xtest.KeyRelease, it);
}
};
downkeys = [];
for (i$ = 0, len$ = (ref$ = ['SIGINT', 'SIGHUP', 'SIGTERM']).length; i$ < len$; ++i$) {
sig = ref$[i$];
process.on(sig, process.exit);
}
process.on('exit', releaseKeys);
function fakeInput(type, keycode){
return H.xtest.FakeInput(type, keycode, 0, H.root, 0, 0);
}
function releaseKeys(){
var i$, ref$, len$, c, results$ = [];
for (i$ = 0, len$ = (ref$ = downkeys).length; i$ < len$; ++i$) {
c = ref$[i$];
log("release key code=" + c);
results$.push(fakeInput(H.xtest.KeyRelease, c));
}
return results$;
}
function simulate(type, key){
var cs, i$, len$, c, results$ = [];
if (!(cs = Kco.getKeycodes(key))) {
return;
}
for (i$ = 0, len$ = cs.length; i$ < len$; ++i$) {
c = cs[i$];
trackDownkeys(type, c);
results$.push(fakeInput(type, c));
}
return results$;
}
function trackDownkeys(type, keycode){
switch (type) {
case H.xtest.KeyPress:
return downkeys.push(keycode);
case H.xtest.KeyRelease:
return _.pull(downkeys, keycode);
}
}
}).call(this);