Fix: dispatch synthetic keys on window (where WasmBoy listens), add keyCode for legacy compat

This commit is contained in:
2026-07-01 15:22:55 +02:00
parent c11dbc208d
commit 5ea4ce3c16
+14
View File
@@ -321,15 +321,29 @@
'Enter':'Enter','enter':'Enter', 'Enter':'Enter','enter':'Enter',
' ':' ' ' ':' '
}; };
// keyCode legacy (WasmBoy controlla anche questo in alcuni browser)
const KEY_KEYCODE = {
'ArrowUp':38,'ArrowDown':40,'ArrowLeft':37,'ArrowRight':39,
'z':90,'Z':90,
'x':88,'X':88,
'Enter':13,'enter':13,
' ':32
};
function dispatchKey(type, dataKey) { function dispatchKey(type, dataKey) {
// WasmBoy ascolta keydown/keyup su WINDOW (non su document),
// usando il code fisico (ArrowUp, KeyZ, KeyX, Enter, Space, ecc.)
const ev = new KeyboardEvent(type, { const ev = new KeyboardEvent(type, {
key: KEY_KEY[dataKey] || dataKey, key: KEY_KEY[dataKey] || dataKey,
code: KEY_CODE[dataKey] || dataKey, code: KEY_CODE[dataKey] || dataKey,
keyCode: KEY_KEYCODE[dataKey] || 0,
which: KEY_KEYCODE[dataKey] || 0,
bubbles: true, bubbles: true,
cancelable: true, cancelable: true,
composed: true composed: true
}); });
// Dispatch su WINDOW (dove WasmBoy ascolta) E su document come fallback
window.dispatchEvent(ev);
document.dispatchEvent(ev); document.dispatchEvent(ev);
} }