summaryrefslogtreecommitdiffstats
path: root/common/action.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/action.c')
-rw-r--r--common/action.c34
1 files changed, 29 insertions, 5 deletions
diff --git a/common/action.c b/common/action.c
index 3703b4e8c..844a35b3e 100644
--- a/common/action.c
+++ b/common/action.c
@@ -355,26 +355,50 @@ static void process_action(keyrecord_t *record)
case ACT_KEYMAP:
switch (action.layer.code) {
- /* Keymap Reset */
+ /* Keymap clear */
case OP_RESET:
- default_layer_set(action.layer.val);
+ switch (action.layer.val & 0x03) {
+ case 0:
+ overlay_clear();
+ keymap_clear();
+ break;
+ case ON_PRESS:
+ if (event.pressed) {
+ overlay_clear();
+ keymap_clear();
+ }
+ break;
+ case ON_RELEASE:
+ if (!event.pressed) {
+ overlay_clear();
+ keymap_clear();
+ }
+ break;
+ case ON_BOTH:
+ overlay_clear();
+ keymap_clear();
+ break;
+ }
break;
/* Keymap Reset default layer */
case (OP_RESET | ON_PRESS):
if (event.pressed) {
- default_layer_set(action.layer.val);
overlay_clear();
+ keymap_clear();
+ default_layer_set(action.layer.val);
}
break;
case (OP_RESET | ON_RELEASE):
if (!event.pressed) {
- default_layer_set(action.layer.val);
overlay_clear();
+ keymap_clear();
+ default_layer_set(action.layer.val);
}
break;
case (OP_RESET | ON_BOTH):
- default_layer_set(action.layer.val);
overlay_clear();
+ keymap_clear();
+ default_layer_set(action.layer.val);
break;
/* Keymap Bit invert */