59 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#include "quantum.h"
 | 
						|
#include "dshields.h"
 | 
						|
 | 
						|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
						|
    if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX)
 | 
						|
            || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)
 | 
						|
            || (keycode >= QK_MODS && keycode <= QK_MODS_MAX)) {
 | 
						|
        keycode = keycode & 0xFF;
 | 
						|
    }
 | 
						|
    if (keycode == KC_ESC && record->event.pressed) {
 | 
						|
        bool rc = true;
 | 
						|
        uint8_t mods = 0;
 | 
						|
        if ((mods = get_oneshot_mods()) && !has_oneshot_mods_timed_out()) {
 | 
						|
            clear_oneshot_mods();
 | 
						|
            unregister_mods(mods);
 | 
						|
            rc = false;
 | 
						|
        }
 | 
						|
        if ((mods = get_oneshot_locked_mods())) {
 | 
						|
            clear_oneshot_locked_mods();
 | 
						|
            unregister_mods(mods);
 | 
						|
            rc = false;
 | 
						|
        }
 | 
						|
        if (is_oneshot_layer_active()) {
 | 
						|
            layer_clear();
 | 
						|
            rc = false;
 | 
						|
        }
 | 
						|
        return rc;
 | 
						|
    }
 | 
						|
    return true;
 | 
						|
}
 | 
						|
 | 
						|
bool get_tapping_force_hold(uint16_t keycode, keyrecord_t *record) {
 | 
						|
    switch (keycode) {
 | 
						|
        case MT_A:
 | 
						|
        case MT_S:
 | 
						|
        case MT_D:
 | 
						|
        case MT_F:
 | 
						|
        case MT_J:
 | 
						|
        case MT_K:
 | 
						|
        case MT_L:
 | 
						|
        case MT_SCLN:
 | 
						|
            return true;
 | 
						|
        default:
 | 
						|
            return false;
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
bool get_permissive_hold(uint16_t keycode, keyrecord_t *record) {
 | 
						|
    switch (keycode) {
 | 
						|
        case MT_SPC:
 | 
						|
        case MT_BSPC:
 | 
						|
        case MT_ESC:
 | 
						|
            return true;
 | 
						|
        default:
 | 
						|
            return false;
 | 
						|
    }
 | 
						|
}
 | 
						|
 |