1 回答

TA貢獻2016條經驗 獲得超9個贊
首先,就算同時按下兩個鍵,也會有一點時間誤差而不是真的同時,一定是一先一后。所以按下 enter,再按下ctrl,會觸發兩個 keydown 事件,其 keyCode 分別是 13 和 17。
現在你可以按往 ctrl 不放,再按其它鍵,它們都會觸發 keydown 等事件,而現在這些事件的 e.ctrlKey 就是 true 了。
keydown 事件之后,你可以設置一個標志變量,比如
let isUpPressing = false;
xxxx.on("keydown", e => {
if (e.keyCode === 38) {
isUpPressing = true;
}
});
現在,只要你沒改變這 isUpPressing 的值,它就始終下于 up 鍵按下的狀態,雖然有可能 up 鍵已經放開了。當然在這個狀態下你再按其它鍵,就可以用一堆變量來組合復合狀態了。
剛才說了,up 放開了,但 isUpPressing 仍然是 true,所以我們需要處理這個問題,當然是用 keyup 事件來解決
xxxx.on("keyup", e => {
if (e.keyCode === 38) {
isUpPressing = false;
}
});
小鍵盤的 0 到 9 對應的 keyCode 是 96 到 105。不過貌似沒有區分小鍵盤上的功能鍵。
添加回答
舉報