From c3d57b69e02fce40455c96f4a9ac6b68b89ce027 Mon Sep 17 00:00:00 2001 From: tmk Date: Wed, 20 Feb 2013 15:52:32 +0900 Subject: Add keymap clear/reset action --- common/action.c | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) (limited to 'common/action.c') 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 */ -- cgit v1.2.3