- #include "taphold.h"
-
- bool taphold_process(uint16_t keycode, keyrecord_t *record) {
- for (int i = 0; i < taphold_config_size; i++) {
- taphold_t *config = &taphold_config[i];
- if (config->key == keycode && record->event.pressed) {
- if (config->mode == TAPHOLD_LAYER) {
- layer_on(config->longAction);
- } else {
- register_code(config->longAction);
- }
- config->time = timer_read32();
- config->keypos = record->event.key;
- return false;
- } else if (KEYEQ(record->event.key, config->keypos) && !record->event.pressed) {
- if (config->mode == TAPHOLD_LAYER) {
- layer_off(config->longAction);
- } else {
- unregister_code(config->longAction);
- }
- if (timer_elapsed32(config->time) < taphold_timeout) {
- tap_code(config->shortAction);
- }
- config->keypos.row = 255;
- return false;
- }
- }
- return true;
- }
|