diff options
Diffstat (limited to 'quantum/process_keycode')
| -rw-r--r-- | quantum/process_keycode/process_oneshot.c | 25 | ||||
| -rw-r--r-- | quantum/process_keycode/process_oneshot.h | 10 | ||||
| -rw-r--r-- | quantum/process_keycode/process_quantum.c | 76 | ||||
| -rw-r--r-- | quantum/process_keycode/process_quantum.h | 10 | ||||
| -rw-r--r-- | quantum/process_keycode/process_underglow.c | 5 | 
5 files changed, 126 insertions, 0 deletions
| diff --git a/quantum/process_keycode/process_oneshot.c b/quantum/process_keycode/process_oneshot.c new file mode 100644 index 0000000000..6c43da1011 --- /dev/null +++ b/quantum/process_keycode/process_oneshot.c @@ -0,0 +1,25 @@ +// Copyright 2025 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "process_oneshot.h" +#include "action_util.h" + +bool process_oneshot(uint16_t keycode, keyrecord_t *record) { +#ifndef NO_ACTION_ONESHOT +    if (record->event.pressed) { +        switch (keycode) { +            case QK_ONE_SHOT_TOGGLE: +                oneshot_toggle(); +                return false; +            case QK_ONE_SHOT_ON: +                oneshot_enable(); +                return false; +            case QK_ONE_SHOT_OFF: +                oneshot_disable(); +                return false; +        } +    } +#endif + +    return true; +} diff --git a/quantum/process_keycode/process_oneshot.h b/quantum/process_keycode/process_oneshot.h new file mode 100644 index 0000000000..11445b9b38 --- /dev/null +++ b/quantum/process_keycode/process_oneshot.h @@ -0,0 +1,10 @@ +// Copyright 2025 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include <stdint.h> +#include <stdbool.h> +#include "action.h" + +bool process_oneshot(uint16_t keycode, keyrecord_t *record); diff --git a/quantum/process_keycode/process_quantum.c b/quantum/process_keycode/process_quantum.c new file mode 100644 index 0000000000..703e00755b --- /dev/null +++ b/quantum/process_keycode/process_quantum.c @@ -0,0 +1,76 @@ +// Copyright 2025 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "process_quantum.h" +#include "quantum.h" + +#ifdef ENABLE_COMPILE_KEYCODE +/** \brief Compiles the firmware, and adds the flash command based on keyboard bootloader + */ +static void send_make_command(void) { +#    ifdef NO_ACTION_ONESHOT +    const uint8_t temp_mod = mod_config(get_mods()); +#    else +    const uint8_t temp_mod = mod_config(get_mods() | get_oneshot_mods()); +    clear_oneshot_mods(); +#    endif +    clear_mods(); + +    SEND_STRING_DELAY("qmk", TAP_CODE_DELAY); +    if (temp_mod & MOD_MASK_SHIFT) { // if shift is held, flash rather than compile +        SEND_STRING_DELAY(" flash ", TAP_CODE_DELAY); +    } else { +        SEND_STRING_DELAY(" compile ", TAP_CODE_DELAY); +    } +#    if defined(CONVERTER_ENABLED) +    SEND_STRING_DELAY("-kb " QMK_KEYBOARD " -km " QMK_KEYMAP " -e CONVERT_TO=" CONVERTER_TARGET SS_TAP(X_ENTER), TAP_CODE_DELAY); +#    else +    SEND_STRING_DELAY("-kb " QMK_KEYBOARD " -km " QMK_KEYMAP SS_TAP(X_ENTER), TAP_CODE_DELAY); +#    endif +    if (temp_mod & MOD_MASK_SHIFT && temp_mod & MOD_MASK_CTRL) { +        reset_keyboard(); +    } +} +#endif + +bool process_quantum(uint16_t keycode, keyrecord_t *record) { +    if (record->event.pressed) { +        switch (keycode) { +#ifndef NO_RESET +            case QK_BOOTLOADER: +                reset_keyboard(); +                return false; +            case QK_REBOOT: +                soft_reset_keyboard(); +                return false; +#endif +#ifndef NO_DEBUG +            case QK_DEBUG_TOGGLE: +                debug_enable ^= 1; +                if (debug_enable) { +                    print("DEBUG: enabled.\n"); +                } else { +                    print("DEBUG: disabled.\n"); +                } +                return false; +#endif +            case QK_CLEAR_EEPROM: +#ifdef NO_RESET +                eeconfig_init(); +#else +                eeconfig_disable(); +                soft_reset_keyboard(); +#endif +                return false; +#ifdef ENABLE_COMPILE_KEYCODE +            case QK_MAKE: +                send_make_command(); +                return false; +#endif +            default: +                break; +        } +    } + +    return true; +} diff --git a/quantum/process_keycode/process_quantum.h b/quantum/process_keycode/process_quantum.h new file mode 100644 index 0000000000..5c2462be01 --- /dev/null +++ b/quantum/process_keycode/process_quantum.h @@ -0,0 +1,10 @@ +// Copyright 2025 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include <stdint.h> +#include <stdbool.h> +#include "action.h" + +bool process_quantum(uint16_t keycode, keyrecord_t *record); diff --git a/quantum/process_keycode/process_underglow.c b/quantum/process_keycode/process_underglow.c index b8d8989ef3..78006ee099 100644 --- a/quantum/process_keycode/process_underglow.c +++ b/quantum/process_keycode/process_underglow.c @@ -200,6 +200,11 @@ bool process_underglow(uint16_t keycode, keyrecord_t *record) {                  }  #endif                  return false; +#ifdef VELOCIKEY_ENABLE +            case QK_VELOCIKEY_TOGGLE: +                velocikey_toggle(); +                return false; +#endif          }      } | 
