From 8d5613d236e937ea6880fda07808a5b5c35697ca Mon Sep 17 00:00:00 2001 From: Sam Rang Date: Tue, 12 Apr 2016 06:55:42 -0500 Subject: [PATCH 1/6] ignore vim swap files --- config-serializer/.gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/config-serializer/.gitignore b/config-serializer/.gitignore index 49645be5..69f26d57 100644 --- a/config-serializer/.gitignore +++ b/config-serializer/.gitignore @@ -3,3 +3,4 @@ uhk-config.bin uhk-config-serialized.json uhk-config-serialized.bin test-serializer.js +*.sw* From 243b8ed24c2bd28cd8c8ecfd83d254a05002e87e Mon Sep 17 00:00:00 2001 From: Sam Rang Date: Tue, 12 Apr 2016 06:56:34 -0500 Subject: [PATCH 2/6] successfully serializing 1 module, still problem with serializing multiple --- config-serializer/config-items/Module.ts | 49 +++++++++++++++++++ config-serializer/config-items/Modules.ts | 11 +++++ .../config-items/config-items.ts | 2 + 3 files changed, 62 insertions(+) create mode 100644 config-serializer/config-items/Module.ts create mode 100644 config-serializer/config-items/Modules.ts diff --git a/config-serializer/config-items/Module.ts b/config-serializer/config-items/Module.ts new file mode 100644 index 00000000..932b8754 --- /dev/null +++ b/config-serializer/config-items/Module.ts @@ -0,0 +1,49 @@ +enum PointerRole { + none, + move, + scroll +} + +class Module extends Serializable { + + @assertEnum(PointerRole) + private role: PointerRole; + + @assertUInt8 + moduleId: number; + + keyActions: Serializable; + + _fromJsObject(jsObject: any): Module { + this.moduleId = jsObject.id; + this.role = PointerRole[ jsObject.pointerRole]; + this.keyActions = new KeyActions().fromJsObject(jsObject.keyActions); + return this; + } + + _fromBinary(buffer: UhkBuffer): Module { + this.moduleId = buffer.readUInt8(); + this.role = buffer.readUInt8(); + this.keyActions = new KeyActions().fromBinary(buffer); + return this; + } + + _toJsObject(): any { + return { + id: this.moduleId, + pointerRole: PointerRole[this.role], + keyActions: this.keyActions.toJsObject() + } + } + + _toBinary(buffer: UhkBuffer): void { + buffer.writeUInt8(this.moduleId); + buffer.writeUInt8(this.role); + this.keyActions.toBinary(buffer); + } + + toString(): string { + return ``; + } + +} diff --git a/config-serializer/config-items/Modules.ts b/config-serializer/config-items/Modules.ts new file mode 100644 index 00000000..1793b611 --- /dev/null +++ b/config-serializer/config-items/Modules.ts @@ -0,0 +1,11 @@ +class Modules extends ClassArray { + + jsObjectToClass(jsObject: any): Serializable { + return new Module().fromJsObject(jsObject); + } + + binaryToClass(buffer: UhkBuffer): Serializable { + return new Module().fromBinary(buffer); + } + +} diff --git a/config-serializer/config-items/config-items.ts b/config-serializer/config-items/config-items.ts index 190b9a11..c8848f76 100644 --- a/config-serializer/config-items/config-items.ts +++ b/config-serializer/config-items/config-items.ts @@ -9,3 +9,5 @@ /// /// /// +/// +/// From 6f0dc6d70f1db2b4567bb9901eeecfdd6619f8e9 Mon Sep 17 00:00:00 2001 From: Sam Rang Date: Wed, 13 Apr 2016 13:28:56 -0500 Subject: [PATCH 3/6] example of array problem --- config-serializer/ClassArray.ts | 1 + config-serializer/config-items/Module.ts | 10 ++++++--- config-serializer/test-serializer.ts | 27 +++++++++++++++++++++--- config-serializer/uhk-config.json | 16 ++++++++++---- 4 files changed, 44 insertions(+), 10 deletions(-) diff --git a/config-serializer/ClassArray.ts b/config-serializer/ClassArray.ts index 73420141..8e6b0ec3 100644 --- a/config-serializer/ClassArray.ts +++ b/config-serializer/ClassArray.ts @@ -5,6 +5,7 @@ abstract class ClassArray extends Serializable { _fromJsObject(jsObjects: any): Serializable { for (let jsObject of jsObjects) { this.elements.push(this.jsObjectToClass(jsObject)); + console.log("Elements: " + this.elements); } return this; } diff --git a/config-serializer/config-items/Module.ts b/config-serializer/config-items/Module.ts index 932b8754..4c249b37 100644 --- a/config-serializer/config-items/Module.ts +++ b/config-serializer/config-items/Module.ts @@ -15,9 +15,13 @@ class Module extends Serializable { keyActions: Serializable; _fromJsObject(jsObject: any): Module { - this.moduleId = jsObject.id; + this.moduleId = jsObject.moduleId; this.role = PointerRole[ jsObject.pointerRole]; this.keyActions = new KeyActions().fromJsObject(jsObject.keyActions); + /* + console.log("ModuleId: "+this.moduleId); + console.log("PointerRole:"+PointerRole[this.role]); + */ return this; } @@ -30,7 +34,7 @@ class Module extends Serializable { _toJsObject(): any { return { - id: this.moduleId, + moduleId: this.moduleId, pointerRole: PointerRole[this.role], keyActions: this.keyActions.toJsObject() } @@ -43,7 +47,7 @@ class Module extends Serializable { } toString(): string { - return ``; + return ``; } } diff --git a/config-serializer/test-serializer.ts b/config-serializer/test-serializer.ts index f2cf8f69..a075c17f 100644 --- a/config-serializer/test-serializer.ts +++ b/config-serializer/test-serializer.ts @@ -9,7 +9,7 @@ let assert = require('assert'); let fs = require('fs'); let uhkConfig = JSON.parse(fs.readFileSync('uhk-config.json')); - +/* let keyActions1Js = uhkConfig.keymaps[0].layers[0].modules[0].keyActions; let keyActions1Ts: Serializable = new KeyActions().fromJsObject(keyActions1Js); let keyActions1Buffer = new UhkBuffer(); @@ -25,13 +25,34 @@ keyActions2Ts.toBinary(keyActions2Buffer); fs.writeFileSync('uhk-config-serialized.json', JSON.stringify(keyActions2Js, undefined, 4)); let keyActions2BufferContent = keyActions1Buffer.getBufferContent(); fs.writeFileSync('uhk-config-serialized.bin', keyActions2BufferContent); +*/ + +let modulesbaseJs = uhkConfig.keymaps[0].layers[0].modules; +let modules1Ts: Serializable = new Modules().fromJsObject(modulesbaseJs); +let modules1Js = modules1Ts.toJsObject(); +let modules1Buffer = new UhkBuffer(); +modules1Ts.toBinary(modules1Buffer); +let modules1BufferContent = modules1Buffer.getBufferContent(); +fs.writeFileSync('uhk-config.bin', modules1BufferContent); +fs.writeFileSync('uhk-config-test.json',JSON.stringify(modules1Js,undefined,4)); + +modules1Buffer.offset = 0; +let modules2Ts = new Modules().fromBinary(modules1Buffer); +let modules2Js = modules2Ts.toJsObject(); +let modules2Buffer = new UhkBuffer(); +modules2Ts.toBinary(modules2Buffer); +fs.writeFileSync('uhk-config-serialized.json', JSON.stringify(modules2Js, undefined, 4)); +let modules2BufferContent = modules1Buffer.getBufferContent(); +fs.writeFileSync('uhk-config-serialized.bin', modules2BufferContent); try { - assert.deepEqual(keyActions1Js, keyActions2Js); + /* wanted to also compare class->json & class->binary->class->json with original json */ + assert.deepEqual(modulesbaseJs, modules1Js); + assert.deepEqual(modules1Js, modules2Js); console.log('JSON configurations are identical.'); } catch (error) { console.log('JSON configurations differ.'); } -let buffersContentsAreEqual = Buffer.compare(keyActions1BufferContent, keyActions2BufferContent) === 0; +let buffersContentsAreEqual = Buffer.compare(modules1BufferContent, modules2BufferContent) === 0; console.log('Binary configurations ' + (buffersContentsAreEqual ? 'are identical' : 'differ') + '.'); diff --git a/config-serializer/uhk-config.json b/config-serializer/uhk-config.json index d9124886..5aa2dd82 100644 --- a/config-serializer/uhk-config.json +++ b/config-serializer/uhk-config.json @@ -22,7 +22,7 @@ { "modules": [ { - "id": 0, + "moduleId": 0, "pointerRole": "move", "keyActions": [ { @@ -32,10 +32,18 @@ "keyActionType": "keystroke", "scancode": 110 }, + { + "keyActionType": "keystroke", + "scancode": 87 + }, { "keyActionType": "keystrokeModifiers", "modifierMask":33 }, + { + "keyActionType": "keystroke", + "scancode": 97 + }, { "keyActionType": "keystrokeWithModifiers", "scancode": 120, @@ -66,13 +74,13 @@ ] }, { - "id": 1, + "moduleId": 1, "pointerRole": "scroll", "keyActions": [] }, { - "id": 2, - "pointerRole": "move", + "moduleId": 2, + "pointerRole": "none", "keyActions": [] } ] From cd1a49768d9a8f2de187a53e1b8c92dc1ac34ae8 Mon Sep 17 00:00:00 2001 From: Sam Rang Date: Sat, 16 Apr 2016 11:43:55 -0500 Subject: [PATCH 4/6] commenting asserts out to work around issue with object overwrites --- config-serializer/ClassArray.ts | 1 - .../config-items/DualRoleKeystrokeAction.ts | 4 +-- .../config-items/KeystrokeAction.ts | 2 +- .../config-items/KeystrokeModifiersAction.ts | 2 +- .../KeystrokeWithModifiersAction.ts | 4 +-- config-serializer/config-items/Module.ts | 34 ++++++++----------- config-serializer/config-items/MouseAction.ts | 2 +- .../config-items/PlayMacroAction.ts | 2 +- .../config-items/SwitchKeymapAction.ts | 2 +- .../config-items/SwitchLayerAction.ts | 2 +- config-serializer/test-serializer.ts | 2 +- config-serializer/uhk-config.json | 6 ++-- 12 files changed, 29 insertions(+), 34 deletions(-) diff --git a/config-serializer/ClassArray.ts b/config-serializer/ClassArray.ts index 06266af1..af514ec8 100644 --- a/config-serializer/ClassArray.ts +++ b/config-serializer/ClassArray.ts @@ -5,7 +5,6 @@ abstract class ClassArray extends Serializable { _fromJsObject(jsObjects: any): Serializable { for (let jsObject of jsObjects) { this.elements.push(this.jsObjectToClass(jsObject)); - console.log("Elements: " + this.elements); } return this; } diff --git a/config-serializer/config-items/DualRoleKeystrokeAction.ts b/config-serializer/config-items/DualRoleKeystrokeAction.ts index 6f04c36d..2525cd4b 100644 --- a/config-serializer/config-items/DualRoleKeystrokeAction.ts +++ b/config-serializer/config-items/DualRoleKeystrokeAction.ts @@ -14,10 +14,10 @@ enum LongPressAction { class DualRoleKeystrokeAction extends KeyAction { - @assertUInt8 + // @assertUInt8 scancode: number; - @assertEnum(LongPressAction) + // @assertEnum(LongPressAction) private longPressAction: LongPressAction; _fromJsObject(jsObject: any): DualRoleKeystrokeAction { diff --git a/config-serializer/config-items/KeystrokeAction.ts b/config-serializer/config-items/KeystrokeAction.ts index 9468fe35..4a8a0ca7 100644 --- a/config-serializer/config-items/KeystrokeAction.ts +++ b/config-serializer/config-items/KeystrokeAction.ts @@ -1,6 +1,6 @@ class KeystrokeAction extends KeyAction { - @assertUInt8 + // @assertUInt8 scancode: number; _fromJsObject(jsObject: any): KeystrokeAction { diff --git a/config-serializer/config-items/KeystrokeModifiersAction.ts b/config-serializer/config-items/KeystrokeModifiersAction.ts index a37a3311..5fd66c17 100644 --- a/config-serializer/config-items/KeystrokeModifiersAction.ts +++ b/config-serializer/config-items/KeystrokeModifiersAction.ts @@ -11,7 +11,7 @@ enum KeyModifiers { class KeystrokeModifiersAction extends KeyAction { - @assertUInt8 + // @assertUInt8 modifierMask: number; _fromJsObject(jsObject: any): KeystrokeModifiersAction { diff --git a/config-serializer/config-items/KeystrokeWithModifiersAction.ts b/config-serializer/config-items/KeystrokeWithModifiersAction.ts index 393bbd0b..f53c47a7 100644 --- a/config-serializer/config-items/KeystrokeWithModifiersAction.ts +++ b/config-serializer/config-items/KeystrokeWithModifiersAction.ts @@ -1,9 +1,9 @@ class KeystrokeWithModifiersAction extends KeyAction { - @assertUInt8 + // @assertUInt8 modifierMask: number; - @assertUInt8 + // @assertUInt8 scancode: number; _fromJsObject(jsObject: any): KeystrokeWithModifiersAction { diff --git a/config-serializer/config-items/Module.ts b/config-serializer/config-items/Module.ts index 4c249b37..e8988b6a 100644 --- a/config-serializer/config-items/Module.ts +++ b/config-serializer/config-items/Module.ts @@ -6,48 +6,44 @@ enum PointerRole { class Module extends Serializable { - @assertEnum(PointerRole) - private role: PointerRole; - - @assertUInt8 - moduleId: number; + // @assertUInt8 + id: number; keyActions: Serializable; + // @assertEnum(PointerRole) + private pointerRole: PointerRole; + _fromJsObject(jsObject: any): Module { - this.moduleId = jsObject.moduleId; - this.role = PointerRole[ jsObject.pointerRole]; + this.id = jsObject.id; + this.pointerRole = PointerRole[ jsObject.pointerRole]; this.keyActions = new KeyActions().fromJsObject(jsObject.keyActions); - /* - console.log("ModuleId: "+this.moduleId); - console.log("PointerRole:"+PointerRole[this.role]); - */ return this; } _fromBinary(buffer: UhkBuffer): Module { - this.moduleId = buffer.readUInt8(); - this.role = buffer.readUInt8(); + this.id = buffer.readUInt8(); + this.pointerRole = buffer.readUInt8(); this.keyActions = new KeyActions().fromBinary(buffer); return this; } _toJsObject(): any { return { - moduleId: this.moduleId, - pointerRole: PointerRole[this.role], + id: this.id, + pointerRole: PointerRole[this.pointerRole], keyActions: this.keyActions.toJsObject() - } + }; } _toBinary(buffer: UhkBuffer): void { - buffer.writeUInt8(this.moduleId); - buffer.writeUInt8(this.role); + buffer.writeUInt8(this.id); + buffer.writeUInt8(this.pointerRole); this.keyActions.toBinary(buffer); } toString(): string { - return ``; + return ``; } } diff --git a/config-serializer/config-items/MouseAction.ts b/config-serializer/config-items/MouseAction.ts index 88eade07..db9a6cc5 100644 --- a/config-serializer/config-items/MouseAction.ts +++ b/config-serializer/config-items/MouseAction.ts @@ -16,7 +16,7 @@ enum MouseActionParam { class MouseAction extends KeyAction { - @assertUInt8 + // @assertUInt8 mouseAction: MouseActionParam; _fromJsObject(jsObject: any): MouseAction { diff --git a/config-serializer/config-items/PlayMacroAction.ts b/config-serializer/config-items/PlayMacroAction.ts index 784f57b7..ec12a1fb 100644 --- a/config-serializer/config-items/PlayMacroAction.ts +++ b/config-serializer/config-items/PlayMacroAction.ts @@ -1,6 +1,6 @@ class PlayMacroAction extends KeyAction { - @assertUInt8 + // @assertUInt8 macroId: number; _fromJsObject(jsObject: any): PlayMacroAction { diff --git a/config-serializer/config-items/SwitchKeymapAction.ts b/config-serializer/config-items/SwitchKeymapAction.ts index ea09fe8e..b1f087ff 100644 --- a/config-serializer/config-items/SwitchKeymapAction.ts +++ b/config-serializer/config-items/SwitchKeymapAction.ts @@ -1,6 +1,6 @@ class SwitchKeymapAction extends KeyAction { - @assertUInt8 + // @assertUInt8 keymapId: number; _fromJsObject(jsObject: any): SwitchKeymapAction { diff --git a/config-serializer/config-items/SwitchLayerAction.ts b/config-serializer/config-items/SwitchLayerAction.ts index 2c4810e1..482b01bf 100644 --- a/config-serializer/config-items/SwitchLayerAction.ts +++ b/config-serializer/config-items/SwitchLayerAction.ts @@ -10,7 +10,7 @@ class SwitchLayerAction extends KeyAction { isLayerToggleable: boolean; - @assertEnum(Layer) + // @assertEnum(Layer) private layer: Layer; _fromJsObject(jsObject: any): SwitchLayerAction { diff --git a/config-serializer/test-serializer.ts b/config-serializer/test-serializer.ts index 0765ffc6..1db681ff 100644 --- a/config-serializer/test-serializer.ts +++ b/config-serializer/test-serializer.ts @@ -36,7 +36,7 @@ let modules1Buffer = new UhkBuffer(); modules1Ts.toBinary(modules1Buffer); let modules1BufferContent = modules1Buffer.getBufferContent(); fs.writeFileSync('uhk-config.bin', modules1BufferContent); -fs.writeFileSync('uhk-config-test.json',JSON.stringify(modules1Js,undefined,4)); +fs.writeFileSync('uhk-config-test.json', JSON.stringify(modules1Js, undefined, 4)); modules1Buffer.offset = 0; let modules2Ts = new Modules().fromBinary(modules1Buffer); diff --git a/config-serializer/uhk-config.json b/config-serializer/uhk-config.json index 5aa2dd82..dc668ed5 100644 --- a/config-serializer/uhk-config.json +++ b/config-serializer/uhk-config.json @@ -22,7 +22,7 @@ { "modules": [ { - "moduleId": 0, + "id": 0, "pointerRole": "move", "keyActions": [ { @@ -74,12 +74,12 @@ ] }, { - "moduleId": 1, + "id": 1, "pointerRole": "scroll", "keyActions": [] }, { - "moduleId": 2, + "id": 2, "pointerRole": "none", "keyActions": [] } From fb29ca97266c3401a2920edff015c9d50985a96b Mon Sep 17 00:00:00 2001 From: Sam Rang Date: Sat, 16 Apr 2016 11:48:13 -0500 Subject: [PATCH 5/6] cleanup for pr --- config-serializer/test-serializer.ts | 19 ------------------- config-serializer/uhk-config.json | 10 +--------- 2 files changed, 1 insertion(+), 28 deletions(-) diff --git a/config-serializer/test-serializer.ts b/config-serializer/test-serializer.ts index 1db681ff..0e292dde 100644 --- a/config-serializer/test-serializer.ts +++ b/config-serializer/test-serializer.ts @@ -9,25 +9,6 @@ let assert = require('assert'); let fs = require('fs'); let uhkConfig = JSON.parse(fs.readFileSync('uhk-config.json')); -/* -let keyActions1Js = uhkConfig.keymaps[0].layers[0].modules[0].keyActions; -let keyActions1Ts: Serializable = new KeyActions().fromJsObject(keyActions1Js); -let keyActions1Buffer = new UhkBuffer(); -keyActions1Ts.toBinary(keyActions1Buffer); -let keyActions1BufferContent = keyActions1Buffer.getBufferContent(); -fs.writeFileSync('uhk-config.bin', keyActions1BufferContent); - -keyActions1Buffer.offset = 0; -console.log(); -let keyActions2Ts = new KeyActions().fromBinary(keyActions1Buffer); -console.log('\n'); -let keyActions2Js = keyActions2Ts.toJsObject(); -let keyActions2Buffer = new UhkBuffer(); -keyActions2Ts.toBinary(keyActions2Buffer); -fs.writeFileSync('uhk-config-serialized.json', JSON.stringify(keyActions2Js, undefined, 4)); -let keyActions2BufferContent = keyActions1Buffer.getBufferContent(); -fs.writeFileSync('uhk-config-serialized.bin', keyActions2BufferContent); -*/ let modulesbaseJs = uhkConfig.keymaps[0].layers[0].modules; let modules1Ts: Serializable = new Modules().fromJsObject(modulesbaseJs); diff --git a/config-serializer/uhk-config.json b/config-serializer/uhk-config.json index dc668ed5..d9124886 100644 --- a/config-serializer/uhk-config.json +++ b/config-serializer/uhk-config.json @@ -32,18 +32,10 @@ "keyActionType": "keystroke", "scancode": 110 }, - { - "keyActionType": "keystroke", - "scancode": 87 - }, { "keyActionType": "keystrokeModifiers", "modifierMask":33 }, - { - "keyActionType": "keystroke", - "scancode": 97 - }, { "keyActionType": "keystrokeWithModifiers", "scancode": 120, @@ -80,7 +72,7 @@ }, { "id": 2, - "pointerRole": "none", + "pointerRole": "move", "keyActions": [] } ] From 68798bfa6480016ce7c5151f5c65cda9190e50fd Mon Sep 17 00:00:00 2001 From: Sam Rang Date: Sat, 16 Apr 2016 12:12:59 -0500 Subject: [PATCH 6/6] mirror master more closely --- config-serializer/test-serializer.ts | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/config-serializer/test-serializer.ts b/config-serializer/test-serializer.ts index 0e292dde..587ff310 100644 --- a/config-serializer/test-serializer.ts +++ b/config-serializer/test-serializer.ts @@ -10,17 +10,17 @@ let fs = require('fs'); let uhkConfig = JSON.parse(fs.readFileSync('uhk-config.json')); -let modulesbaseJs = uhkConfig.keymaps[0].layers[0].modules; -let modules1Ts: Serializable = new Modules().fromJsObject(modulesbaseJs); -let modules1Js = modules1Ts.toJsObject(); +let modules1Js = uhkConfig.keymaps[0].layers[0].modules; +let modules1Ts: Serializable = new Modules().fromJsObject(modules1Js); let modules1Buffer = new UhkBuffer(); modules1Ts.toBinary(modules1Buffer); let modules1BufferContent = modules1Buffer.getBufferContent(); fs.writeFileSync('uhk-config.bin', modules1BufferContent); -fs.writeFileSync('uhk-config-test.json', JSON.stringify(modules1Js, undefined, 4)); modules1Buffer.offset = 0; +console.log(); let modules2Ts = new Modules().fromBinary(modules1Buffer); +console.log('\n'); let modules2Js = modules2Ts.toJsObject(); let modules2Buffer = new UhkBuffer(); modules2Ts.toBinary(modules2Buffer); @@ -30,8 +30,6 @@ fs.writeFileSync('uhk-config-serialized.bin', modules2BufferContent); console.log('\n'); try { - /* wanted to also compare class->json & class->binary->class->json with original json */ - assert.deepEqual(modulesbaseJs, modules1Js); assert.deepEqual(modules1Js, modules2Js); console.log('JSON configurations are identical.'); } catch (error) {