From f909ceb31b3d489a4a6d6e706e0040c4365aecff Mon Sep 17 00:00:00 2001 From: Eric Zhang Date: Sun, 29 Dec 2024 17:35:21 -0500 Subject: [PATCH] Ignore Ctrl or Alt in card shortcut key handlers (#182) --- src/components/Game.js | 38 +++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/src/components/Game.js b/src/components/Game.js index 432e674..ed9eb77 100644 --- a/src/components/Game.js +++ b/src/components/Game.js @@ -161,24 +161,28 @@ function Game({ ? keyboardLayoutDesc.horizontalLayout : keyboardLayoutDesc.verticalLayout; useKeydown((event) => { - const { key } = event; - if (key === "Escape") { - event.preventDefault(); - onClear(); - } else if (key.length === 1 && shortcuts.includes(key.toLowerCase())) { - event.preventDefault(); - const index = shortcuts.indexOf(key.toLowerCase()); - if (index < board.length) { - onClick(board[index]); + const { key, ctrlKey, metaKey } = event; + if (!ctrlKey && !metaKey) { + if (key === "Escape") { + event.preventDefault(); + onClear(); + } else if (key.length === 1 && shortcuts.includes(key.toLowerCase())) { + event.preventDefault(); + const index = shortcuts.indexOf(key.toLowerCase()); + if (index < board.length) { + onClick(board[index]); + } + } else if ( + key.toLowerCase() === keyboardLayoutDesc.orientationChangeKey + ) { + event.preventDefault(); + if (volume === "on") playLayout(); + setCardOrientation(isHorizontal ? "vertical" : "horizontal"); + } else if (key.toLowerCase() === keyboardLayoutDesc.layoutChangeKey) { + event.preventDefault(); + if (volume === "on") playLayout(); + setLayoutOrientation(isLandscape ? "portrait" : "landscape"); } - } else if (key.toLowerCase() === keyboardLayoutDesc.orientationChangeKey) { - event.preventDefault(); - if (volume === "on") playLayout(); - setCardOrientation(isHorizontal ? "vertical" : "horizontal"); - } else if (key.toLowerCase() === keyboardLayoutDesc.layoutChangeKey) { - event.preventDefault(); - if (volume === "on") playLayout(); - setLayoutOrientation(isLandscape ? "portrait" : "landscape"); } });