diff --git a/model/KeyAction.ts b/model/KeyAction.ts index 7b726f85..1f76dc56 100644 --- a/model/KeyAction.ts +++ b/model/KeyAction.ts @@ -1,9 +1,14 @@ +/// /// class KeyAction { static fromJsObject(jsObject: any): KeyAction { switch (jsObject.actionType) { + case 'none': + let keyActionNone = new KeyActionNone(); + keyActionNone.fromJsObject(jsObject); + return keyActionNone; case 'keyStroke': let keystrokeAction = new KeystrokeAction(); keystrokeAction.fromJsObject(jsObject); @@ -17,12 +22,14 @@ class KeyAction { let keyActionFirstByte = buffer.readUInt8(); buffer.backtrack(); - if (KeystrokeAction.firstValidScancode <= keyActionFirstByte && - keyActionFirstByte <= KeystrokeAction.lastValidScancode) - { + if (KeystrokeAction.isScancodeValid(keyActionFirstByte)) { let keystrokeAction = new KeystrokeAction(); keystrokeAction.fromBinary(buffer); return keystrokeAction; + } else if (keyActionFirstByte === KeyActionNone.keyActionNoneId) { + let keyActionNone = new KeyActionNone(); + keyActionNone.fromBinary(buffer); + return keyActionNone; } else { throw 'Unknown KeyAction first byte "${keyActionFirstByte}"'; } diff --git a/model/KeyActionNone.ts b/model/KeyActionNone.ts new file mode 100644 index 00000000..b483da67 --- /dev/null +++ b/model/KeyActionNone.ts @@ -0,0 +1,36 @@ +/// +/// + +class KeyActionNone extends KeyAction implements Serializable { + static keyActionNoneId = 0; + static keyActionNoneParam = 0; + + fromJsObject(jsObject: any) { + if (jsObject.actionType !== 'none') { + throw 'KeyActionNone: The actionType is not "none"'; + } + } + + fromBinary(buffer: UhkBuffer) { + let keyActionId = buffer.readUInt8(); + if (keyActionId !== KeyActionNone.keyActionNoneId) { + throw 'KeyActionNone: id is ${keyActionId} instead of ${KeyActionNone.keyActionNoneId}'; + } + + let keyActionParam = buffer.readUInt8(); + if (keyActionParam !== KeyActionNone.keyActionNoneParam) { + throw 'KeyActionNone: The param is ${keyActionParam} instead of ${KeyActionNone.keyActionNoneParam}'; + } + } + + toJsObject(): any { + return { + actionType: 'none' + }; + } + + toBinary(buffer: UhkBuffer) { + buffer.writeUInt8(KeyActionNone.keyActionNoneId); + buffer.writeUInt8(KeyActionNone.keyActionNoneParam); + } +} diff --git a/model/tslint.json b/model/tslint.json index 1a65cc37..f6d5c24e 100644 --- a/model/tslint.json +++ b/model/tslint.json @@ -35,7 +35,7 @@ ], "max-line-length": [ true, - 100 + 120 ], "no-trailing-whitespace": true, "trailing-comma": [