From 2688a51b1b6716ef4ce85220d37e04b80e978125 Mon Sep 17 00:00:00 2001 From: Sam Rang Date: Sun, 17 Apr 2016 21:52:22 -0500 Subject: [PATCH 1/7] simple keypress action macro working w/ macro type determination --- config-serializer/config-items/MacroAction.ts | 55 +++++++++++++++++++ .../config-items/MacroActions.ts | 28 ++++++++++ .../config-items/PressKeyAction.ts | 33 +++++++++++ .../config-items/config-items.ts | 3 + config-serializer/test-serializer.ts | 6 +- config-serializer/uhk-config.json | 50 ----------------- 6 files changed, 122 insertions(+), 53 deletions(-) create mode 100644 config-serializer/config-items/MacroAction.ts create mode 100644 config-serializer/config-items/MacroActions.ts create mode 100644 config-serializer/config-items/PressKeyAction.ts diff --git a/config-serializer/config-items/MacroAction.ts b/config-serializer/config-items/MacroAction.ts new file mode 100644 index 00000000..930dada1 --- /dev/null +++ b/config-serializer/config-items/MacroAction.ts @@ -0,0 +1,55 @@ +enum MacroActionId { + PressKeyAction = 0, + HoldKeyAction = 1, + ReleaseKeyAction = 2, + PressModifiersAction = 3, + HoldModifiersAction = 4, + ReleaseModifiersAction = 5, + PressMouseButtonsAction = 6, + HoldMouseButtonsAction = 7, + ReleaseMouseButtonsAction = 8, + MoveMouseAction = 9, + ScrollMouseAction = 10, + DelayAction = 11, + TextAction = 12 +} + +let macroActionType = { + PressKeyAction : 'pressKey', + HoldKeyAction : 'holdKey', + ReleaseKeyAction : 'releaseKey', + PressModifiersAction : 'pressModifiers', + HoldModifiersAction : 'holdModifiers', + ReleaseModifiersAction : 'releaseModifiers', + PressMouseButtonsAction : 'pressMouseButtons', + HoldMouseButtonsAction : 'holdMouseButtons', + ReleaseMouseButtonsAction : 'releaseMouseButtons', + MoveMouseAction : 'moveMouse', + ScrollMouseAction : 'scrollMouse', + DelayAction : 'delay', + TextAction : 'text' +}; + +abstract class MacroAction extends Serializable { + assertMacroActionType(jsObject: any) { + let macroActionClassname = this.constructor.name; + let macroActionTypeString = macroActionType[macroActionClassname]; + if (jsObject.macroActionType !== macroActionTypeString) { + throw `Invalid ${macroActionClassname}.macroActionType: ${jsObject.macroActionType}`; + } + } + + readAndAssertMacroActionId(buffer: UhkBuffer) { + let classname = this.constructor.name; + let readMacroActionId = buffer.readUInt8(); + let macroActionId = MacroActionId[ classname]; + if (readMacroActionId !== macroActionId) { + throw `Invalid ${classname} first byte: ${readMacroActionId}`; + } + } + + abstract _fromJsObject(jsObject: any): MacroAction; + abstract _fromBinary(buffer: UhkBuffer): MacroAction; + abstract _toJsObject(): any; + abstract _toBinary(buffer: UhkBuffer): void; +} diff --git a/config-serializer/config-items/MacroActions.ts b/config-serializer/config-items/MacroActions.ts new file mode 100644 index 00000000..8a0f13f6 --- /dev/null +++ b/config-serializer/config-items/MacroActions.ts @@ -0,0 +1,28 @@ +class MacroActions extends ClassArray { + + jsObjectToClass(jsObject: any): Serializable { + switch (jsObject.macroActionType) { + case macroActionType.PressKeyAction: + return new PressKeyAction().fromJsObject(jsObject); + default: + throw `Invalid MacroAction.macroActionType: "${jsObject.macroActionType}"`; + } + } + + binaryToClass(buffer: UhkBuffer): Serializable { + let macroActionFirstByte = buffer.readUInt8(); + buffer.backtrack(); + + if (buffer.enableDump) { + process.stdout.write(']\n'); + buffer.enableDump = false; + } + + switch (macroActionFirstByte) { + case MacroActionId.PressKeyAction: + return new PressKeyAction().fromBinary(buffer); + default: + throw `Invalid MacroAction first byte: ${macroActionFirstByte}`; + } + } +} diff --git a/config-serializer/config-items/PressKeyAction.ts b/config-serializer/config-items/PressKeyAction.ts new file mode 100644 index 00000000..456b4bbb --- /dev/null +++ b/config-serializer/config-items/PressKeyAction.ts @@ -0,0 +1,33 @@ +class PressKeyAction extends MacroAction { + + // @assertUInt8 + scancode: number; + + _fromJsObject(jsObject: any): PressKeyAction { + this.assertMacroActionType(jsObject); + this.scancode = jsObject.scancode; + return this; + } + + _fromBinary(buffer: UhkBuffer): PressKeyAction { + this.readAndAssertMacroActionId(buffer); + this.scancode = buffer.readUInt8(); + return this; + } + + _toJsObject(): any { + return { + macroActionType: macroActionType.PressKeyAction, + scancode: this.scancode + }; + } + + _toBinary(buffer: UhkBuffer) { + buffer.writeUInt8(MacroActionId.PressKeyAction); + buffer.writeUInt8(this.scancode); + } + + toString(): string { + return ``; + } +} diff --git a/config-serializer/config-items/config-items.ts b/config-serializer/config-items/config-items.ts index 62fa52fd..08a05a1a 100644 --- a/config-serializer/config-items/config-items.ts +++ b/config-serializer/config-items/config-items.ts @@ -15,3 +15,6 @@ /// /// /// +/// +/// +/// diff --git a/config-serializer/test-serializer.ts b/config-serializer/test-serializer.ts index 50f0791e..cc4c97ab 100644 --- a/config-serializer/test-serializer.ts +++ b/config-serializer/test-serializer.ts @@ -10,8 +10,8 @@ let fs = require('fs'); let uhkConfig = JSON.parse(fs.readFileSync('uhk-config.json')); -let config1Js = uhkConfig.keymaps; -let config1Ts: Serializable = new KeyMaps().fromJsObject(config1Js); +let config1Js = uhkConfig.macros[0].macroActions; +let config1Ts: Serializable = new MacroActions().fromJsObject(config1Js); let config1Buffer = new UhkBuffer(); config1Ts.toBinary(config1Buffer); let config1BufferContent = config1Buffer.getBufferContent(); @@ -19,7 +19,7 @@ fs.writeFileSync('uhk-config.bin', config1BufferContent); config1Buffer.offset = 0; console.log(); -let config2Ts = new KeyMaps().fromBinary(config1Buffer); +let config2Ts = new MacroActions().fromBinary(config1Buffer); console.log('\n'); let config2Js = config2Ts.toJsObject(); let config2Buffer = new UhkBuffer(); diff --git a/config-serializer/uhk-config.json b/config-serializer/uhk-config.json index 246c6096..afada8d0 100644 --- a/config-serializer/uhk-config.json +++ b/config-serializer/uhk-config.json @@ -202,56 +202,6 @@ { "macroActionType": "pressKey", "scancode": 111 - }, - { - "macroActionType": "holdKey", - "scancode": 111 - }, - { - "macroActionType": "releaseKey", - "scancode": 111 - }, - { - "macroActionType": "pressModifiers", - "modifierMask": 111 - }, - { - "macroActionType": "holdModifiers", - "modifierMask": 111 - }, - { - "macroActionType": "releaseModifiers", - "modifierMask": 111 - }, - { - "macroActionType": "pressMouseButtons", - "mouseButtonsMask": 9 - }, - { - "macroActionType": "holdMouseButtons", - "mouseButtonsMask": 9 - }, - { - "macroActionType": "releaseMouseButtons", - "mouseButtonsMask": 9 - }, - { - "macroActionType": "moveMouse", - "x": 123, - "y": 123 - }, - { - "macroActionType": "scrollMouse", - "x": 123, - "y": 123 - }, - { - "macroActionType": "delay", - "delay": "1000" - }, - { - "macroActionType": "text", - "text": "this is a text" } ] } From 6dd479e04b637e985fdfeae1a65688b759a754c3 Mon Sep 17 00:00:00 2001 From: Sam Rang Date: Sun, 17 Apr 2016 22:55:20 -0500 Subject: [PATCH 2/7] more macro action types --- .../config-items/HoldKeyAction.ts | 33 +++++++++++++++++++ .../config-items/HoldModifiersAction.ts | 33 +++++++++++++++++++ .../config-items/HoldMouseButtonsAction.ts | 33 +++++++++++++++++++ .../config-items/MacroActions.ts | 32 ++++++++++++++++++ .../config-items/PressModifiersAction.ts | 33 +++++++++++++++++++ .../config-items/PressMouseButtonsAction.ts | 33 +++++++++++++++++++ .../config-items/ReleaseKeyAction.ts | 33 +++++++++++++++++++ .../config-items/ReleaseModifiersAction.ts | 33 +++++++++++++++++++ .../config-items/ReleaseMouseButtonsAction.ts | 33 +++++++++++++++++++ .../config-items/config-items.ts | 8 +++++ config-serializer/uhk-config.json | 32 ++++++++++++++++++ 11 files changed, 336 insertions(+) create mode 100644 config-serializer/config-items/HoldKeyAction.ts create mode 100644 config-serializer/config-items/HoldModifiersAction.ts create mode 100644 config-serializer/config-items/HoldMouseButtonsAction.ts create mode 100644 config-serializer/config-items/PressModifiersAction.ts create mode 100644 config-serializer/config-items/PressMouseButtonsAction.ts create mode 100644 config-serializer/config-items/ReleaseKeyAction.ts create mode 100644 config-serializer/config-items/ReleaseModifiersAction.ts create mode 100644 config-serializer/config-items/ReleaseMouseButtonsAction.ts diff --git a/config-serializer/config-items/HoldKeyAction.ts b/config-serializer/config-items/HoldKeyAction.ts new file mode 100644 index 00000000..ad2b4877 --- /dev/null +++ b/config-serializer/config-items/HoldKeyAction.ts @@ -0,0 +1,33 @@ +class HoldKeyAction extends MacroAction { + + // @assertUInt8 + scancode: number; + + _fromJsObject(jsObject: any): HoldKeyAction { + this.assertMacroActionType(jsObject); + this.scancode = jsObject.scancode; + return this; + } + + _fromBinary(buffer: UhkBuffer): HoldKeyAction { + this.readAndAssertMacroActionId(buffer); + this.scancode = buffer.readUInt8(); + return this; + } + + _toJsObject(): any { + return { + macroActionType: macroActionType.HoldKeyAction, + scancode: this.scancode + }; + } + + _toBinary(buffer: UhkBuffer) { + buffer.writeUInt8(MacroActionId.HoldKeyAction); + buffer.writeUInt8(this.scancode); + } + + toString(): string { + return ``; + } +} diff --git a/config-serializer/config-items/HoldModifiersAction.ts b/config-serializer/config-items/HoldModifiersAction.ts new file mode 100644 index 00000000..d91165a3 --- /dev/null +++ b/config-serializer/config-items/HoldModifiersAction.ts @@ -0,0 +1,33 @@ +class HoldModifiersAction extends MacroAction { + + // @assertUInt8 + modifierMask: number; + + _fromJsObject(jsObject: any): HoldModifiersAction { + this.assertMacroActionType(jsObject); + this.modifierMask = jsObject.modifierMask; + return this; + } + + _fromBinary(buffer: UhkBuffer): HoldModifiersAction { + this.readAndAssertMacroActionId(buffer); + this.modifierMask = buffer.readUInt8(); + return this; + } + + _toJsObject(): any { + return { + macroActionType: macroActionType.HoldModifiersAction, + modifierMask: this.modifierMask + }; + } + + _toBinary(buffer: UhkBuffer) { + buffer.writeUInt8(MacroActionId.HoldModifiersAction); + buffer.writeUInt8(this.modifierMask); + } + + toString(): string { + return ``; + } +} diff --git a/config-serializer/config-items/HoldMouseButtonsAction.ts b/config-serializer/config-items/HoldMouseButtonsAction.ts new file mode 100644 index 00000000..2dd4b247 --- /dev/null +++ b/config-serializer/config-items/HoldMouseButtonsAction.ts @@ -0,0 +1,33 @@ +class HoldMouseButtonsAction extends MacroAction { + + // @assertUInt8 + mouseButtonsMask: number; + + _fromJsObject(jsObject: any): HoldMouseButtonsAction { + this.assertMacroActionType(jsObject); + this.mouseButtonsMask = jsObject.mouseButtonsMask; + return this; + } + + _fromBinary(buffer: UhkBuffer): HoldMouseButtonsAction { + this.readAndAssertMacroActionId(buffer); + this.mouseButtonsMask = buffer.readUInt8(); + return this; + } + + _toJsObject(): any { + return { + macroActionType: macroActionType.HoldMouseButtonsAction, + mouseButtonsMask: this.mouseButtonsMask + }; + } + + _toBinary(buffer: UhkBuffer) { + buffer.writeUInt8(MacroActionId.HoldMouseButtonsAction); + buffer.writeUInt8(this.mouseButtonsMask); + } + + toString(): string { + return ``; + } +} diff --git a/config-serializer/config-items/MacroActions.ts b/config-serializer/config-items/MacroActions.ts index 8a0f13f6..315035db 100644 --- a/config-serializer/config-items/MacroActions.ts +++ b/config-serializer/config-items/MacroActions.ts @@ -4,6 +4,22 @@ class MacroActions extends ClassArray { switch (jsObject.macroActionType) { case macroActionType.PressKeyAction: return new PressKeyAction().fromJsObject(jsObject); + case macroActionType.HoldKeyAction: + return new HoldKeyAction().fromJsObject(jsObject); + case macroActionType.ReleaseKeyAction: + return new ReleaseKeyAction().fromJsObject(jsObject); + case macroActionType.PressModifiersAction: + return new PressModifiersAction().fromJsObject(jsObject); + case macroActionType.HoldModifiersAction: + return new HoldModifiersAction().fromJsObject(jsObject); + case macroActionType.ReleaseModifiersAction: + return new ReleaseModifiersAction().fromJsObject(jsObject); + case macroActionType.PressMouseButtonsAction: + return new PressMouseButtonsAction().fromJsObject(jsObject); + case macroActionType.HoldMouseButtonsAction: + return new HoldMouseButtonsAction().fromJsObject(jsObject); + case macroActionType.ReleaseMouseButtonsAction: + return new ReleaseMouseButtonsAction().fromJsObject(jsObject); default: throw `Invalid MacroAction.macroActionType: "${jsObject.macroActionType}"`; } @@ -21,6 +37,22 @@ class MacroActions extends ClassArray { switch (macroActionFirstByte) { case MacroActionId.PressKeyAction: return new PressKeyAction().fromBinary(buffer); + case MacroActionId.HoldKeyAction: + return new HoldKeyAction().fromBinary(buffer); + case MacroActionId.ReleaseKeyAction: + return new ReleaseKeyAction().fromBinary(buffer); + case MacroActionId.PressModifiersAction: + return new PressModifiersAction().fromBinary(buffer); + case MacroActionId.HoldModifiersAction: + return new HoldModifiersAction().fromBinary(buffer); + case MacroActionId.ReleaseModifiersAction: + return new ReleaseModifiersAction().fromBinary(buffer); + case MacroActionId.PressMouseButtonsAction: + return new PressMouseButtonsAction().fromBinary(buffer); + case MacroActionId.HoldMouseButtonsAction: + return new HoldMouseButtonsAction().fromBinary(buffer); + case MacroActionId.ReleaseMouseButtonsAction: + return new ReleaseMouseButtonsAction().fromBinary(buffer); default: throw `Invalid MacroAction first byte: ${macroActionFirstByte}`; } diff --git a/config-serializer/config-items/PressModifiersAction.ts b/config-serializer/config-items/PressModifiersAction.ts new file mode 100644 index 00000000..59f7e4a2 --- /dev/null +++ b/config-serializer/config-items/PressModifiersAction.ts @@ -0,0 +1,33 @@ +class PressModifiersAction extends MacroAction { + + // @assertUInt8 + modifierMask: number; + + _fromJsObject(jsObject: any): PressModifiersAction { + this.assertMacroActionType(jsObject); + this.modifierMask = jsObject.modifierMask; + return this; + } + + _fromBinary(buffer: UhkBuffer): PressModifiersAction { + this.readAndAssertMacroActionId(buffer); + this.modifierMask = buffer.readUInt8(); + return this; + } + + _toJsObject(): any { + return { + macroActionType: macroActionType.PressModifiersAction, + modifierMask: this.modifierMask + }; + } + + _toBinary(buffer: UhkBuffer) { + buffer.writeUInt8(MacroActionId.PressModifiersAction); + buffer.writeUInt8(this.modifierMask); + } + + toString(): string { + return ``; + } +} diff --git a/config-serializer/config-items/PressMouseButtonsAction.ts b/config-serializer/config-items/PressMouseButtonsAction.ts new file mode 100644 index 00000000..35853c07 --- /dev/null +++ b/config-serializer/config-items/PressMouseButtonsAction.ts @@ -0,0 +1,33 @@ +class PressMouseButtonsAction extends MacroAction { + + // @assertUInt8 + mouseButtonsMask: number; + + _fromJsObject(jsObject: any): PressMouseButtonsAction { + this.assertMacroActionType(jsObject); + this.mouseButtonsMask = jsObject.mouseButtonsMask; + return this; + } + + _fromBinary(buffer: UhkBuffer): PressMouseButtonsAction { + this.readAndAssertMacroActionId(buffer); + this.mouseButtonsMask = buffer.readUInt8(); + return this; + } + + _toJsObject(): any { + return { + macroActionType: macroActionType.PressMouseButtonsAction, + mouseButtonsMask: this.mouseButtonsMask + }; + } + + _toBinary(buffer: UhkBuffer) { + buffer.writeUInt8(MacroActionId.PressMouseButtonsAction); + buffer.writeUInt8(this.mouseButtonsMask); + } + + toString(): string { + return ``; + } +} diff --git a/config-serializer/config-items/ReleaseKeyAction.ts b/config-serializer/config-items/ReleaseKeyAction.ts new file mode 100644 index 00000000..1d20aaa3 --- /dev/null +++ b/config-serializer/config-items/ReleaseKeyAction.ts @@ -0,0 +1,33 @@ +class ReleaseKeyAction extends MacroAction { + + // @assertUInt8 + scancode: number; + + _fromJsObject(jsObject: any): ReleaseKeyAction { + this.assertMacroActionType(jsObject); + this.scancode = jsObject.scancode; + return this; + } + + _fromBinary(buffer: UhkBuffer): ReleaseKeyAction { + this.readAndAssertMacroActionId(buffer); + this.scancode = buffer.readUInt8(); + return this; + } + + _toJsObject(): any { + return { + macroActionType: macroActionType.ReleaseKeyAction, + scancode: this.scancode + }; + } + + _toBinary(buffer: UhkBuffer) { + buffer.writeUInt8(MacroActionId.ReleaseKeyAction); + buffer.writeUInt8(this.scancode); + } + + toString(): string { + return ``; + } +} diff --git a/config-serializer/config-items/ReleaseModifiersAction.ts b/config-serializer/config-items/ReleaseModifiersAction.ts new file mode 100644 index 00000000..cd0c6f13 --- /dev/null +++ b/config-serializer/config-items/ReleaseModifiersAction.ts @@ -0,0 +1,33 @@ +class ReleaseModifiersAction extends MacroAction { + + // @assertUInt8 + modifierMask: number; + + _fromJsObject(jsObject: any): ReleaseModifiersAction { + this.assertMacroActionType(jsObject); + this.modifierMask = jsObject.modifierMask; + return this; + } + + _fromBinary(buffer: UhkBuffer): ReleaseModifiersAction { + this.readAndAssertMacroActionId(buffer); + this.modifierMask = buffer.readUInt8(); + return this; + } + + _toJsObject(): any { + return { + macroActionType: macroActionType.ReleaseModifiersAction, + modifierMask: this.modifierMask + }; + } + + _toBinary(buffer: UhkBuffer) { + buffer.writeUInt8(MacroActionId.ReleaseModifiersAction); + buffer.writeUInt8(this.modifierMask); + } + + toString(): string { + return ``; + } +} diff --git a/config-serializer/config-items/ReleaseMouseButtonsAction.ts b/config-serializer/config-items/ReleaseMouseButtonsAction.ts new file mode 100644 index 00000000..c77caf33 --- /dev/null +++ b/config-serializer/config-items/ReleaseMouseButtonsAction.ts @@ -0,0 +1,33 @@ +class ReleaseMouseButtonsAction extends MacroAction { + + // @assertUInt8 + mouseButtonsMask: number; + + _fromJsObject(jsObject: any): ReleaseMouseButtonsAction { + this.assertMacroActionType(jsObject); + this.mouseButtonsMask = jsObject.mouseButtonsMask; + return this; + } + + _fromBinary(buffer: UhkBuffer): ReleaseMouseButtonsAction { + this.readAndAssertMacroActionId(buffer); + this.mouseButtonsMask = buffer.readUInt8(); + return this; + } + + _toJsObject(): any { + return { + macroActionType: macroActionType.ReleaseMouseButtonsAction, + mouseButtonsMask: this.mouseButtonsMask + }; + } + + _toBinary(buffer: UhkBuffer) { + buffer.writeUInt8(MacroActionId.ReleaseMouseButtonsAction); + buffer.writeUInt8(this.mouseButtonsMask); + } + + toString(): string { + return ``; + } +} diff --git a/config-serializer/config-items/config-items.ts b/config-serializer/config-items/config-items.ts index 08a05a1a..9415eb66 100644 --- a/config-serializer/config-items/config-items.ts +++ b/config-serializer/config-items/config-items.ts @@ -18,3 +18,11 @@ /// /// /// +/// +/// +/// +/// +/// +/// +/// +/// diff --git a/config-serializer/uhk-config.json b/config-serializer/uhk-config.json index afada8d0..fd13d498 100644 --- a/config-serializer/uhk-config.json +++ b/config-serializer/uhk-config.json @@ -202,6 +202,38 @@ { "macroActionType": "pressKey", "scancode": 111 + }, + { + "macroActionType": "holdKey", + "scancode": 83 + }, + { + "macroActionType": "releaseKey", + "scancode": 112 + }, + { + "macroActionType": "pressModifiers", + "modifierMask": 93 + }, + { + "macroActionType": "holdModifiers", + "modifierMask": 101 + }, + { + "macroActionType": "releaseModifiers", + "modifierMask": 133 + }, + { + "macroActionType": "pressMouseButtons", + "mouseButtonsMask": 9 + }, + { + "macroActionType": "holdMouseButtons", + "mouseButtonsMask": 12 + }, + { + "macroActionType": "releaseMouseButtons", + "mouseButtonsMask": 104 } ] } From fcf9d08f0685d772517946a4bdb3cf1fe01f50f0 Mon Sep 17 00:00:00 2001 From: Sam Rang Date: Sun, 17 Apr 2016 23:03:12 -0500 Subject: [PATCH 3/7] move and scroll mouse actions --- .../config-items/MacroActions.ts | 8 ++++ .../config-items/MoveMouseAction.ts | 40 +++++++++++++++++++ .../config-items/ScrollMouseAction.ts | 40 +++++++++++++++++++ .../config-items/config-items.ts | 2 + config-serializer/uhk-config.json | 10 +++++ 5 files changed, 100 insertions(+) create mode 100644 config-serializer/config-items/MoveMouseAction.ts create mode 100644 config-serializer/config-items/ScrollMouseAction.ts diff --git a/config-serializer/config-items/MacroActions.ts b/config-serializer/config-items/MacroActions.ts index 315035db..5d9209f0 100644 --- a/config-serializer/config-items/MacroActions.ts +++ b/config-serializer/config-items/MacroActions.ts @@ -20,6 +20,10 @@ class MacroActions extends ClassArray { return new HoldMouseButtonsAction().fromJsObject(jsObject); case macroActionType.ReleaseMouseButtonsAction: return new ReleaseMouseButtonsAction().fromJsObject(jsObject); + case macroActionType.MoveMouseAction: + return new MoveMouseAction().fromJsObject(jsObject); + case macroActionType.ScrollMouseAction: + return new ScrollMouseAction().fromJsObject(jsObject); default: throw `Invalid MacroAction.macroActionType: "${jsObject.macroActionType}"`; } @@ -53,6 +57,10 @@ class MacroActions extends ClassArray { return new HoldMouseButtonsAction().fromBinary(buffer); case MacroActionId.ReleaseMouseButtonsAction: return new ReleaseMouseButtonsAction().fromBinary(buffer); + case MacroActionId.MoveMouseAction: + return new MoveMouseAction().fromBinary(buffer); + case MacroActionId.ScrollMouseAction: + return new ScrollMouseAction().fromBinary(buffer); default: throw `Invalid MacroAction first byte: ${macroActionFirstByte}`; } diff --git a/config-serializer/config-items/MoveMouseAction.ts b/config-serializer/config-items/MoveMouseAction.ts new file mode 100644 index 00000000..197e494f --- /dev/null +++ b/config-serializer/config-items/MoveMouseAction.ts @@ -0,0 +1,40 @@ +class MoveMouseAction extends MacroAction { + + // @assertInt16 + x: number; + + // @assertInt16 + y: number; + + _fromJsObject(jsObject: any): MoveMouseAction { + this.assertMacroActionType(jsObject); + this.x = jsObject.x; + this.y = jsObject.y; + return this; + } + + _fromBinary(buffer: UhkBuffer): MoveMouseAction { + this.readAndAssertMacroActionId(buffer); + this.x = buffer.readInt16(); + this.y = buffer.readInt16(); + return this; + } + + _toJsObject(): any { + return { + macroActionType: macroActionType.MoveMouseAction, + x: this.x, + y: this.y + }; + } + + _toBinary(buffer: UhkBuffer) { + buffer.writeUInt8(MacroActionId.MoveMouseAction); + buffer.writeInt16(this.x); + buffer.writeInt16(this.y); + } + + toString(): string { + return ``; + } +} diff --git a/config-serializer/config-items/ScrollMouseAction.ts b/config-serializer/config-items/ScrollMouseAction.ts new file mode 100644 index 00000000..d2e78d9a --- /dev/null +++ b/config-serializer/config-items/ScrollMouseAction.ts @@ -0,0 +1,40 @@ +class ScrollMouseAction extends MacroAction { + + // @assertInt16 + x: number; + + // @assertInt16 + y: number; + + _fromJsObject(jsObject: any): ScrollMouseAction { + this.assertMacroActionType(jsObject); + this.x = jsObject.x; + this.y = jsObject.y; + return this; + } + + _fromBinary(buffer: UhkBuffer): ScrollMouseAction { + this.readAndAssertMacroActionId(buffer); + this.x = buffer.readInt16(); + this.y = buffer.readInt16(); + return this; + } + + _toJsObject(): any { + return { + macroActionType: macroActionType.ScrollMouseAction, + x: this.x, + y: this.y + }; + } + + _toBinary(buffer: UhkBuffer) { + buffer.writeUInt8(MacroActionId.ScrollMouseAction); + buffer.writeInt16(this.x); + buffer.writeInt16(this.y); + } + + toString(): string { + return ``; + } +} diff --git a/config-serializer/config-items/config-items.ts b/config-serializer/config-items/config-items.ts index 9415eb66..9aa3a9e9 100644 --- a/config-serializer/config-items/config-items.ts +++ b/config-serializer/config-items/config-items.ts @@ -26,3 +26,5 @@ /// /// /// +/// +/// diff --git a/config-serializer/uhk-config.json b/config-serializer/uhk-config.json index fd13d498..922b1a8a 100644 --- a/config-serializer/uhk-config.json +++ b/config-serializer/uhk-config.json @@ -234,6 +234,16 @@ { "macroActionType": "releaseMouseButtons", "mouseButtonsMask": 104 + }, + { + "macroActionType": "moveMouse", + "x": 123, + "y": 123 + }, + { + "macroActionType": "scrollMouse", + "x": 123, + "y": 123 } ] } From 408ddad10df18917ce7bd18abf80c651be2b275d Mon Sep 17 00:00:00 2001 From: Sam Rang Date: Sun, 17 Apr 2016 23:21:00 -0500 Subject: [PATCH 4/7] testing int limits and renaming based on specs --- .../{HoldKeyAction.ts => HoldKeyMacroAction.ts} | 0 ...iersAction.ts => HoldModifiersMacroAction.ts} | 0 ...sAction.ts => HoldMouseButtonsMacroAction.ts} | 0 ...oveMouseAction.ts => MoveMouseMacroAction.ts} | 0 ...{PressKeyAction.ts => PressKeyMacroAction.ts} | 0 ...ersAction.ts => PressModifiersMacroAction.ts} | 0 ...Action.ts => PressMouseButtonsMacroAction.ts} | 0 ...easeKeyAction.ts => ReleaseKeyMacroAction.ts} | 0 ...sAction.ts => ReleaseModifiersMacroAction.ts} | 0 ...tion.ts => ReleaseMouseButtonsMacroAction.ts} | 0 ...lMouseAction.ts => ScrollMouseMacroAction.ts} | 0 config-serializer/uhk-config.json | 16 ++++++++++++---- 12 files changed, 12 insertions(+), 4 deletions(-) rename config-serializer/config-items/{HoldKeyAction.ts => HoldKeyMacroAction.ts} (100%) rename config-serializer/config-items/{HoldModifiersAction.ts => HoldModifiersMacroAction.ts} (100%) rename config-serializer/config-items/{HoldMouseButtonsAction.ts => HoldMouseButtonsMacroAction.ts} (100%) rename config-serializer/config-items/{MoveMouseAction.ts => MoveMouseMacroAction.ts} (100%) rename config-serializer/config-items/{PressKeyAction.ts => PressKeyMacroAction.ts} (100%) rename config-serializer/config-items/{PressModifiersAction.ts => PressModifiersMacroAction.ts} (100%) rename config-serializer/config-items/{PressMouseButtonsAction.ts => PressMouseButtonsMacroAction.ts} (100%) rename config-serializer/config-items/{ReleaseKeyAction.ts => ReleaseKeyMacroAction.ts} (100%) rename config-serializer/config-items/{ReleaseModifiersAction.ts => ReleaseModifiersMacroAction.ts} (100%) rename config-serializer/config-items/{ReleaseMouseButtonsAction.ts => ReleaseMouseButtonsMacroAction.ts} (100%) rename config-serializer/config-items/{ScrollMouseAction.ts => ScrollMouseMacroAction.ts} (100%) diff --git a/config-serializer/config-items/HoldKeyAction.ts b/config-serializer/config-items/HoldKeyMacroAction.ts similarity index 100% rename from config-serializer/config-items/HoldKeyAction.ts rename to config-serializer/config-items/HoldKeyMacroAction.ts diff --git a/config-serializer/config-items/HoldModifiersAction.ts b/config-serializer/config-items/HoldModifiersMacroAction.ts similarity index 100% rename from config-serializer/config-items/HoldModifiersAction.ts rename to config-serializer/config-items/HoldModifiersMacroAction.ts diff --git a/config-serializer/config-items/HoldMouseButtonsAction.ts b/config-serializer/config-items/HoldMouseButtonsMacroAction.ts similarity index 100% rename from config-serializer/config-items/HoldMouseButtonsAction.ts rename to config-serializer/config-items/HoldMouseButtonsMacroAction.ts diff --git a/config-serializer/config-items/MoveMouseAction.ts b/config-serializer/config-items/MoveMouseMacroAction.ts similarity index 100% rename from config-serializer/config-items/MoveMouseAction.ts rename to config-serializer/config-items/MoveMouseMacroAction.ts diff --git a/config-serializer/config-items/PressKeyAction.ts b/config-serializer/config-items/PressKeyMacroAction.ts similarity index 100% rename from config-serializer/config-items/PressKeyAction.ts rename to config-serializer/config-items/PressKeyMacroAction.ts diff --git a/config-serializer/config-items/PressModifiersAction.ts b/config-serializer/config-items/PressModifiersMacroAction.ts similarity index 100% rename from config-serializer/config-items/PressModifiersAction.ts rename to config-serializer/config-items/PressModifiersMacroAction.ts diff --git a/config-serializer/config-items/PressMouseButtonsAction.ts b/config-serializer/config-items/PressMouseButtonsMacroAction.ts similarity index 100% rename from config-serializer/config-items/PressMouseButtonsAction.ts rename to config-serializer/config-items/PressMouseButtonsMacroAction.ts diff --git a/config-serializer/config-items/ReleaseKeyAction.ts b/config-serializer/config-items/ReleaseKeyMacroAction.ts similarity index 100% rename from config-serializer/config-items/ReleaseKeyAction.ts rename to config-serializer/config-items/ReleaseKeyMacroAction.ts diff --git a/config-serializer/config-items/ReleaseModifiersAction.ts b/config-serializer/config-items/ReleaseModifiersMacroAction.ts similarity index 100% rename from config-serializer/config-items/ReleaseModifiersAction.ts rename to config-serializer/config-items/ReleaseModifiersMacroAction.ts diff --git a/config-serializer/config-items/ReleaseMouseButtonsAction.ts b/config-serializer/config-items/ReleaseMouseButtonsMacroAction.ts similarity index 100% rename from config-serializer/config-items/ReleaseMouseButtonsAction.ts rename to config-serializer/config-items/ReleaseMouseButtonsMacroAction.ts diff --git a/config-serializer/config-items/ScrollMouseAction.ts b/config-serializer/config-items/ScrollMouseMacroAction.ts similarity index 100% rename from config-serializer/config-items/ScrollMouseAction.ts rename to config-serializer/config-items/ScrollMouseMacroAction.ts diff --git a/config-serializer/uhk-config.json b/config-serializer/uhk-config.json index 922b1a8a..778e9354 100644 --- a/config-serializer/uhk-config.json +++ b/config-serializer/uhk-config.json @@ -237,13 +237,21 @@ }, { "macroActionType": "moveMouse", - "x": 123, - "y": 123 + "x": -1920, + "y": 220 }, { "macroActionType": "scrollMouse", - "x": 123, - "y": 123 + "x": 0, + "y": 20000 + }, + { + "macroActionType": "delay", + "delay": 40000 + }, + { + "macroActionType": "text", + "text": "this is a text" } ] } From 4dc3c4f6c3abcfe0c6ba0de7e043c84c24c09b32 Mon Sep 17 00:00:00 2001 From: Sam Rang Date: Sun, 17 Apr 2016 23:27:24 -0500 Subject: [PATCH 5/7] updating references --- .../config-items/HoldKeyMacroAction.ts | 12 +-- .../config-items/HoldModifiersMacroAction.ts | 12 +-- .../HoldMouseButtonsMacroAction.ts | 12 +-- config-serializer/config-items/MacroAction.ts | 52 +++++------ .../config-items/MacroActions.ts | 88 +++++++++---------- .../config-items/MoveMouseMacroAction.ts | 12 +-- .../config-items/PressKeyMacroAction.ts | 12 +-- .../config-items/PressModifiersMacroAction.ts | 12 +-- .../PressMouseButtonsMacroAction.ts | 12 +-- .../config-items/ReleaseKeyMacroAction.ts | 12 +-- .../ReleaseModifiersMacroAction.ts | 12 +-- .../ReleaseMouseButtonsMacroAction.ts | 12 +-- .../config-items/ScrollMouseMacroAction.ts | 12 +-- .../config-items/config-items.ts | 22 ++--- config-serializer/uhk-config.json | 8 -- 15 files changed, 147 insertions(+), 155 deletions(-) diff --git a/config-serializer/config-items/HoldKeyMacroAction.ts b/config-serializer/config-items/HoldKeyMacroAction.ts index ad2b4877..29b77f33 100644 --- a/config-serializer/config-items/HoldKeyMacroAction.ts +++ b/config-serializer/config-items/HoldKeyMacroAction.ts @@ -1,15 +1,15 @@ -class HoldKeyAction extends MacroAction { +class HoldKeyMacroAction extends MacroAction { // @assertUInt8 scancode: number; - _fromJsObject(jsObject: any): HoldKeyAction { + _fromJsObject(jsObject: any): HoldKeyMacroAction { this.assertMacroActionType(jsObject); this.scancode = jsObject.scancode; return this; } - _fromBinary(buffer: UhkBuffer): HoldKeyAction { + _fromBinary(buffer: UhkBuffer): HoldKeyMacroAction { this.readAndAssertMacroActionId(buffer); this.scancode = buffer.readUInt8(); return this; @@ -17,17 +17,17 @@ class HoldKeyAction extends MacroAction { _toJsObject(): any { return { - macroActionType: macroActionType.HoldKeyAction, + macroActionType: macroActionType.HoldKeyMacroAction, scancode: this.scancode }; } _toBinary(buffer: UhkBuffer) { - buffer.writeUInt8(MacroActionId.HoldKeyAction); + buffer.writeUInt8(MacroActionId.HoldKeyMacroAction); buffer.writeUInt8(this.scancode); } toString(): string { - return ``; + return ``; } } diff --git a/config-serializer/config-items/HoldModifiersMacroAction.ts b/config-serializer/config-items/HoldModifiersMacroAction.ts index d91165a3..7671fe04 100644 --- a/config-serializer/config-items/HoldModifiersMacroAction.ts +++ b/config-serializer/config-items/HoldModifiersMacroAction.ts @@ -1,15 +1,15 @@ -class HoldModifiersAction extends MacroAction { +class HoldModifiersMacroAction extends MacroAction { // @assertUInt8 modifierMask: number; - _fromJsObject(jsObject: any): HoldModifiersAction { + _fromJsObject(jsObject: any): HoldModifiersMacroAction { this.assertMacroActionType(jsObject); this.modifierMask = jsObject.modifierMask; return this; } - _fromBinary(buffer: UhkBuffer): HoldModifiersAction { + _fromBinary(buffer: UhkBuffer): HoldModifiersMacroAction { this.readAndAssertMacroActionId(buffer); this.modifierMask = buffer.readUInt8(); return this; @@ -17,17 +17,17 @@ class HoldModifiersAction extends MacroAction { _toJsObject(): any { return { - macroActionType: macroActionType.HoldModifiersAction, + macroActionType: macroActionType.HoldModifiersMacroAction, modifierMask: this.modifierMask }; } _toBinary(buffer: UhkBuffer) { - buffer.writeUInt8(MacroActionId.HoldModifiersAction); + buffer.writeUInt8(MacroActionId.HoldModifiersMacroAction); buffer.writeUInt8(this.modifierMask); } toString(): string { - return ``; + return ``; } } diff --git a/config-serializer/config-items/HoldMouseButtonsMacroAction.ts b/config-serializer/config-items/HoldMouseButtonsMacroAction.ts index 2dd4b247..129d129f 100644 --- a/config-serializer/config-items/HoldMouseButtonsMacroAction.ts +++ b/config-serializer/config-items/HoldMouseButtonsMacroAction.ts @@ -1,15 +1,15 @@ -class HoldMouseButtonsAction extends MacroAction { +class HoldMouseButtonsMacroAction extends MacroAction { // @assertUInt8 mouseButtonsMask: number; - _fromJsObject(jsObject: any): HoldMouseButtonsAction { + _fromJsObject(jsObject: any): HoldMouseButtonsMacroAction { this.assertMacroActionType(jsObject); this.mouseButtonsMask = jsObject.mouseButtonsMask; return this; } - _fromBinary(buffer: UhkBuffer): HoldMouseButtonsAction { + _fromBinary(buffer: UhkBuffer): HoldMouseButtonsMacroAction { this.readAndAssertMacroActionId(buffer); this.mouseButtonsMask = buffer.readUInt8(); return this; @@ -17,17 +17,17 @@ class HoldMouseButtonsAction extends MacroAction { _toJsObject(): any { return { - macroActionType: macroActionType.HoldMouseButtonsAction, + macroActionType: macroActionType.HoldMouseButtonsMacroAction, mouseButtonsMask: this.mouseButtonsMask }; } _toBinary(buffer: UhkBuffer) { - buffer.writeUInt8(MacroActionId.HoldMouseButtonsAction); + buffer.writeUInt8(MacroActionId.HoldMouseButtonsMacroAction); buffer.writeUInt8(this.mouseButtonsMask); } toString(): string { - return ``; + return ``; } } diff --git a/config-serializer/config-items/MacroAction.ts b/config-serializer/config-items/MacroAction.ts index 930dada1..138ab47f 100644 --- a/config-serializer/config-items/MacroAction.ts +++ b/config-serializer/config-items/MacroAction.ts @@ -1,33 +1,33 @@ enum MacroActionId { - PressKeyAction = 0, - HoldKeyAction = 1, - ReleaseKeyAction = 2, - PressModifiersAction = 3, - HoldModifiersAction = 4, - ReleaseModifiersAction = 5, - PressMouseButtonsAction = 6, - HoldMouseButtonsAction = 7, - ReleaseMouseButtonsAction = 8, - MoveMouseAction = 9, - ScrollMouseAction = 10, - DelayAction = 11, - TextAction = 12 + PressKeyMacroAction = 0, + HoldKeyMacroAction = 1, + ReleaseKeyMacroAction = 2, + PressModifiersMacroAction = 3, + HoldModifiersMacroAction = 4, + ReleaseModifiersMacroAction = 5, + PressMouseButtonsMacroAction = 6, + HoldMouseButtonsMacroAction = 7, + ReleaseMouseButtonsMacroAction = 8, + MoveMouseMacroAction = 9, + ScrollMouseMacroAction = 10, + DelayMacroAction = 11, + TextMacroAction = 12 } let macroActionType = { - PressKeyAction : 'pressKey', - HoldKeyAction : 'holdKey', - ReleaseKeyAction : 'releaseKey', - PressModifiersAction : 'pressModifiers', - HoldModifiersAction : 'holdModifiers', - ReleaseModifiersAction : 'releaseModifiers', - PressMouseButtonsAction : 'pressMouseButtons', - HoldMouseButtonsAction : 'holdMouseButtons', - ReleaseMouseButtonsAction : 'releaseMouseButtons', - MoveMouseAction : 'moveMouse', - ScrollMouseAction : 'scrollMouse', - DelayAction : 'delay', - TextAction : 'text' + PressKeyMacroAction : 'pressKey', + HoldKeyMacroAction : 'holdKey', + ReleaseKeyMacroAction : 'releaseKey', + PressModifiersMacroAction : 'pressModifiers', + HoldModifiersMacroAction : 'holdModifiers', + ReleaseModifiersMacroAction : 'releaseModifiers', + PressMouseButtonsMacroAction : 'pressMouseButtons', + HoldMouseButtonsMacroAction : 'holdMouseButtons', + ReleaseMouseButtonsMacroAction : 'releaseMouseButtons', + MoveMouseMacroAction : 'moveMouse', + ScrollMouseMacroAction : 'scrollMouse', + DelayMacroAction : 'delay', + TextMacroAction : 'text' }; abstract class MacroAction extends Serializable { diff --git a/config-serializer/config-items/MacroActions.ts b/config-serializer/config-items/MacroActions.ts index 5d9209f0..fc16280d 100644 --- a/config-serializer/config-items/MacroActions.ts +++ b/config-serializer/config-items/MacroActions.ts @@ -2,28 +2,28 @@ class MacroActions extends ClassArray { jsObjectToClass(jsObject: any): Serializable { switch (jsObject.macroActionType) { - case macroActionType.PressKeyAction: - return new PressKeyAction().fromJsObject(jsObject); - case macroActionType.HoldKeyAction: - return new HoldKeyAction().fromJsObject(jsObject); - case macroActionType.ReleaseKeyAction: - return new ReleaseKeyAction().fromJsObject(jsObject); - case macroActionType.PressModifiersAction: - return new PressModifiersAction().fromJsObject(jsObject); - case macroActionType.HoldModifiersAction: - return new HoldModifiersAction().fromJsObject(jsObject); - case macroActionType.ReleaseModifiersAction: - return new ReleaseModifiersAction().fromJsObject(jsObject); - case macroActionType.PressMouseButtonsAction: - return new PressMouseButtonsAction().fromJsObject(jsObject); - case macroActionType.HoldMouseButtonsAction: - return new HoldMouseButtonsAction().fromJsObject(jsObject); - case macroActionType.ReleaseMouseButtonsAction: - return new ReleaseMouseButtonsAction().fromJsObject(jsObject); - case macroActionType.MoveMouseAction: - return new MoveMouseAction().fromJsObject(jsObject); - case macroActionType.ScrollMouseAction: - return new ScrollMouseAction().fromJsObject(jsObject); + case macroActionType.PressKeyMacroAction: + return new PressKeyMacroAction().fromJsObject(jsObject); + case macroActionType.HoldKeyMacroAction: + return new HoldKeyMacroAction().fromJsObject(jsObject); + case macroActionType.ReleaseKeyMacroAction: + return new ReleaseKeyMacroAction().fromJsObject(jsObject); + case macroActionType.PressModifiersMacroAction: + return new PressModifiersMacroAction().fromJsObject(jsObject); + case macroActionType.HoldModifiersMacroAction: + return new HoldModifiersMacroAction().fromJsObject(jsObject); + case macroActionType.ReleaseModifiersMacroAction: + return new ReleaseModifiersMacroAction().fromJsObject(jsObject); + case macroActionType.PressMouseButtonsMacroAction: + return new PressMouseButtonsMacroAction().fromJsObject(jsObject); + case macroActionType.HoldMouseButtonsMacroAction: + return new HoldMouseButtonsMacroAction().fromJsObject(jsObject); + case macroActionType.ReleaseMouseButtonsMacroAction: + return new ReleaseMouseButtonsMacroAction().fromJsObject(jsObject); + case macroActionType.MoveMouseMacroAction: + return new MoveMouseMacroAction().fromJsObject(jsObject); + case macroActionType.ScrollMouseMacroAction: + return new ScrollMouseMacroAction().fromJsObject(jsObject); default: throw `Invalid MacroAction.macroActionType: "${jsObject.macroActionType}"`; } @@ -39,28 +39,28 @@ class MacroActions extends ClassArray { } switch (macroActionFirstByte) { - case MacroActionId.PressKeyAction: - return new PressKeyAction().fromBinary(buffer); - case MacroActionId.HoldKeyAction: - return new HoldKeyAction().fromBinary(buffer); - case MacroActionId.ReleaseKeyAction: - return new ReleaseKeyAction().fromBinary(buffer); - case MacroActionId.PressModifiersAction: - return new PressModifiersAction().fromBinary(buffer); - case MacroActionId.HoldModifiersAction: - return new HoldModifiersAction().fromBinary(buffer); - case MacroActionId.ReleaseModifiersAction: - return new ReleaseModifiersAction().fromBinary(buffer); - case MacroActionId.PressMouseButtonsAction: - return new PressMouseButtonsAction().fromBinary(buffer); - case MacroActionId.HoldMouseButtonsAction: - return new HoldMouseButtonsAction().fromBinary(buffer); - case MacroActionId.ReleaseMouseButtonsAction: - return new ReleaseMouseButtonsAction().fromBinary(buffer); - case MacroActionId.MoveMouseAction: - return new MoveMouseAction().fromBinary(buffer); - case MacroActionId.ScrollMouseAction: - return new ScrollMouseAction().fromBinary(buffer); + case MacroActionId.PressKeyMacroAction: + return new PressKeyMacroAction().fromBinary(buffer); + case MacroActionId.HoldKeyMacroAction: + return new HoldKeyMacroAction().fromBinary(buffer); + case MacroActionId.ReleaseKeyMacroAction: + return new ReleaseKeyMacroAction().fromBinary(buffer); + case MacroActionId.PressModifiersMacroAction: + return new PressModifiersMacroAction().fromBinary(buffer); + case MacroActionId.HoldModifiersMacroAction: + return new HoldModifiersMacroAction().fromBinary(buffer); + case MacroActionId.ReleaseModifiersMacroAction: + return new ReleaseModifiersMacroAction().fromBinary(buffer); + case MacroActionId.PressMouseButtonsMacroAction: + return new PressMouseButtonsMacroAction().fromBinary(buffer); + case MacroActionId.HoldMouseButtonsMacroAction: + return new HoldMouseButtonsMacroAction().fromBinary(buffer); + case MacroActionId.ReleaseMouseButtonsMacroAction: + return new ReleaseMouseButtonsMacroAction().fromBinary(buffer); + case MacroActionId.MoveMouseMacroAction: + return new MoveMouseMacroAction().fromBinary(buffer); + case MacroActionId.ScrollMouseMacroAction: + return new ScrollMouseMacroAction().fromBinary(buffer); default: throw `Invalid MacroAction first byte: ${macroActionFirstByte}`; } diff --git a/config-serializer/config-items/MoveMouseMacroAction.ts b/config-serializer/config-items/MoveMouseMacroAction.ts index 197e494f..22d229a7 100644 --- a/config-serializer/config-items/MoveMouseMacroAction.ts +++ b/config-serializer/config-items/MoveMouseMacroAction.ts @@ -1,4 +1,4 @@ -class MoveMouseAction extends MacroAction { +class MoveMouseMacroAction extends MacroAction { // @assertInt16 x: number; @@ -6,14 +6,14 @@ class MoveMouseAction extends MacroAction { // @assertInt16 y: number; - _fromJsObject(jsObject: any): MoveMouseAction { + _fromJsObject(jsObject: any): MoveMouseMacroAction { this.assertMacroActionType(jsObject); this.x = jsObject.x; this.y = jsObject.y; return this; } - _fromBinary(buffer: UhkBuffer): MoveMouseAction { + _fromBinary(buffer: UhkBuffer): MoveMouseMacroAction { this.readAndAssertMacroActionId(buffer); this.x = buffer.readInt16(); this.y = buffer.readInt16(); @@ -22,19 +22,19 @@ class MoveMouseAction extends MacroAction { _toJsObject(): any { return { - macroActionType: macroActionType.MoveMouseAction, + macroActionType: macroActionType.MoveMouseMacroAction, x: this.x, y: this.y }; } _toBinary(buffer: UhkBuffer) { - buffer.writeUInt8(MacroActionId.MoveMouseAction); + buffer.writeUInt8(MacroActionId.MoveMouseMacroAction); buffer.writeInt16(this.x); buffer.writeInt16(this.y); } toString(): string { - return ``; + return ``; } } diff --git a/config-serializer/config-items/PressKeyMacroAction.ts b/config-serializer/config-items/PressKeyMacroAction.ts index 456b4bbb..d73f7c2c 100644 --- a/config-serializer/config-items/PressKeyMacroAction.ts +++ b/config-serializer/config-items/PressKeyMacroAction.ts @@ -1,15 +1,15 @@ -class PressKeyAction extends MacroAction { +class PressKeyMacroAction extends MacroAction { // @assertUInt8 scancode: number; - _fromJsObject(jsObject: any): PressKeyAction { + _fromJsObject(jsObject: any): PressKeyMacroAction { this.assertMacroActionType(jsObject); this.scancode = jsObject.scancode; return this; } - _fromBinary(buffer: UhkBuffer): PressKeyAction { + _fromBinary(buffer: UhkBuffer): PressKeyMacroAction { this.readAndAssertMacroActionId(buffer); this.scancode = buffer.readUInt8(); return this; @@ -17,17 +17,17 @@ class PressKeyAction extends MacroAction { _toJsObject(): any { return { - macroActionType: macroActionType.PressKeyAction, + macroActionType: macroActionType.PressKeyMacroAction, scancode: this.scancode }; } _toBinary(buffer: UhkBuffer) { - buffer.writeUInt8(MacroActionId.PressKeyAction); + buffer.writeUInt8(MacroActionId.PressKeyMacroAction); buffer.writeUInt8(this.scancode); } toString(): string { - return ``; + return ``; } } diff --git a/config-serializer/config-items/PressModifiersMacroAction.ts b/config-serializer/config-items/PressModifiersMacroAction.ts index 59f7e4a2..cc42fe37 100644 --- a/config-serializer/config-items/PressModifiersMacroAction.ts +++ b/config-serializer/config-items/PressModifiersMacroAction.ts @@ -1,15 +1,15 @@ -class PressModifiersAction extends MacroAction { +class PressModifiersMacroAction extends MacroAction { // @assertUInt8 modifierMask: number; - _fromJsObject(jsObject: any): PressModifiersAction { + _fromJsObject(jsObject: any): PressModifiersMacroAction { this.assertMacroActionType(jsObject); this.modifierMask = jsObject.modifierMask; return this; } - _fromBinary(buffer: UhkBuffer): PressModifiersAction { + _fromBinary(buffer: UhkBuffer): PressModifiersMacroAction { this.readAndAssertMacroActionId(buffer); this.modifierMask = buffer.readUInt8(); return this; @@ -17,17 +17,17 @@ class PressModifiersAction extends MacroAction { _toJsObject(): any { return { - macroActionType: macroActionType.PressModifiersAction, + macroActionType: macroActionType.PressModifiersMacroAction, modifierMask: this.modifierMask }; } _toBinary(buffer: UhkBuffer) { - buffer.writeUInt8(MacroActionId.PressModifiersAction); + buffer.writeUInt8(MacroActionId.PressModifiersMacroAction); buffer.writeUInt8(this.modifierMask); } toString(): string { - return ``; + return ``; } } diff --git a/config-serializer/config-items/PressMouseButtonsMacroAction.ts b/config-serializer/config-items/PressMouseButtonsMacroAction.ts index 35853c07..aa2593bc 100644 --- a/config-serializer/config-items/PressMouseButtonsMacroAction.ts +++ b/config-serializer/config-items/PressMouseButtonsMacroAction.ts @@ -1,15 +1,15 @@ -class PressMouseButtonsAction extends MacroAction { +class PressMouseButtonsMacroAction extends MacroAction { // @assertUInt8 mouseButtonsMask: number; - _fromJsObject(jsObject: any): PressMouseButtonsAction { + _fromJsObject(jsObject: any): PressMouseButtonsMacroAction { this.assertMacroActionType(jsObject); this.mouseButtonsMask = jsObject.mouseButtonsMask; return this; } - _fromBinary(buffer: UhkBuffer): PressMouseButtonsAction { + _fromBinary(buffer: UhkBuffer): PressMouseButtonsMacroAction { this.readAndAssertMacroActionId(buffer); this.mouseButtonsMask = buffer.readUInt8(); return this; @@ -17,17 +17,17 @@ class PressMouseButtonsAction extends MacroAction { _toJsObject(): any { return { - macroActionType: macroActionType.PressMouseButtonsAction, + macroActionType: macroActionType.PressMouseButtonsMacroAction, mouseButtonsMask: this.mouseButtonsMask }; } _toBinary(buffer: UhkBuffer) { - buffer.writeUInt8(MacroActionId.PressMouseButtonsAction); + buffer.writeUInt8(MacroActionId.PressMouseButtonsMacroAction); buffer.writeUInt8(this.mouseButtonsMask); } toString(): string { - return ``; + return ``; } } diff --git a/config-serializer/config-items/ReleaseKeyMacroAction.ts b/config-serializer/config-items/ReleaseKeyMacroAction.ts index 1d20aaa3..7648ac3e 100644 --- a/config-serializer/config-items/ReleaseKeyMacroAction.ts +++ b/config-serializer/config-items/ReleaseKeyMacroAction.ts @@ -1,15 +1,15 @@ -class ReleaseKeyAction extends MacroAction { +class ReleaseKeyMacroAction extends MacroAction { // @assertUInt8 scancode: number; - _fromJsObject(jsObject: any): ReleaseKeyAction { + _fromJsObject(jsObject: any): ReleaseKeyMacroAction { this.assertMacroActionType(jsObject); this.scancode = jsObject.scancode; return this; } - _fromBinary(buffer: UhkBuffer): ReleaseKeyAction { + _fromBinary(buffer: UhkBuffer): ReleaseKeyMacroAction { this.readAndAssertMacroActionId(buffer); this.scancode = buffer.readUInt8(); return this; @@ -17,17 +17,17 @@ class ReleaseKeyAction extends MacroAction { _toJsObject(): any { return { - macroActionType: macroActionType.ReleaseKeyAction, + macroActionType: macroActionType.ReleaseKeyMacroAction, scancode: this.scancode }; } _toBinary(buffer: UhkBuffer) { - buffer.writeUInt8(MacroActionId.ReleaseKeyAction); + buffer.writeUInt8(MacroActionId.ReleaseKeyMacroAction); buffer.writeUInt8(this.scancode); } toString(): string { - return ``; + return ``; } } diff --git a/config-serializer/config-items/ReleaseModifiersMacroAction.ts b/config-serializer/config-items/ReleaseModifiersMacroAction.ts index cd0c6f13..5586fe5c 100644 --- a/config-serializer/config-items/ReleaseModifiersMacroAction.ts +++ b/config-serializer/config-items/ReleaseModifiersMacroAction.ts @@ -1,15 +1,15 @@ -class ReleaseModifiersAction extends MacroAction { +class ReleaseModifiersMacroAction extends MacroAction { // @assertUInt8 modifierMask: number; - _fromJsObject(jsObject: any): ReleaseModifiersAction { + _fromJsObject(jsObject: any): ReleaseModifiersMacroAction { this.assertMacroActionType(jsObject); this.modifierMask = jsObject.modifierMask; return this; } - _fromBinary(buffer: UhkBuffer): ReleaseModifiersAction { + _fromBinary(buffer: UhkBuffer): ReleaseModifiersMacroAction { this.readAndAssertMacroActionId(buffer); this.modifierMask = buffer.readUInt8(); return this; @@ -17,17 +17,17 @@ class ReleaseModifiersAction extends MacroAction { _toJsObject(): any { return { - macroActionType: macroActionType.ReleaseModifiersAction, + macroActionType: macroActionType.ReleaseModifiersMacroAction, modifierMask: this.modifierMask }; } _toBinary(buffer: UhkBuffer) { - buffer.writeUInt8(MacroActionId.ReleaseModifiersAction); + buffer.writeUInt8(MacroActionId.ReleaseModifiersMacroAction); buffer.writeUInt8(this.modifierMask); } toString(): string { - return ``; + return ``; } } diff --git a/config-serializer/config-items/ReleaseMouseButtonsMacroAction.ts b/config-serializer/config-items/ReleaseMouseButtonsMacroAction.ts index c77caf33..52a897b3 100644 --- a/config-serializer/config-items/ReleaseMouseButtonsMacroAction.ts +++ b/config-serializer/config-items/ReleaseMouseButtonsMacroAction.ts @@ -1,15 +1,15 @@ -class ReleaseMouseButtonsAction extends MacroAction { +class ReleaseMouseButtonsMacroAction extends MacroAction { // @assertUInt8 mouseButtonsMask: number; - _fromJsObject(jsObject: any): ReleaseMouseButtonsAction { + _fromJsObject(jsObject: any): ReleaseMouseButtonsMacroAction { this.assertMacroActionType(jsObject); this.mouseButtonsMask = jsObject.mouseButtonsMask; return this; } - _fromBinary(buffer: UhkBuffer): ReleaseMouseButtonsAction { + _fromBinary(buffer: UhkBuffer): ReleaseMouseButtonsMacroAction { this.readAndAssertMacroActionId(buffer); this.mouseButtonsMask = buffer.readUInt8(); return this; @@ -17,17 +17,17 @@ class ReleaseMouseButtonsAction extends MacroAction { _toJsObject(): any { return { - macroActionType: macroActionType.ReleaseMouseButtonsAction, + macroActionType: macroActionType.ReleaseMouseButtonsMacroAction, mouseButtonsMask: this.mouseButtonsMask }; } _toBinary(buffer: UhkBuffer) { - buffer.writeUInt8(MacroActionId.ReleaseMouseButtonsAction); + buffer.writeUInt8(MacroActionId.ReleaseMouseButtonsMacroAction); buffer.writeUInt8(this.mouseButtonsMask); } toString(): string { - return ``; + return ``; } } diff --git a/config-serializer/config-items/ScrollMouseMacroAction.ts b/config-serializer/config-items/ScrollMouseMacroAction.ts index d2e78d9a..30e754b2 100644 --- a/config-serializer/config-items/ScrollMouseMacroAction.ts +++ b/config-serializer/config-items/ScrollMouseMacroAction.ts @@ -1,4 +1,4 @@ -class ScrollMouseAction extends MacroAction { +class ScrollMouseMacroAction extends MacroAction { // @assertInt16 x: number; @@ -6,14 +6,14 @@ class ScrollMouseAction extends MacroAction { // @assertInt16 y: number; - _fromJsObject(jsObject: any): ScrollMouseAction { + _fromJsObject(jsObject: any): ScrollMouseMacroAction { this.assertMacroActionType(jsObject); this.x = jsObject.x; this.y = jsObject.y; return this; } - _fromBinary(buffer: UhkBuffer): ScrollMouseAction { + _fromBinary(buffer: UhkBuffer): ScrollMouseMacroAction { this.readAndAssertMacroActionId(buffer); this.x = buffer.readInt16(); this.y = buffer.readInt16(); @@ -22,19 +22,19 @@ class ScrollMouseAction extends MacroAction { _toJsObject(): any { return { - macroActionType: macroActionType.ScrollMouseAction, + macroActionType: macroActionType.ScrollMouseMacroAction, x: this.x, y: this.y }; } _toBinary(buffer: UhkBuffer) { - buffer.writeUInt8(MacroActionId.ScrollMouseAction); + buffer.writeUInt8(MacroActionId.ScrollMouseMacroAction); buffer.writeInt16(this.x); buffer.writeInt16(this.y); } toString(): string { - return ``; + return ``; } } diff --git a/config-serializer/config-items/config-items.ts b/config-serializer/config-items/config-items.ts index 9aa3a9e9..d4cc9dc3 100644 --- a/config-serializer/config-items/config-items.ts +++ b/config-serializer/config-items/config-items.ts @@ -17,14 +17,14 @@ /// /// /// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// diff --git a/config-serializer/uhk-config.json b/config-serializer/uhk-config.json index 778e9354..b6d792fc 100644 --- a/config-serializer/uhk-config.json +++ b/config-serializer/uhk-config.json @@ -244,14 +244,6 @@ "macroActionType": "scrollMouse", "x": 0, "y": 20000 - }, - { - "macroActionType": "delay", - "delay": 40000 - }, - { - "macroActionType": "text", - "text": "this is a text" } ] } From 176f94e91997e28aa896b97e7908dd9415fe24fe Mon Sep 17 00:00:00 2001 From: Sam Rang Date: Sun, 17 Apr 2016 23:34:21 -0500 Subject: [PATCH 6/7] delay and text macros --- .../config-items/DelayMacroAction.ts | 33 +++++++++++++++++++ .../config-items/MacroActions.ts | 8 +++++ .../config-items/TextMacroAction.ts | 32 ++++++++++++++++++ .../config-items/config-items.ts | 2 ++ config-serializer/uhk-config.json | 8 +++++ 5 files changed, 83 insertions(+) create mode 100644 config-serializer/config-items/DelayMacroAction.ts create mode 100644 config-serializer/config-items/TextMacroAction.ts diff --git a/config-serializer/config-items/DelayMacroAction.ts b/config-serializer/config-items/DelayMacroAction.ts new file mode 100644 index 00000000..72a3253f --- /dev/null +++ b/config-serializer/config-items/DelayMacroAction.ts @@ -0,0 +1,33 @@ +class DelayMacroAction extends MacroAction { + + // @assertUInt16 + delay: number; + + _fromJsObject(jsObject: any): DelayMacroAction { + this.assertMacroActionType(jsObject); + this.delay = jsObject.delay; + return this; + } + + _fromBinary(buffer: UhkBuffer): DelayMacroAction { + this.readAndAssertMacroActionId(buffer); + this.delay = buffer.readUInt16(); + return this; + } + + _toJsObject(): any { + return { + macroActionType: macroActionType.DelayMacroAction, + delay: this.delay + }; + } + + _toBinary(buffer: UhkBuffer) { + buffer.writeUInt8(MacroActionId.DelayMacroAction); + buffer.writeUInt16(this.delay); + } + + toString(): string { + return ``; + } +} diff --git a/config-serializer/config-items/MacroActions.ts b/config-serializer/config-items/MacroActions.ts index fc16280d..2d71853c 100644 --- a/config-serializer/config-items/MacroActions.ts +++ b/config-serializer/config-items/MacroActions.ts @@ -24,6 +24,10 @@ class MacroActions extends ClassArray { return new MoveMouseMacroAction().fromJsObject(jsObject); case macroActionType.ScrollMouseMacroAction: return new ScrollMouseMacroAction().fromJsObject(jsObject); + case macroActionType.DelayMacroAction: + return new DelayMacroAction().fromJsObject(jsObject); + case macroActionType.TextMacroAction: + return new TextMacroAction().fromJsObject(jsObject); default: throw `Invalid MacroAction.macroActionType: "${jsObject.macroActionType}"`; } @@ -61,6 +65,10 @@ class MacroActions extends ClassArray { return new MoveMouseMacroAction().fromBinary(buffer); case MacroActionId.ScrollMouseMacroAction: return new ScrollMouseMacroAction().fromBinary(buffer); + case MacroActionId.DelayMacroAction: + return new DelayMacroAction().fromBinary(buffer); + case MacroActionId.TextMacroAction: + return new TextMacroAction().fromBinary(buffer); default: throw `Invalid MacroAction first byte: ${macroActionFirstByte}`; } diff --git a/config-serializer/config-items/TextMacroAction.ts b/config-serializer/config-items/TextMacroAction.ts new file mode 100644 index 00000000..2e48168b --- /dev/null +++ b/config-serializer/config-items/TextMacroAction.ts @@ -0,0 +1,32 @@ +class TextMacroAction extends MacroAction { + + text: string; + + _fromJsObject(jsObject: any): TextMacroAction { + this.assertMacroActionType(jsObject); + this.text = jsObject.text; + return this; + } + + _fromBinary(buffer: UhkBuffer): TextMacroAction { + this.readAndAssertMacroActionId(buffer); + this.text = buffer.readString(); + return this; + } + + _toJsObject(): any { + return { + macroActionType: macroActionType.TextMacroAction, + text: this.text + }; + } + + _toBinary(buffer: UhkBuffer) { + buffer.writeUInt8(MacroActionId.TextMacroAction); + buffer.writeString(this.text); + } + + toString(): string { + return ``; + } +} diff --git a/config-serializer/config-items/config-items.ts b/config-serializer/config-items/config-items.ts index d4cc9dc3..a84a4312 100644 --- a/config-serializer/config-items/config-items.ts +++ b/config-serializer/config-items/config-items.ts @@ -28,3 +28,5 @@ /// /// /// +/// +/// diff --git a/config-serializer/uhk-config.json b/config-serializer/uhk-config.json index b6d792fc..778e9354 100644 --- a/config-serializer/uhk-config.json +++ b/config-serializer/uhk-config.json @@ -244,6 +244,14 @@ "macroActionType": "scrollMouse", "x": 0, "y": 20000 + }, + { + "macroActionType": "delay", + "delay": 40000 + }, + { + "macroActionType": "text", + "text": "this is a text" } ] } From e2b049273692e619af9982926a9c9ed1d7b969f7 Mon Sep 17 00:00:00 2001 From: Sam Rang Date: Sun, 17 Apr 2016 23:48:17 -0500 Subject: [PATCH 7/7] macro macros --- config-serializer/config-items/Macro.ts | 65 +++++++++++++++++++ config-serializer/config-items/Macros.ts | 11 ++++ .../config-items/config-items.ts | 2 + config-serializer/test-serializer.ts | 6 +- config-serializer/uhk-config.json | 29 +++++++++ 5 files changed, 110 insertions(+), 3 deletions(-) create mode 100644 config-serializer/config-items/Macro.ts create mode 100644 config-serializer/config-items/Macros.ts diff --git a/config-serializer/config-items/Macro.ts b/config-serializer/config-items/Macro.ts new file mode 100644 index 00000000..11a08a32 --- /dev/null +++ b/config-serializer/config-items/Macro.ts @@ -0,0 +1,65 @@ +class Macro extends Serializable { + + static loopedFlag = 0x80; + static privateFlag = 0x08; + + // @assertUInt8 + id: number; + + isLooped: boolean; + + isPrivate: boolean; + + name: string; + + macroActions: Serializable; + + _fromJsObject(jsObject: any): Macro { + this.id = jsObject.id; + this.isLooped = jsObject.isLooped; + this.isPrivate = jsObject.isPrivate; + this.name = jsObject.name; + this.macroActions = new MacroActions().fromJsObject(jsObject.macroActions); + return this; + } + + _fromBinary(buffer: UhkBuffer): Macro { + this.id = buffer.readUInt8(); + let bools = buffer.readUInt8(); + /* saves almost a byte but limits number of keymaps... */ + this.isLooped = (bools & Macro.loopedFlag) !== 0; + this.isPrivate = (bools & Macro.privateFlag) !== 0; + this.name = buffer.readString(); + this.macroActions = new MacroActions().fromBinary(buffer); + return this; + } + + _toJsObject(): any { + return { + id: this.id, + isLooped: this.isLooped, + isPrivate: this.isPrivate, + name: this.name, + macroActions: this.macroActions.toJsObject() + }; + } + + _toBinary(buffer: UhkBuffer): void { + buffer.writeUInt8(this.id); + buffer.writeUInt8(this.getLoopedFlag() | this.getPrivateFlag()); + buffer.writeString(this.name); + this.macroActions.toBinary(buffer); + } + + toString(): string { + return ``; + } + + private getLoopedFlag() { + return this.isLooped ? Macro.loopedFlag : 0; + } + + private getPrivateFlag() { + return this.isPrivate ? Macro.privateFlag : 0; + } +} diff --git a/config-serializer/config-items/Macros.ts b/config-serializer/config-items/Macros.ts new file mode 100644 index 00000000..49fd6d4b --- /dev/null +++ b/config-serializer/config-items/Macros.ts @@ -0,0 +1,11 @@ +class Macros extends ClassArray { + + jsObjectToClass(jsObject: any): Serializable { + return new Macro().fromJsObject(jsObject); + } + + binaryToClass(buffer: UhkBuffer): Serializable { + return new Macro().fromBinary(buffer); + } + +} diff --git a/config-serializer/config-items/config-items.ts b/config-serializer/config-items/config-items.ts index a84a4312..597ddb7e 100644 --- a/config-serializer/config-items/config-items.ts +++ b/config-serializer/config-items/config-items.ts @@ -15,6 +15,8 @@ /// /// /// +/// +/// /// /// /// diff --git a/config-serializer/test-serializer.ts b/config-serializer/test-serializer.ts index cc4c97ab..8cae059c 100644 --- a/config-serializer/test-serializer.ts +++ b/config-serializer/test-serializer.ts @@ -10,8 +10,8 @@ let fs = require('fs'); let uhkConfig = JSON.parse(fs.readFileSync('uhk-config.json')); -let config1Js = uhkConfig.macros[0].macroActions; -let config1Ts: Serializable = new MacroActions().fromJsObject(config1Js); +let config1Js = uhkConfig.macros; +let config1Ts: Serializable = new Macros().fromJsObject(config1Js); let config1Buffer = new UhkBuffer(); config1Ts.toBinary(config1Buffer); let config1BufferContent = config1Buffer.getBufferContent(); @@ -19,7 +19,7 @@ fs.writeFileSync('uhk-config.bin', config1BufferContent); config1Buffer.offset = 0; console.log(); -let config2Ts = new MacroActions().fromBinary(config1Buffer); +let config2Ts = new Macros().fromBinary(config1Buffer); console.log('\n'); let config2Js = config2Ts.toJsObject(); let config2Buffer = new UhkBuffer(); diff --git a/config-serializer/uhk-config.json b/config-serializer/uhk-config.json index 778e9354..f780192b 100644 --- a/config-serializer/uhk-config.json +++ b/config-serializer/uhk-config.json @@ -254,6 +254,35 @@ "text": "this is a text" } ] + }, + { + "id": 1, + "isLooped": true, + "isPrivate": true, + "name": "Blah Blah blah", + "macroActions": [ + { + "macroActionType": "pressKey", + "scancode": 111 + }, + { + "macroActionType": "releaseMouseButtons", + "mouseButtonsMask": 104 + }, + { + "macroActionType": "scrollMouse", + "x": 0, + "y": -20000 + }, + { + "macroActionType": "delay", + "delay": 40000 + }, + { + "macroActionType": "text", + "text": "blahhhhhhh" + } + ] } ], "epilogue": 1234678