【发布时间】:2015-06-18 18:46:05
【问题描述】:
我正在尝试在我的 paper.js 应用程序中启用编辑命令(例如 CTRL+z 用于“撤消”)。
检测单个字母键效果很好,我可以检测鼠标事件期间按住的修饰键,但我无法编写检测 CTRL 和字母键组合的事件处理程序。
基于the examples given by fabric.js,我期望的是一个看起来像这样的密钥处理程序:
function onKeyDown(event) {
if (event.key == 'z' && event.modifiers.control){
//do a thing!
}
}
但是,这不起作用!奇怪的是,条件块永远不会触发。为了调查这一点,我编写了以下诊断处理程序...
function onKeyDown(event) {
console.log(event.key);
console.log(event.modifiers.control);
}
...并尝试了各种键盘输入并获得了一些有趣的结果:
CTRL 仅键
Key: control
Control: true
z 仅键
Key: z
Control: false
按住 CTRL 的同时按下 z 键
Key:
Control: true
这些结果表明event.key 返回的字符串会有所不同,具体取决于在键入另一个键时是否按住了控件修饰符。这里发生了一些奇怪的事情!
基于此,如何检测这两个键同时被按下?
【问题讨论】:
标签: javascript keyevent undo paperjs ctrl