mouse-hooks
Version:
Global mouse events listener for Node.js
46 lines • 1.64 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const events_1 = require("events");
const child_process_1 = require("child_process");
const path_1 = require("path");
const os_1 = require("os");
let registeredEvents = [];
let mouseProcess;
class MouseEvents extends events_1.EventEmitter {
constructor() {
super();
if (os_1.platform() !== "win32")
return;
this.on("newListener", event => {
if (registeredEvents.indexOf(event) !== -1)
return;
if ((event === "mouse-up" ||
event === "mouse-down" ||
event === "mouse-move") &&
!mouseProcess) {
mouseProcess = child_process_1.fork(path_1.join(__dirname, "../mouse.js"));
mouseProcess.on("message", msg => {
this.emit(msg.event, { x: msg.x, y: msg.y, button: msg.button });
});
}
else {
return;
}
registeredEvents.push(event);
});
this.on("removeListener", event => {
if (this.listenerCount(event) > 0)
return;
if ((event === "mouse-up" ||
event === "mouse-down" ||
event === "mouse-move") &&
mouseProcess) {
mouseProcess.kill();
}
registeredEvents = registeredEvents.filter(x => x !== event);
});
}
}
const mouseEvents = new MouseEvents();
exports.default = mouseEvents;
//# sourceMappingURL=index.js.map