mirror of
https://github.com/kirjavascript/trueLMAO.git
synced 2025-04-02 10:32:05 -04:00
38 lines
1,008 B
JavaScript
38 lines
1,008 B
JavaScript
const controls = new Set([]);
|
|
|
|
window.addEventListener('blur', () => { controls.clear(); });
|
|
window.addEventListener('focus', () => { controls.clear(); });
|
|
|
|
const keymap = {};
|
|
|
|
[
|
|
[1 << 7, ['Enter', 'Shift']], // start
|
|
[1 << 6, ['z', 'Z', ',', '<']], // A
|
|
[1 << 5, ['c', 'C', '/', '?']], // C
|
|
[1 << 4, ['x', 'X', '.', '>', ' ']], // B
|
|
[1 << 3, ['ArrowRight', 'd', 'D']], // R
|
|
[1 << 2, ['ArrowLeft', 'a', 'A']], // L
|
|
[1 << 1, ['ArrowDown', 's', 'S']], // D
|
|
[1, ['ArrowUp', 'w', 'W']], // U
|
|
].forEach(([value, keys]) => {
|
|
keys.forEach(key => { keymap[key] = value; });
|
|
});
|
|
|
|
const html = document.documentElement;
|
|
|
|
html.addEventListener('keydown', e => {
|
|
if (e.key in keymap) {
|
|
controls.add(e.key);
|
|
e.preventDefault();
|
|
}
|
|
});
|
|
html.addEventListener('keyup', e => {
|
|
if (e.key in keymap) {
|
|
controls.delete(e.key);
|
|
e.preventDefault();
|
|
}
|
|
});
|
|
|
|
export default function() {
|
|
return [...controls].reduce((a, c) => a | keymap[c], 0);
|
|
}
|