release keys when window loosing focus

This commit is contained in:
Devaev Maxim 2018-07-27 11:29:44 +03:00
parent b7d933b6ce
commit d2da0829b9
3 changed files with 40 additions and 2 deletions

View File

@ -2,11 +2,19 @@ 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.releaseAll = function() {
keyboard.releaseAll();
mouse.releaseAll();
};
this.emitShortcut = function(...codes) {
console.log(codes);
var delay = 0;

View File

@ -24,13 +24,17 @@ var keyboard = new function() {
};
this.setSocket = function(ws) {
keyboard.releaseAll();
__ws = ws;
$("hid-keyboard-led").className = (ws ? "led-on" : "led-off");
};
this.releaseAll = function(ws) {
__keys.concat(__modifiers).forEach(function(el_key) {
if (__isActive(el_key)) {
keyboard.fireEvent(el_key.id, false);
}
});
__ws = ws;
$("hid-keyboard-led").className = (ws ? "led-on" : "led-off");
};
this.fireEvent = function(code, state) {

View File

@ -12,6 +12,32 @@ var ui = new function() {
var el_header = el_window.querySelector(".window-header");
__makeWindowMovable(el_header, el_window);
});
if (typeof document.hidden !== "undefined") {
__hidden_attr = "hidden";
__visibility_change_attr = "visibilitychange";
} else if (typeof document.webkitHidden !== "undefined") {
__hidden_attr = "webkitHidden";
__visibility_change_attr = "webkitvisibilitychange";
} else if (typeof document.mozHidden !== "undefined") {
__hidden_attr = "mozHidden";
__visibility_change_attr = "mozvisibilitychange";
}
if (__visibility_change_attr) {
document.addEventListener(
__visibility_change_attr,
function() {
if (document[__hidden_attr]) {
hid.releaseAll();
}
},
false,
);
}
window.onpagehide = hid.releaseAll;
window.onblur = hid.releaseAll;
};
var __toggleMenu = function(el_a) {