Browse Source

Relocate remaining `process_record_quantum` keycodes (#25328)

Joel Challis 1 year ago
parent
commit
f096e5a3f3

+ 2 - 0
builddefs/common_features.mk

@@ -29,6 +29,8 @@ QUANTUM_SRC += \
     $(QUANTUM_DIR)/logging/debug.c \
     $(QUANTUM_DIR)/logging/sendchar.c \
     $(QUANTUM_DIR)/process_keycode/process_default_layer.c \
+    $(QUANTUM_DIR)/process_keycode/process_oneshot.c \
+    $(QUANTUM_DIR)/process_keycode/process_quantum.c \
 
 include $(QUANTUM_DIR)/nvm/rules.mk
 

+ 25 - 0
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;
+}

+ 10 - 0
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);

+ 76 - 0
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;
+}

+ 10 - 0
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);

+ 5 - 0
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
         }
     }
 

+ 8 - 75
quantum/quantum.c

@@ -15,6 +15,7 @@
  */
 
 #include "quantum.h"
+#include "process_quantum.h"
 
 #ifdef BACKLIGHT_ENABLE
 #    include "process_backlight.h"
@@ -84,6 +85,10 @@
 #    include "process_layer_lock.h"
 #endif
 
+#ifndef NO_ACTION_ONESHOT
+#    include "process_oneshot.h"
+#endif
+
 #ifdef AUDIO_ENABLE
 #    ifndef GOODBYE_SONG
 #        define GOODBYE_SONG SONG(GOODBYE_SOUND)
@@ -438,84 +443,12 @@ bool process_record_quantum(keyrecord_t *record) {
 #endif
 #ifdef CONNECTION_ENABLE
             process_connection(keycode, record) &&
-#endif
-            true)) {
-        return false;
-    }
-
-    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 VELOCIKEY_ENABLE
-            case QK_VELOCIKEY_TOGGLE:
-                velocikey_toggle();
-                return false;
 #endif
 #ifndef NO_ACTION_ONESHOT
-            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
-#ifdef ENABLE_COMPILE_KEYCODE
-            case QK_MAKE: // Compiles the firmware, and adds the flash command based on keyboard bootloader
-            {
-#    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();
-                }
-                return false;
-            }
+            process_oneshot(keycode, record) &&
 #endif
-        }
+            process_quantum(keycode, record))) {
+        return false;
     }
 
     return process_action_kb(record);