@hvm/vm
Version:
hvm internal package for virtual machine
35 lines (32 loc) • 792 B
JavaScript
const INPUT_MAP = {
NL: 129,
BS: 129,
LEFT: 130,
UP: 131,
RIGHT: 132,
DOWN: 133,
HOME: 134,
END: 135,
PUP: 136,
PDOWN: 137,
INSERT: 138,
DEL: 139,
ESC: 140,
}
Array(12).fill(null).forEach((_, i) => {
INPUT_MAP[`F${i}`] = 141 + i;
});
module.exports = class BasicInput {
constructor(mapping = {}) {
const keys = [];
const keydown = e => keys.push(e.keyCode);
const keyup = e => {
let idx = 0;
keys.some((code, i) => code === e.keyCode && (idx = i) && true);
return idx || 0;
};
document.addEventListener("keydown", keydown);
document.addEventListener("keyup", keyup);
this.scan = () => (!keys.length ? 0 : keys[keys.length - 1]);
}
}