diff --git a/src/config.c b/src/config.c index 9fcbca1..bcfe505 100644 --- a/src/config.c +++ b/src/config.c @@ -49,6 +49,7 @@ static struct { { "oneshot", NULL, OP_ONESHOT, { ARG_LAYER } }, { "toggle", NULL, OP_TOGGLE, { ARG_LAYER } }, + { "clearm", NULL, OP_CLEARM, { ARG_MACRO } }, { "swapm", NULL, OP_SWAPM, { ARG_LAYER, ARG_MACRO } }, { "togglem", NULL, OP_TOGGLEM, { ARG_LAYER, ARG_MACRO } }, { "layerm", NULL, OP_LAYERM, { ARG_LAYER, ARG_MACRO } }, diff --git a/src/config.h b/src/config.h index 97c192c..7e0ac75 100644 --- a/src/config.h +++ b/src/config.h @@ -32,6 +32,7 @@ enum op { OP_LAYER, OP_LAYOUT, OP_CLEAR, + OP_CLEARM, OP_OVERLOAD, OP_OVERLOAD_TIMEOUT, OP_OVERLOAD_TIMEOUT_TAP, diff --git a/src/keyboard.c b/src/keyboard.c index 10ee893..43ccbb5 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -434,6 +434,13 @@ static long process_descriptor(struct keyboard *kbd, uint8_t code, update_mods(kbd, -1, 0); } + break; + case OP_CLEARM: + if(pressed) { + clear(kbd); + macro = &kbd->config.macros[d->args[0].idx]; + execute_macro(kbd, dl, macro); + } break; case OP_CLEAR: if(pressed)