Add keymap clear/reset action
This commit is contained in:
		
							parent
							
								
									e0f960a576
								
							
						
					
					
						commit
						c3d57b69e0
					
				@ -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 */
 | 
			
		||||
 | 
			
		||||
@ -157,8 +157,8 @@ bool waiting_buffer_has_anykey_pressed(void);
 | 
			
		||||
 * Layer Actions
 | 
			
		||||
 * -------------
 | 
			
		||||
 * ACT_KEYMAP:
 | 
			
		||||
 * 1000|LLLL|0000 0000   Reset default layer
 | 
			
		||||
 * 1000|LLLL|0000 00xx   Reset default layer and clear overlay
 | 
			
		||||
 * 1000|--xx|0000 0000   Clear keyamp and overlay
 | 
			
		||||
 * 1000|LLLL|0000 00xx   Reset default layer and clear keymap and overlay
 | 
			
		||||
 * 1000|LLLL| keycode    Invert with tap key
 | 
			
		||||
 * 1000|LLLL|1111 0000   Invert with tap toggle
 | 
			
		||||
 * 1000|LLLL|1111 00xx   Invert[^= L]
 | 
			
		||||
@ -274,22 +274,25 @@ enum layer_params {
 | 
			
		||||
    OP_SET   = 0xFC,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
/* 
 | 
			
		||||
 * Default Layer
 | 
			
		||||
 */
 | 
			
		||||
#define ACTION_KEYMAP(layer)                     ACTION_KEYMAP_MOMENTARY(layer)
 | 
			
		||||
#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_DEFAULT_LAYER                      ACTION(ACT_KEYMAP, 0<<8 | OP_RESET | 0)
 | 
			
		||||
#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_R(layer)         ACTION_KEYMAP_RESET_R(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 */
 | 
			
		||||
#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_R(layer)             ACTION(ACT_KEYMAP, (layer)<<8 | OP_RESET | ON_PRESS)
 | 
			
		||||
#define ACTION_KEYMAP_RESET_B(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_BOTH)
 | 
			
		||||
/* Keymap Invert */
 | 
			
		||||
#define ACTION_KEYMAP_INV(layer)                 ACTION_KEYMAP_INV_B(layer)
 | 
			
		||||
#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))
 | 
			
		||||
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
 | 
			
		||||
@ -70,7 +70,7 @@ action_t action_for_key(uint8_t layer, key_t key)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
/* 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
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user