Я пытаюсь включить команды редактирования в своем приложении paper.js (например, CTRL+z для отмены).
Обнаружение отдельных буквенных клавиш прекрасно работает, и я могу обнаруживать клавиши-модификаторы, удерживаемые во время событий мыши, но у меня возникают проблемы с написанием обработчика событий, который определяет комбинации CTRL и буквенных клавиш.
Основываясь на примерах, приведенных в 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
Клавиша z нажата, удерживая CTRL
Key:
Control: true
Эти результаты показывают, что строка, возвращаемая event.key
, отличается в зависимости от того, удерживается ли модификатор управления при нажатии другой клавиши. Здесь происходит что-то странное!
Исходя из этого, как я могу обнаружить, что обе эти клавиши нажаты одновременно?