在 Windows 中模拟开启粘滞键

Simulate turning on Sticky Keys in Windows

使用 javascript,我试图为用户提供一个选项来打开粘滞键。

手动按 Shift 键 5 次即可。

以下没有成功。还尝试将 shiftKeyArg 设置为 true。

function stickyKeys() {
var keyboardEvent1 = document.createEvent("KeyboardEvent");
var initMethod = typeof keyboardEvent1.initKeyboardEvent !== 'undefined' ? "initKeyboardEvent" : "initKeyEvent";
keyboardEvent1[initMethod](
"keydown", // event type : keydown, keyup, keypress
true, // bubbles
true, // cancelable
window, // viewArg: should be window
false, // ctrlKeyArg
false, // altKeyArg
false, // shiftKeyArg
false, // metaKeyArg
16,
0
);
var keyboardEvent2 = document.createEvent("KeyboardEvent");
var initMethod = typeof keyboardEvent2.initKeyboardEvent !== 'undefined' ? "initKeyboardEvent" : "initKeyEvent";
keyboardEvent2[initMethod](
"keyup", // event type : keydown, keyup, keypress
true, // bubbles
true, // cancelable
window, // viewArg: should be window
false, // ctrlKeyArg
false, // altKeyArg
false, // shiftKeyArg
false, // metaKeyArg
16,
0
);
document.dispatchEvent(keyboardEvent1);
document.dispatchEvent(keyboardEvent2);
document.dispatchEvent(keyboardEvent1);
document.dispatchEvent(keyboardEvent2);
document.dispatchEvent(keyboardEvent1);
document.dispatchEvent(keyboardEvent2);
document.dispatchEvent(keyboardEvent1);
document.dispatchEvent(keyboardEvent2);
document.dispatchEvent(keyboardEvent1);
document.dispatchEvent(keyboardEvent2);
alert("sticky keys on");
}

无法在浏览器中运行(至少是安全性良好的标准浏览器),因为您所做的只是在浏览器的 JavaScript 引擎中触发事件,而不是在处理所有 Windows 事件。

出于安全原因,这是故意的。

您需要一个插件,例如 ActiveX 或一些非标准的浏览器,将事件提升到 OS。