Prevent clickOnKeyUp if keyup/down behaviour is prevented in gamepadtokey

This commit is contained in:
Bradley Eaton
2025-07-15 18:59:19 +01:00
parent da316634a3
commit d5bdd3cd5a

View File

@@ -58,6 +58,7 @@ let _dPadUpPressed = false;
let _dPadDownPressed = false;
let _dPadLeftPressed = false;
let _dPadRightPressed = false;
let _gamepadADownEvent = null;
let _gamepadAPressed = false;
let _gamepadBPressed = false;
@@ -77,8 +78,11 @@ _ButtonPressedState.getgamepadA = function () {
};
_ButtonPressedState.setgamepadA = function (newPressedState) {
raiseKeyEvent(_gamepadAPressed, newPressedState, _GAMEPAD_A_KEY, _GAMEPAD_A_KEYCODE, false, true);
const newPressedEvent = raiseKeyEvent(_gamepadAPressed, newPressedState, _GAMEPAD_A_KEY, _GAMEPAD_A_KEYCODE, false, true, _gamepadADownEvent);
_gamepadAPressed = newPressedState;
if (newPressedEvent != null) {
_gamepadADownEvent = newPressedEvent;
}
};
_ButtonPressedState.getgamepadB = function () {
@@ -194,6 +198,7 @@ function raiseEvent(name, key, keyCode) {
event.key = key;
event.keyCode = keyCode;
(document.activeElement || document.body).dispatchEvent(event);
return event;
}
function clickElement(elem) {
@@ -204,7 +209,7 @@ function clickElement(elem) {
elem.click();
}
function raiseKeyEvent(oldPressedState, newPressedState, key, keyCode, enableRepeatKeyDown, clickonKeyUp) {
function raiseKeyEvent(oldPressedState, newPressedState, key, keyCode, enableRepeatKeyDown, clickonKeyUp, oldPressedEvent) {
// No-op if oldPressedState === newPressedState
if (newPressedState === true) {
// button down
@@ -219,18 +224,24 @@ function raiseKeyEvent(oldPressedState, newPressedState, key, keyCode, enableRep
}
if (fire && keyCode) {
raiseEvent('keydown', key, keyCode);
const newPressedEvent = raiseEvent('keydown', key, keyCode);
return newPressedEvent;
}
} else if (newPressedState === false && oldPressedState === true) {
resetThrottle(key);
let newPressedEvent = null;
// button up
if (keyCode) {
raiseEvent('keyup', key, keyCode);
newPressedEvent = raiseEvent('keyup', key, keyCode);
}
if (clickonKeyUp) {
if (clickonKeyUp && !oldPressedEvent?.defaultPrevented && !newPressedEvent.defaultPrevented) {
clickElement(document.activeElement || window);
}
if (newPressedEvent) {
return newPressedEvent;
}
}
}