53 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
// Copyright 2020 Christopher Courtney, aka Drashna Jael're  (@drashna) <drashna@live.com>
 | 
						|
// SPDX-License-Identifier: GPL-2.0-or-later
 | 
						|
 | 
						|
#include "drashna.h"
 | 
						|
 | 
						|
userspace_config_t userspace_config;
 | 
						|
 | 
						|
bool mod_key_press_timer(uint16_t code, uint16_t mod_code, bool pressed) {
 | 
						|
    static uint16_t this_timer;
 | 
						|
    if (pressed) {
 | 
						|
        this_timer = timer_read();
 | 
						|
    } else {
 | 
						|
        if (timer_elapsed(this_timer) < TAPPING_TERM) {
 | 
						|
            tap_code(code);
 | 
						|
        } else {
 | 
						|
            register_code(mod_code);
 | 
						|
            tap_code(code);
 | 
						|
            unregister_code(mod_code);
 | 
						|
        }
 | 
						|
    }
 | 
						|
    return false;
 | 
						|
}
 | 
						|
 | 
						|
bool mod_key_press(uint16_t code, uint16_t mod_code, bool pressed, uint16_t this_timer) {
 | 
						|
    if (pressed) {
 | 
						|
        this_timer = timer_read();
 | 
						|
    } else {
 | 
						|
        if (timer_elapsed(this_timer) < TAPPING_TERM) {
 | 
						|
            tap_code(code);
 | 
						|
        } else {
 | 
						|
            register_code(mod_code);
 | 
						|
            tap_code(code);
 | 
						|
            unregister_code(mod_code);
 | 
						|
        }
 | 
						|
    }
 | 
						|
    return false;
 | 
						|
}
 | 
						|
 | 
						|
bool hasAllBitsInMask(uint8_t value, uint8_t mask) {
 | 
						|
    value &= 0xF;
 | 
						|
    mask &= 0xF;
 | 
						|
 | 
						|
    return (value & mask) == mask;
 | 
						|
}
 | 
						|
 | 
						|
void tap_code16_nomods(uint8_t kc) {
 | 
						|
    uint8_t temp_mod = get_mods();
 | 
						|
    clear_mods();
 | 
						|
    clear_oneshot_mods();
 | 
						|
    tap_code16(kc);
 | 
						|
    set_mods(temp_mod);
 | 
						|
}
 |