diff --git a/src/components/popover/tab/none/none-tab.component.ts b/src/components/popover/tab/none/none-tab.component.ts index 1b53af74..e73e8725 100644 --- a/src/components/popover/tab/none/none-tab.component.ts +++ b/src/components/popover/tab/none/none-tab.component.ts @@ -1,6 +1,5 @@ import { Component, OnInit } from '@angular/core'; -import { NoneAction } from '../../../../config-serializer/config-items/key-action'; import { Tab } from '../tab'; @Component({ @@ -21,8 +20,8 @@ export class NoneTabComponent implements OnInit, Tab { return false; } - toKeyAction(): NoneAction { - return new NoneAction(); + toKeyAction(): undefined { + return undefined; } } diff --git a/src/components/svg/wrap/svg-keyboard-wrap.component.ts b/src/components/svg/wrap/svg-keyboard-wrap.component.ts index 7ec54957..ad1ba37e 100644 --- a/src/components/svg/wrap/svg-keyboard-wrap.component.ts +++ b/src/components/svg/wrap/svg-keyboard-wrap.component.ts @@ -28,7 +28,6 @@ import { LayerName, MouseAction, MouseActionParam, - NoneAction, PlayMacroAction, SwitchKeymapAction, SwitchLayerAction @@ -165,7 +164,7 @@ export class SvgKeyboardWrapComponent implements OnChanges { showTooltip(keyAction: KeyAction, event: MouseEvent): void { - if (keyAction instanceof NoneAction || keyAction === undefined) { + if (keyAction === undefined) { return; } diff --git a/src/config-serializer/config-items/Module.ts b/src/config-serializer/config-items/Module.ts index 05b052cc..4a4aa838 100644 --- a/src/config-serializer/config-items/Module.ts +++ b/src/config-serializer/config-items/Module.ts @@ -1,7 +1,7 @@ import { assertEnum, assertUInt8 } from '../assert'; import { Serializable } from '../Serializable'; import { UhkBuffer } from '../UhkBuffer'; -import { Helper as KeyActionHelper, KeyAction } from './key-action'; +import { Helper as KeyActionHelper, KeyAction, NoneAction } from './key-action'; enum PointerRole { none, @@ -61,7 +61,17 @@ export class Module extends Serializable { _toBinary(buffer: UhkBuffer): void { buffer.writeUInt8(this.id); buffer.writeUInt8(this.pointerRole); - buffer.writeArray(this.keyActions); + + const noneAction = new NoneAction(); + + const keyActions: KeyAction[] = this.keyActions.map(keyAction => { + if (keyAction) { + return keyAction; + } + return noneAction; + }); + + buffer.writeArray(keyActions); } toString(): string { diff --git a/src/config-serializer/config-items/key-action/NoneAction.ts b/src/config-serializer/config-items/key-action/NoneAction.ts index 25b4fb21..12cb182f 100644 --- a/src/config-serializer/config-items/key-action/NoneAction.ts +++ b/src/config-serializer/config-items/key-action/NoneAction.ts @@ -1,6 +1,12 @@ import { UhkBuffer } from '../../UhkBuffer'; import { KeyAction, KeyActionId, keyActionType } from './KeyAction'; +/** + * NoneAction is only intended for binary serialization of undefined key actions + * DO NOT use it as a real KeyAction + * + */ + export class NoneAction extends KeyAction { _fromJsObject(jsObject: any): NoneAction { diff --git a/src/config-serializer/config-items/key-action/helper.ts b/src/config-serializer/config-items/key-action/helper.ts index aac29338..4ff386d0 100644 --- a/src/config-serializer/config-items/key-action/helper.ts +++ b/src/config-serializer/config-items/key-action/helper.ts @@ -4,7 +4,6 @@ import { KeyActionId, KeystrokeAction, MouseAction, - NoneAction, PlayMacroAction, SwitchKeymapAction, SwitchLayerAction, @@ -33,7 +32,8 @@ export class Helper { switch (keyActionFirstByte) { case KeyActionId.NoneAction: - return new NoneAction().fromBinary(buffer); + buffer.readUInt8(); // Read type just to skip it + return undefined; case KeyActionId.SwitchLayerAction: return new SwitchLayerAction().fromBinary(buffer); case KeyActionId.SwitchKeymapAction: @@ -59,8 +59,6 @@ export class Helper { newKeyAction = new MouseAction(keyAction); } else if (keyAction instanceof PlayMacroAction) { newKeyAction = new PlayMacroAction(keyAction); - } else { - newKeyAction = new NoneAction(); } return newKeyAction; } @@ -71,8 +69,6 @@ export class Helper { } switch (keyAction.keyActionType) { - case keyActionType.NoneAction: - return new NoneAction().fromJsObject(keyAction); case keyActionType.KeystrokeAction: return new KeystrokeAction().fromJsObject(keyAction); case keyActionType.SwitchLayerAction: diff --git a/src/config-serializer/config-schema.json b/src/config-serializer/config-schema.json index 2ae2bf04..506c83fc 100644 --- a/src/config-serializer/config-schema.json +++ b/src/config-serializer/config-schema.json @@ -34,12 +34,14 @@ "keyActions": { "type": "array", "items": { - "type": "object", + "type": [ + "null", + "object" + ], "properties": { "keyActionType": { "type": "string", "enum": [ - "none", "keystroke", "switchLayer", "switchKeymap", @@ -51,7 +53,7 @@ "required": [ "keyActionType" ], - "oneOf": [ + "anyOf": [ { "properties": { "keyActionType": { @@ -137,16 +139,6 @@ "type": "integer" } } - }, - { - "properties": { - "keyActionType": { - "type": "string", - "enum": [ - "none" - ] - } - } } ] } diff --git a/src/config-serializer/preset-keymaps.json b/src/config-serializer/preset-keymaps.json index 48c2a17f..899779cb 100644 --- a/src/config-serializer/preset-keymaps.json +++ b/src/config-serializer/preset-keymaps.json @@ -297,27 +297,13 @@ "id": 0, "pointerRole": "none", "keyActions": [ - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, + null, + null, + null, + null, + null, + null, + null, { "keyActionType": "keystroke", "scancode": 75 @@ -334,18 +320,10 @@ "keyActionType": "keystroke", "scancode": 77 }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, + null, + null, + null, + null, { "keyActionType": "keystroke", "scancode": 78 @@ -362,28 +340,16 @@ "keyActionType": "keystroke", "scancode": 79 }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, + null, + null, + null, + null, + null, { "keyActionType": "switchKeymap", "keymapAbbreviation": "VIM" }, - { - "keyActionType": "none" - }, + null, { "keyActionType": "keystroke", "scancode": 118 @@ -392,9 +358,7 @@ "keyActionType": "keystroke", "modifierMask": 32 }, - { - "keyActionType": "none" - }, + null, { "keyActionType": "switchLayer", "layer": "fn", @@ -423,84 +387,38 @@ "id": 1, "pointerRole": "none", "keyActions": [ - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, { "keyActionType": "switchLayer", "layer": "mouse", "toggle": false }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, + null, + null, + null, + null, + null, { "keyActionType": "keystroke", "modifierMask": 2 }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, + null, + null, + null, + null, + null, { "keyActionType": "keystroke", "modifierMask": 1 @@ -523,9 +441,7 @@ "layer": "mod", "toggle": false }, - { - "keyActionType": "none" - } + null ] } ] @@ -541,27 +457,13 @@ "layer": "fn", "toggle": true }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, + null, + null, + null, + null, + null, + null, + null, { "keyActionType": "keystroke", "scancode": 232 @@ -574,21 +476,11 @@ "keyActionType": "keystroke", "scancode": 233 }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, + null, + null, + null, + null, + null, { "keyActionType": "keystroke", "scancode": 234 @@ -601,38 +493,22 @@ "keyActionType": "keystroke", "scancode": 235 }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, + null, + null, + null, + null, + null, { "keyActionType": "keystroke", "scancode": 239 }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, + null, + null, { "keyActionType": "keystroke", "modifierMask": 32 }, - { - "keyActionType": "none" - }, + null, { "keyActionType": "switchLayer", "layer": "fn", @@ -661,21 +537,11 @@ "id": 1, "pointerRole": "scroll", "keyActions": [ - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, + null, + null, + null, + null, + null, { "keyActionType": "switchLayer", "layer": "mouse", @@ -686,63 +552,31 @@ "layer": "mod", "toggle": true }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, + null, + null, + null, + null, + null, + null, { "keyActionType": "switchLayer", "layer": "mouse", "toggle": true }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, + null, + null, + null, + null, + null, { "keyActionType": "keystroke", "modifierMask": 2 }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, + null, + null, + null, + null, + null, { "keyActionType": "keystroke", "modifierMask": 1 @@ -765,9 +599,7 @@ "layer": "mod", "toggle": true }, - { - "keyActionType": "none" - } + null ] } ] @@ -778,53 +610,27 @@ "id": 0, "pointerRole": "move", "keyActions": [ - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, + null, + null, + null, + null, + null, + null, + null, { "keyActionType": "mouse", "mouseAction": "scrollUp" }, - { - "keyActionType": "none" - }, + null, { "keyActionType": "mouse", "mouseAction": "moveUp" }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, + null, + null, + null, + null, + null, { "keyActionType": "mouse", "mouseAction": "scrollDown" @@ -841,39 +647,17 @@ "keyActionType": "mouse", "mouseAction": "moveRight" }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, { "keyActionType": "keystroke", "modifierMask": 64 @@ -886,62 +670,32 @@ "keyActionType": "keystroke", "modifierMask": 16 }, - { - "keyActionType": "none" - } + null ] }, { "id": 1, "pointerRole": "move", "keyActions": [ - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, { "keyActionType": "switchLayer", "layer": "mouse", "toggle": false }, - { - "keyActionType": "none" - }, + null, { "keyActionType": "mouse", "mouseAction": "rightClick" @@ -954,27 +708,13 @@ "keyActionType": "mouse", "mouseAction": "leftClick" }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, + null, + null, + null, + null, + null, + null, + null, { "keyActionType": "keystroke", "modifierMask": 1 @@ -987,9 +727,7 @@ "keyActionType": "keystroke", "modifierMask": 4 }, - { - "keyActionType": "none" - }, + null, { "keyActionType": "mouse", "mouseAction": "accelerate" diff --git a/src/config-serializer/uhk-config.json b/src/config-serializer/uhk-config.json index 91fcac90..e66b5a74 100644 --- a/src/config-serializer/uhk-config.json +++ b/src/config-serializer/uhk-config.json @@ -311,27 +311,13 @@ "id": 0, "pointerRole": "none", "keyActions": [ - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, + null, + null, + null, + null, + null, + null, + null, { "keyActionType": "keystroke", "scancode": 75 @@ -348,18 +334,10 @@ "keyActionType": "keystroke", "scancode": 77 }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, + null, + null, + null, + null, { "keyActionType": "keystroke", "scancode": 78 @@ -376,28 +354,16 @@ "keyActionType": "keystroke", "scancode": 79 }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, + null, + null, + null, + null, + null, { "keyActionType": "switchKeymap", "keymapAbbreviation": "VIM" }, - { - "keyActionType": "none" - }, + null, { "keyActionType": "keystroke", "scancode": 118 @@ -406,9 +372,7 @@ "keyActionType": "keystroke", "modifierMask": 32 }, - { - "keyActionType": "none" - }, + null, { "keyActionType": "switchLayer", "layer": "fn", @@ -437,84 +401,38 @@ "id": 1, "pointerRole": "none", "keyActions": [ - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, { "keyActionType": "switchLayer", "layer": "mouse", "toggle": false }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, + null, + null, + null, + null, + null, { "keyActionType": "keystroke", "modifierMask": 2 }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, + null, + null, + null, + null, + null, { "keyActionType": "keystroke", "modifierMask": 1 @@ -537,9 +455,7 @@ "layer": "mod", "toggle": false }, - { - "keyActionType": "none" - } + null ] } ] @@ -555,27 +471,13 @@ "layer": "fn", "toggle": true }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, + null, + null, + null, + null, + null, + null, + null, { "keyActionType": "keystroke", "scancode": 232 @@ -588,21 +490,11 @@ "keyActionType": "keystroke", "scancode": 233 }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, + null, + null, + null, + null, + null, { "keyActionType": "keystroke", "scancode": 234 @@ -615,38 +507,22 @@ "keyActionType": "keystroke", "scancode": 235 }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, + null, + null, + null, + null, + null, { "keyActionType": "keystroke", "scancode": 239 }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, + null, + null, { "keyActionType": "keystroke", "modifierMask": 32 }, - { - "keyActionType": "none" - }, + null, { "keyActionType": "switchLayer", "layer": "fn", @@ -675,21 +551,11 @@ "id": 1, "pointerRole": "scroll", "keyActions": [ - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, + null, + null, + null, + null, + null, { "keyActionType": "switchLayer", "layer": "mouse", @@ -700,63 +566,31 @@ "layer": "mod", "toggle": true }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, + null, + null, + null, + null, + null, + null, { "keyActionType": "switchLayer", "layer": "mouse", "toggle": true }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, + null, + null, + null, + null, + null, { "keyActionType": "keystroke", "modifierMask": 2 }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, + null, + null, + null, + null, + null, { "keyActionType": "keystroke", "modifierMask": 1 @@ -779,9 +613,7 @@ "layer": "mod", "toggle": true }, - { - "keyActionType": "none" - } + null ] } ] @@ -792,53 +624,27 @@ "id": 0, "pointerRole": "move", "keyActions": [ - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, + null, + null, + null, + null, + null, + null, + null, { "keyActionType": "mouse", "mouseAction": "scrollUp" }, - { - "keyActionType": "none" - }, + null, { "keyActionType": "mouse", "mouseAction": "moveUp" }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, + null, + null, + null, + null, + null, { "keyActionType": "mouse", "mouseAction": "scrollDown" @@ -855,39 +661,17 @@ "keyActionType": "mouse", "mouseAction": "moveRight" }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, { "keyActionType": "keystroke", "modifierMask": 64 @@ -900,62 +684,32 @@ "keyActionType": "keystroke", "modifierMask": 16 }, - { - "keyActionType": "none" - } + null ] }, { "id": 1, "pointerRole": "move", "keyActions": [ - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, { "keyActionType": "switchLayer", "layer": "mouse", "toggle": false }, - { - "keyActionType": "none" - }, + null, { "keyActionType": "mouse", "mouseAction": "rightClick" @@ -968,27 +722,13 @@ "keyActionType": "mouse", "mouseAction": "leftClick" }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, - { - "keyActionType": "none" - }, + null, + null, + null, + null, + null, + null, + null, { "keyActionType": "keystroke", "modifierMask": 1 @@ -1001,9 +741,7 @@ "keyActionType": "keystroke", "modifierMask": 4 }, - { - "keyActionType": "none" - }, + null, { "keyActionType": "mouse", "mouseAction": "accelerate"