cloud-game/web/js/input/input.js
2025-12-30 14:36:48 +03:00

56 lines
1.1 KiB
JavaScript

import {
REFRESH_INPUT,
KB_MOUSE_FLAG,
pub,
sub
} from 'event';
export {KEY, JOYPAD_KEYS} from './keys.js?v=3';
import {joystick} from './joystick.js?v=3';
import {keyboard} from './keyboard.js?v=3'
import {pointer} from './pointer.js?v=3';
import {retropad} from './retropad.js?v=3';
import {touch} from './touch.js?v=3';
export {joystick, keyboard, pointer, retropad, touch};
const input_state = {
joystick: true,
keyboard: false,
pointer: true, // aka mouse
retropad: true,
touch: true,
kbm: false,
}
const init = () => {
keyboard.init()
joystick.init()
touch.init()
}
sub(KB_MOUSE_FLAG, () => {
input_state.kbm = true
pub(REFRESH_INPUT)
})
export const input = {
state: input_state,
init,
retropad: {
...retropad,
toggle(on = true) {
if (on === input_state.retropad) return
input_state.retropad = on
retropad.toggle(on)
}
},
set kbm(v) {
input_state.kbm = v
},
get kbm() {
return input_state.kbm
}
}