如何判断按下了“Win + Shift + S”组合键? 我正在尝试这样做,但屏幕截图窗口显示得更快。有谁知道如何解决这个问题?
KeyCode for:
Win - 91
Shift - 16
S - 83
我们不能使用shiftKey和metaKey,因为它们只有在我们最后释放它们时才会触发
这是我的代码:
<script>
const set = new Set();
window.addEventListener('keydown', event => {
set.add(event.keyCode)
console.log(set)
});
window.addEventListener('keyup', event => {
if (set.has(91) && set.has(16) && set.has(83)) {
alert('made screen')
}
set.delete(event.keyCode);
console.log(set)
});
</script>
似乎您的意图是在使用屏幕截图时隐藏网站内容并发出警告,
我无法达到
[win-shift-s]
,但是用[win-shift]
来解决,而且即使可以,也不会在屏幕截图工具弹出之前var shortcut = {
// (A) SET SHORTCUT KEYS TO LISTEN TO
listen : null,
set : (listen) => {
// (A1) KEY SEQUENCE + FUNCTION TO RUN
shortcut.listen = listen;
// (A2) KEY PRESS LISTENERS
window.addEventListener("keydown", (evt) => {
shortcut.track(evt.key.toLowerCase(), true);
});
window.addEventListener("keyup", (evt) => {
shortcut.track(evt.key.toLowerCase(), false);
});
},
// (B) KEY PRESS SEQUENCE TRACKER
sequence : [],
track : (key, direction) => {
// (B1) PREVENT AUTO CLEANING
if (shortcut.junk != null) { clearTimeout(shortcut.junk); }
// (B2) KEY DOWN
if (direction) { if (!shortcut.sequence.includes(key)) {
shortcut.sequence.push(key);
}}
// (B3) KEY UP
else {
let idx = shortcut.sequence.indexOf(key);
if (idx != -1) { shortcut.sequence.splice(idx, 1); }
}
// (B4) HIT SHORTCUT?
if (shortcut.sequence.length != 0) {
let seq = shortcut.sequence.join("-");
if (shortcut.listen[seq]) {
shortcut.sequence = [];
shortcut.listen[seq]();
}
// (B5) PREVENT "STUCK SEQUENCE" WHEN USER LEAVES PAGE
// E.G. OPEN NEW TAB WHILE IN MIDDLE OF KEY PRESS SEQUENCE
else {
shortcut.junk = setTimeout(shortcut.clean, 600)
}
}
},
// (C) AUTO CLEANUP
junk : null,
clean : () => {
shortcut.junk = null;
shortcut.sequence = [];
}
};
window.addEventListener("DOMContentLoaded", () => {
shortcut.set({
"meta-shift" : () => {// Use https://keycode.info/ to help you get the key name [*]
document.getElementById("demoA").innerHTML = "Win Shift IS PRESSED"//[*]
document.getElementById("demoA").style.color = "green";//[*]
document.getElementById("demoA").style.backgroundColor = "lightgreen";//[*]
}
});
});
<!-- FOR THE DEMO -->
<div id="demoA"></div>