31 lines
1.2 KiB
TypeScript
31 lines
1.2 KiB
TypeScript
class KeyAction {
|
|
|
|
static fromJsObject(jsObject: any): KeyAction {
|
|
switch (jsObject.keyActionType) {
|
|
case KeystrokeAction.keyActionTypeString:
|
|
return new KeystrokeAction().fromJsObject(jsObject);
|
|
case MouseAction.keyActionTypeString:
|
|
return new MouseAction().fromJsObject(jsObject);
|
|
case NoneAction.keyActionTypeString:
|
|
return new NoneAction().fromJsObject(jsObject);
|
|
default:
|
|
throw 'Invalid KeyAction.keyActionType: "${jsObject.actionType}"';
|
|
}
|
|
}
|
|
|
|
static fromBinary(buffer: UhkBuffer): KeyAction {
|
|
let keyActionFirstByte = buffer.readUInt8();
|
|
buffer.backtrack();
|
|
|
|
if (KeystrokeAction.isScancodeValid(keyActionFirstByte)) {
|
|
return new KeystrokeAction().fromBinary(buffer);
|
|
} else if (keyActionFirstByte === MouseAction.keyActionId) {
|
|
return new MouseAction().fromBinary(buffer);
|
|
} else if (keyActionFirstByte === NoneAction.keyActionId) {
|
|
return new NoneAction().fromBinary(buffer);
|
|
} else {
|
|
throw 'Invalid KeyAction first byte "${keyActionFirstByte}"';
|
|
}
|
|
}
|
|
}
|