key alias and breakout

This commit is contained in:
Jade (Rose) Rowland 2024-12-31 11:58:32 -05:00
parent 08f6c1ad5e
commit 2443aad01b
3 changed files with 30 additions and 16 deletions

View file

@ -434,6 +434,16 @@ function getUnixTimeSeconds() {
return Date.now() * 0.001;
}
export const keyAlias = new Map([
['control', 'Control'],
['ctrl', 'Control'],
['alt', 'Alt'],
['shift', 'Shift'],
['down', 'ArrowDown'],
['up', 'ArrowUp'],
['left', 'ArrowLeft'],
['right', 'ArrowRight'],
]);
let keyState;
export function getCurrentKeyboardState() {
@ -455,6 +465,18 @@ export function getCurrentKeyboardState() {
return { ...keyState }; // Return a shallow copy of the key state object
}
//keyname: string | Array<string>
//keyname reference: https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_key_values
export function isKeyDown(keyname) {
if (Array.isArray(keyname) === false) {
keyname = [keyname];
}
const keyState = getCurrentKeyboardState();
return keyname.every((x) => {
const keyName = keyAlias.get(x) ?? x;
return keyState[keyName];
});
}
// Floating point versions, see Fraction for rational versions
// // greatest common divisor