mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2025-12-12 01:00:29 +08:00
64 lines
1.4 KiB
JavaScript
64 lines
1.4 KiB
JavaScript
var hid = new function() {
|
|
var __install_timer = null;
|
|
var __installed = false;
|
|
|
|
var __hidden_attr = null;
|
|
var __visibility_change_attr = null;
|
|
|
|
this.init = function() {
|
|
keyboard.init();
|
|
mouse.init();
|
|
};
|
|
|
|
this.updateLeds = function() {
|
|
keyboard.updateLeds();
|
|
mouse.updateLeds();
|
|
};
|
|
|
|
this.releaseAll = function() {
|
|
keyboard.releaseAll();
|
|
};
|
|
|
|
this.emitShortcut = function(...codes) {
|
|
tools.debug("Emitted keys:", codes);
|
|
var delay = 0;
|
|
[[codes, true], [codes.slice().reverse(), false]].forEach(function(op) {
|
|
var [op_codes, state] = op;
|
|
op_codes.forEach(function(code) {
|
|
setTimeout(() => keyboard.fireEvent(code, state), delay);
|
|
delay += 100;
|
|
});
|
|
});
|
|
};
|
|
|
|
this.installCapture = function(ws) {
|
|
var http = tools.makeRequest("GET", "/kvmd/hid", function() {
|
|
if (http.readyState === 4) {
|
|
if (http.status === 200) {
|
|
features = JSON.parse(http.responseText).result.features;
|
|
if (features.mouse) {
|
|
mouse.setSocket(ws);
|
|
}
|
|
keyboard.setSocket(ws);
|
|
__installed = true;
|
|
} else {
|
|
tools.error("Can't resolve HID features:", http.responseText);
|
|
__install_timer = setTimeout(() => hid.installCapture(ws), 1000);
|
|
}
|
|
}
|
|
});
|
|
};
|
|
|
|
this.clearCapture = function() {
|
|
if (__install_timer) {
|
|
clearTimeout(__install_timer);
|
|
__install_timer = null;
|
|
}
|
|
if (__installed) {
|
|
mouse.setSocket(null);
|
|
keyboard.setSocket(null);
|
|
__installed = false;
|
|
}
|
|
};
|
|
}
|