pixelstream-cn
Version:
基于虚幻引擎的像素流平台
48 lines (42 loc) • 1.25 kB
JavaScript
import base from "./base.js";
import messageType from "./messageType.js";
const SpecialKeyCodes = {
BackSpace: 8,
Shift: 16,
Control: 17,
Alt: 18,
RightShift: 253,
RightControl: 254,
RightAlt: 255
}
function getKeyCode(e) {
if (e.keyCode === SpecialKeyCodes.Shift && e.code === 'ShiftRight') return SpecialKeyCodes.RightShift;
else if (e.keyCode === SpecialKeyCodes.Control && e.code === 'ControlRight') return SpecialKeyCodes.RightControl;
else if (e.keyCode === SpecialKeyCodes.Alt && e.code === 'AltRight') return SpecialKeyCodes.RightAlt;
else return e.keyCode;
}
class down extends base{
constructor(e){
super();
this.data = new Uint8Array([messageType.KeyDown, getKeyCode(e), e.repeat]);
}
}
class up extends base{
constructor(e){
super();
this.data = new Uint8Array([messageType.KeyUp, getKeyCode(e)]);
}
}
class press extends base{
constructor(e){
super();
this.data = new DataView(new ArrayBuffer(3));
this.data.setUint8(0, messageType.KeyPress);
this.data.setUint16(1, e.charCode, true);
}
}
export default {
down:down,
up:up,
press:press
}