Add keymap clear/reset action
This commit is contained in:
parent
e023ca517c
commit
4c8f2bbfa2
@ -355,26 +355,50 @@ static void process_action(keyrecord_t *record)
|
|||||||
|
|
||||||
case ACT_KEYMAP:
|
case ACT_KEYMAP:
|
||||||
switch (action.layer.code) {
|
switch (action.layer.code) {
|
||||||
/* Keymap Reset */
|
/* Keymap clear */
|
||||||
case OP_RESET:
|
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;
|
break;
|
||||||
/* Keymap Reset default layer */
|
/* Keymap Reset default layer */
|
||||||
case (OP_RESET | ON_PRESS):
|
case (OP_RESET | ON_PRESS):
|
||||||
if (event.pressed) {
|
if (event.pressed) {
|
||||||
default_layer_set(action.layer.val);
|
|
||||||
overlay_clear();
|
overlay_clear();
|
||||||
|
keymap_clear();
|
||||||
|
default_layer_set(action.layer.val);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case (OP_RESET | ON_RELEASE):
|
case (OP_RESET | ON_RELEASE):
|
||||||
if (!event.pressed) {
|
if (!event.pressed) {
|
||||||
default_layer_set(action.layer.val);
|
|
||||||
overlay_clear();
|
overlay_clear();
|
||||||
|
keymap_clear();
|
||||||
|
default_layer_set(action.layer.val);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case (OP_RESET | ON_BOTH):
|
case (OP_RESET | ON_BOTH):
|
||||||
default_layer_set(action.layer.val);
|
|
||||||
overlay_clear();
|
overlay_clear();
|
||||||
|
keymap_clear();
|
||||||
|
default_layer_set(action.layer.val);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* Keymap Bit invert */
|
/* Keymap Bit invert */
|
||||||
|
@ -157,8 +157,8 @@ bool waiting_buffer_has_anykey_pressed(void);
|
|||||||
* Layer Actions
|
* Layer Actions
|
||||||
* -------------
|
* -------------
|
||||||
* ACT_KEYMAP:
|
* ACT_KEYMAP:
|
||||||
* 1000|LLLL|0000 0000 Reset default layer
|
* 1000|--xx|0000 0000 Clear keyamp and overlay
|
||||||
* 1000|LLLL|0000 00xx Reset default layer and clear overlay
|
* 1000|LLLL|0000 00xx Reset default layer and clear keymap and overlay
|
||||||
* 1000|LLLL| keycode Invert with tap key
|
* 1000|LLLL| keycode Invert with tap key
|
||||||
* 1000|LLLL|1111 0000 Invert with tap toggle
|
* 1000|LLLL|1111 0000 Invert with tap toggle
|
||||||
* 1000|LLLL|1111 00xx Invert[^= L]
|
* 1000|LLLL|1111 00xx Invert[^= L]
|
||||||
@ -274,22 +274,25 @@ enum layer_params {
|
|||||||
OP_SET = 0xFC,
|
OP_SET = 0xFC,
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Default Layer
|
* Default Layer
|
||||||
*/
|
*/
|
||||||
#define ACTION_KEYMAP(layer) ACTION_KEYMAP_MOMENTARY(layer)
|
#define ACTION_DEFAULT_LAYER ACTION(ACT_KEYMAP, 0<<8 | OP_RESET | 0)
|
||||||
#define ACTION_KEYMAP_MOMENTARY(layer) ACTION_KEYMAP_INV_B(layer)
|
|
||||||
#define ACTION_KEYMAP_TOGGLE(layer) ACTION_KEYMAP_INV_R(layer)
|
|
||||||
/* Set default layer */
|
|
||||||
#define ACTION_SET_DEFAULT_LAYER(layer) ACTION_KEYMAP_RESET(layer)
|
#define ACTION_SET_DEFAULT_LAYER(layer) ACTION_KEYMAP_RESET(layer)
|
||||||
#define ACTION_SET_DEFAULT_LAYER_P(layer) ACTION_KEYMAP_RESET_P(layer)
|
#define ACTION_SET_DEFAULT_LAYER_P(layer) ACTION_KEYMAP_RESET_P(layer)
|
||||||
#define ACTION_SET_DEFAULT_LAYER_R(layer) ACTION_KEYMAP_RESET_R(layer)
|
#define ACTION_SET_DEFAULT_LAYER_R(layer) ACTION_KEYMAP_RESET_R(layer)
|
||||||
#define ACTION_SET_DEFAULT_LAYER_B(layer) ACTION_KEYMAP_RESET_B(layer)
|
#define ACTION_SET_DEFAULT_LAYER_B(layer) ACTION_KEYMAP_RESET_B(layer)
|
||||||
|
/*
|
||||||
|
* Keymap Layer
|
||||||
|
*/
|
||||||
|
#define ACTION_KEYMAP(layer) ACTION_KEYMAP_MOMENTARY(layer)
|
||||||
|
#define ACTION_KEYMAP_MOMENTARY(layer) ACTION_KEYMAP_ON_OFF(layer)
|
||||||
|
#define ACTION_KEYMAP_TOGGLE(layer) ACTION_KEYMAP_INV_R(layer)
|
||||||
/* Keymap Set and clear overaly */
|
/* Keymap Set and clear overaly */
|
||||||
#define ACTION_KEYMAP_RESET(layer) ACTION(ACT_KEYMAP, (layer)<<8 | OP_RESET | 0)
|
#define ACTION_KEYMAP_RESET(layer) ACTION_KEYMAP_RESET_R(layer)
|
||||||
#define ACTION_KEYMAP_RESET_P(layer) ACTION(ACT_KEYMAP, (layer)<<8 | OP_RESET | ON_PRESS)
|
#define ACTION_KEYMAP_RESET_P(layer) ACTION(ACT_KEYMAP, (layer)<<8 | OP_RESET | ON_PRESS)
|
||||||
#define ACTION_KEYMAP_RESET_R(layer) ACTION(ACT_KEYMAP, (layer)<<8 | OP_RESET | ON_PRESS)
|
#define ACTION_KEYMAP_RESET_R(layer) ACTION(ACT_KEYMAP, (layer)<<8 | OP_RESET | ON_RELEASE)
|
||||||
#define ACTION_KEYMAP_RESET_B(layer) ACTION(ACT_KEYMAP, (layer)<<8 | OP_RESET | ON_PRESS)
|
#define ACTION_KEYMAP_RESET_B(layer) ACTION(ACT_KEYMAP, (layer)<<8 | OP_RESET | ON_BOTH)
|
||||||
/* Keymap Invert */
|
/* Keymap Invert */
|
||||||
#define ACTION_KEYMAP_INV(layer) ACTION_KEYMAP_INV_B(layer)
|
#define ACTION_KEYMAP_INV(layer) ACTION_KEYMAP_INV_B(layer)
|
||||||
#define ACTION_KEYMAP_TAP_TOGGLE(layer) ACTION(ACT_KEYMAP, (layer)<<8 | OP_INV | 0)
|
#define ACTION_KEYMAP_TAP_TOGGLE(layer) ACTION(ACT_KEYMAP, (layer)<<8 | OP_INV | 0)
|
||||||
|
@ -39,7 +39,7 @@ action_t action_for_key(uint8_t layer, key_t key)
|
|||||||
}
|
}
|
||||||
|
|
||||||
__attribute__ ((weak))
|
__attribute__ ((weak))
|
||||||
void action_function(keyrecord_t *event, uint8_t id, uint8_t opt)
|
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
@ -70,7 +70,7 @@ action_t action_for_key(uint8_t layer, key_t key)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* not used for legacy keymap */
|
/* not used for legacy keymap */
|
||||||
void action_function(keyrecord_t *event, uint8_t id, uint8_t opt)
|
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user