Load only the default keymap into CurrentKeymap

This commit is contained in:
Eric Tang
2017-07-07 14:05:19 -07:00
parent 9b010ca221
commit 887208badd

View File

@@ -4,6 +4,8 @@
#define longCompactLengthPrefix 0xff
static bool isDryRun;
static uint8_t readUInt8(serialized_buffer_t *buffer) {
return buffer->buffer[buffer->offset++];
}
@@ -93,45 +95,46 @@ static parser_error_t parseMouseAction(key_action_t *keyAction, serialized_buffe
uint8_t mouseAction = readUInt8(buffer);
keyAction->type = KeyActionType_Mouse;
memset(&keyAction->mouse, 0, sizeof keyAction->mouse);
switch (mouseAction) {
case SerializedMouseAction_LeftClick:
keyAction->mouse.buttonActions |= MouseButton_Left;
keyAction->mouse.buttonActions = MouseButton_Left;
break;
case SerializedMouseAction_MiddleClick:
keyAction->mouse.buttonActions |= MouseButton_Middle;
keyAction->mouse.buttonActions = MouseButton_Middle;
break;
case SerializedMouseAction_RightClick:
keyAction->mouse.buttonActions |= MouseButton_Right;
keyAction->mouse.buttonActions = MouseButton_Right;
break;
case SerializedMouseAction_MoveUp:
keyAction->mouse.moveActions |= MouseMove_Up;
keyAction->mouse.moveActions = MouseMove_Up;
break;
case SerializedMouseAction_MoveDown:
keyAction->mouse.moveActions |= MouseMove_Down;
keyAction->mouse.moveActions = MouseMove_Down;
break;
case SerializedMouseAction_MoveLeft:
keyAction->mouse.moveActions |= MouseMove_Left;
keyAction->mouse.moveActions = MouseMove_Left;
break;
case SerializedMouseAction_MoveRight:
keyAction->mouse.moveActions |= MouseMove_Right;
keyAction->mouse.moveActions = MouseMove_Right;
break;
case SerializedMouseAction_ScrollUp:
keyAction->mouse.scrollActions |= MouseScroll_Up;
keyAction->mouse.scrollActions = MouseScroll_Up;
break;
case SerializedMouseAction_ScrollDown:
keyAction->mouse.scrollActions |= MouseScroll_Down;
keyAction->mouse.scrollActions = MouseScroll_Down;
break;
case SerializedMouseAction_ScrollLeft:
keyAction->mouse.scrollActions |= MouseScroll_Left;
keyAction->mouse.scrollActions = MouseScroll_Left;
break;
case SerializedMouseAction_ScrollRight:
keyAction->mouse.scrollActions |= MouseScroll_Right;
keyAction->mouse.scrollActions = MouseScroll_Right;
break;
case SerializedMouseAction_Accelerate:
keyAction->mouse.moveActions |= MouseMove_Accelerate;
keyAction->mouse.moveActions = MouseMove_Accelerate;
break;
case SerializedMouseAction_Decelerate:
keyAction->mouse.moveActions |= MouseMove_Decelerate;
keyAction->mouse.moveActions = MouseMove_Decelerate;
break;
default:
return ParserError_InvalidSerializedMouseAction;
@@ -162,13 +165,13 @@ static parser_error_t parseKeyAction(key_action_t *keyAction, serialized_buffer_
static parser_error_t parseKeyActions(uint8_t targetLayer, serialized_buffer_t *buffer, uint8_t moduleId, uint8_t pointerRole) {
parser_error_t errorCode;
uint8_t actionCount = readCompactLength(buffer);
key_action_t dummyKeyAction;
if (actionCount > MAX_KEY_COUNT_PER_MODULE) {
return ParserError_InvalidActionCount;
}
for (uint8_t actionIdx = 0; actionIdx < actionCount; actionIdx++) {
key_action_t *keyAction = &(CurrentKeymap[targetLayer][moduleId][actionIdx]);
errorCode = parseKeyAction(keyAction, buffer);
errorCode = parseKeyAction(isDryRun ? &dummyKeyAction : &CurrentKeymap[targetLayer][moduleId][actionIdx], buffer);
if (errorCode != ParserError_Success) {
return errorCode;
}
@@ -182,10 +185,6 @@ static parser_error_t parseModule(serialized_buffer_t *buffer, uint8_t layer) {
return parseKeyActions(layer, buffer, moduleId, pointerRole);
}
static void clearModule(uint8_t layer, uint8_t moduleId) {
memset(&CurrentKeymap[layer][moduleId], 0, MAX_KEY_COUNT_PER_MODULE * sizeof(key_action_t));
}
static parser_error_t parseLayer(serialized_buffer_t *buffer, uint8_t layer) {
parser_error_t errorCode;
uint8_t moduleCount = readCompactLength(buffer);
@@ -194,7 +193,6 @@ static parser_error_t parseLayer(serialized_buffer_t *buffer, uint8_t layer) {
return ParserError_InvalidModuleCount;
}
for (uint8_t moduleIdx = 0; moduleIdx < moduleCount; moduleIdx++) {
clearModule(layer, moduleIdx);
errorCode = parseModule(buffer, layer);
if (errorCode != ParserError_Success) {
return errorCode;
@@ -215,12 +213,12 @@ parser_error_t ParseKeymap(serialized_buffer_t *buffer) {;
uint8_t layerCount = readCompactLength(buffer);
(void)abbreviation;
(void)isDefault;
(void)name;
(void)description;
if (layerCount != LAYER_COUNT) {
return ParserError_InvalidLayerCount;
}
isDryRun = !isDefault;
for (uint8_t layerIdx = 0; layerIdx < layerCount; layerIdx++) {
errorCode = parseLayer(buffer, layerIdx);
if (errorCode != ParserError_Success) {