// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) // 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); }