diff options
49 files changed, 185 insertions, 163 deletions
diff --git a/builddefs/common_features.mk b/builddefs/common_features.mk index ca60873bec..90231c9a96 100644 --- a/builddefs/common_features.mk +++ b/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 diff --git a/keyboards/pabile/p18/keyboard.json b/keyboards/pabile/p18/keyboard.json index bf3380038a..12b7006680 100644 --- a/keyboards/pabile/p18/keyboard.json +++ b/keyboards/pabile/p18/keyboard.json @@ -27,8 +27,7 @@ {"pin_a": "F6", "pin_b": "F5"} ] }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/pabile/p20/ver1/keyboard.json b/keyboards/pabile/p20/ver1/keyboard.json index 3e3a16a6d9..2cc5fed1ee 100644 --- a/keyboards/pabile/p20/ver1/keyboard.json +++ b/keyboards/pabile/p20/ver1/keyboard.json @@ -22,8 +22,7 @@ {"pin_a": "F7", "pin_b": "B1"} ] }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT_numpad_5x4": { "layout": [ diff --git a/keyboards/pabile/p20/ver2/keyboard.json b/keyboards/pabile/p20/ver2/keyboard.json index cdacbf3aec..b82959af7a 100644 --- a/keyboards/pabile/p20/ver2/keyboard.json +++ b/keyboards/pabile/p20/ver2/keyboard.json @@ -15,8 +15,7 @@ "rows": ["C6", "D7", "E6", "B4", "B5"] }, "diode_direction": "COL2ROW", - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT_numpad_5x4": { "layout": [ diff --git a/keyboards/pabile/p40/keyboard.json b/keyboards/pabile/p40/keyboard.json index fbe4896687..de4eca82ac 100644 --- a/keyboards/pabile/p40/keyboard.json +++ b/keyboards/pabile/p40/keyboard.json @@ -20,8 +20,7 @@ "rows": ["F6", "B3", "B2", "B6"] }, "diode_direction": "COL2ROW", - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "community_layouts": ["ortho_4x10"], "layouts": { "LAYOUT_ortho_4x10": { diff --git a/keyboards/pabile/p40_ortho/keyboard.json b/keyboards/pabile/p40_ortho/keyboard.json index 3e5d9ea504..838c58235c 100644 --- a/keyboards/pabile/p40_ortho/keyboard.json +++ b/keyboards/pabile/p40_ortho/keyboard.json @@ -19,8 +19,7 @@ "rows": ["D1", "D0", "F4", "F5"] }, "diode_direction": "COL2ROW", - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT_ortho_4x10": { "layout": [ diff --git a/keyboards/pabile/p42/keyboard.json b/keyboards/pabile/p42/keyboard.json index 42c8964332..8311becdfc 100644 --- a/keyboards/pabile/p42/keyboard.json +++ b/keyboards/pabile/p42/keyboard.json @@ -20,8 +20,7 @@ "rows": ["D1", "D0", "D4", "C6"] }, "diode_direction": "COL2ROW", - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/peej/tripel/info.json b/keyboards/peej/tripel/info.json index 7a5c12461a..e716e20cfe 100644 --- a/keyboards/peej/tripel/info.json +++ b/keyboards/peej/tripel/info.json @@ -20,6 +20,5 @@ "rows": ["C6", "D4", "D0", "B4", "E6", "D7", "D1", "D2", "D3"] }, "diode_direction": "COL2ROW", - "processor": "atmega32u4", - "bootloader": "caterina" + "development_board": "promicro" } diff --git a/keyboards/peranekofactory/tone/rev1/keyboard.json b/keyboards/peranekofactory/tone/rev1/keyboard.json index fb7b41b27a..9e9f7013c2 100644 --- a/keyboards/peranekofactory/tone/rev1/keyboard.json +++ b/keyboards/peranekofactory/tone/rev1/keyboard.json @@ -27,8 +27,7 @@ }, "tap_keycode_delay": 100 }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "matrix_pins": { "direct": [ ["D4", "C6", "D7", "E6", "F6", "F7", "B1", "B3"] diff --git a/keyboards/peranekofactory/tone/rev2/keyboard.json b/keyboards/peranekofactory/tone/rev2/keyboard.json index fb7b41b27a..9e9f7013c2 100644 --- a/keyboards/peranekofactory/tone/rev2/keyboard.json +++ b/keyboards/peranekofactory/tone/rev2/keyboard.json @@ -27,8 +27,7 @@ }, "tap_keycode_delay": 100 }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "matrix_pins": { "direct": [ ["D4", "C6", "D7", "E6", "F6", "F7", "B1", "B3"] diff --git a/keyboards/pica40/rev1/keyboard.json b/keyboards/pica40/rev1/keyboard.json index 85c2221a13..a616a2e497 100644 --- a/keyboards/pica40/rev1/keyboard.json +++ b/keyboards/pica40/rev1/keyboard.json @@ -1,6 +1,5 @@ { - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "diode_direction": "COL2ROW", "matrix_pins": { "cols": ["D2", "B5", "B4", "E6", "D7"], diff --git a/keyboards/pimentoso/paddino02/rev1/keyboard.json b/keyboards/pimentoso/paddino02/rev1/keyboard.json index b0fddff9d3..30ac2a9a06 100644 --- a/keyboards/pimentoso/paddino02/rev1/keyboard.json +++ b/keyboards/pimentoso/paddino02/rev1/keyboard.json @@ -24,8 +24,7 @@ "rows": ["D1", "D0", "D4"] }, "diode_direction": "ROW2COL", - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/pimentoso/paddino02/rev2/left/keyboard.json b/keyboards/pimentoso/paddino02/rev2/left/keyboard.json index f89552220d..ff9687b2b1 100644 --- a/keyboards/pimentoso/paddino02/rev2/left/keyboard.json +++ b/keyboards/pimentoso/paddino02/rev2/left/keyboard.json @@ -24,8 +24,7 @@ "rows": ["D0", "D4", "D1"] }, "diode_direction": "COL2ROW", - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/pimentoso/paddino02/rev2/right/keyboard.json b/keyboards/pimentoso/paddino02/rev2/right/keyboard.json index 1148564a05..006eca8794 100644 --- a/keyboards/pimentoso/paddino02/rev2/right/keyboard.json +++ b/keyboards/pimentoso/paddino02/rev2/right/keyboard.json @@ -24,8 +24,7 @@ "rows": ["F4", "F6", "F5"] }, "diode_direction": "COL2ROW", - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/pimentoso/touhoupad/keyboard.json b/keyboards/pimentoso/touhoupad/keyboard.json index fed01eb5a6..5407d49e59 100644 --- a/keyboards/pimentoso/touhoupad/keyboard.json +++ b/keyboards/pimentoso/touhoupad/keyboard.json @@ -35,8 +35,7 @@ "rows": ["D4"] }, "diode_direction": "COL2ROW", - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/pinky/3/keyboard.json b/keyboards/pinky/3/keyboard.json index f02b6c72d0..9ca44c26f3 100644 --- a/keyboards/pinky/3/keyboard.json +++ b/keyboards/pinky/3/keyboard.json @@ -17,8 +17,7 @@ "pin": "D2" } }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layout_aliases": { "LAYOUT": "LAYOUT_split_3x7_4" }, diff --git a/keyboards/pinky/4/keyboard.json b/keyboards/pinky/4/keyboard.json index 68b1dcb14c..bc651638ac 100644 --- a/keyboards/pinky/4/keyboard.json +++ b/keyboards/pinky/4/keyboard.json @@ -17,8 +17,7 @@ "pin": "D2" } }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layout_aliases": { "LAYOUT": "LAYOUT_split_4x7_4" }, diff --git a/keyboards/plum47/keyboard.json b/keyboards/plum47/keyboard.json index 2c6e009300..00efab2c28 100644 --- a/keyboards/plum47/keyboard.json +++ b/keyboards/plum47/keyboard.json @@ -2,7 +2,7 @@ "manufacturer": "Masayuki Takagi", "keyboard_name": "plum47", "maintainer": "awh-tokyo", - "bootloader": "caterina", + "development_board": "promicro", "diode_direction": "COL2ROW", "features": { "bootmagic": true, @@ -14,7 +14,6 @@ "cols": ["F4", "F5", "F6", "F7", "B1", "B3", "B2", "B6", "B5", "B4", "E6", "D7"], "rows": ["D1", "D0", "D4", "C6"] }, - "processor": "atmega32u4", "url": "ihttps://github.com/takagi/plum47_buildguide", "usb": { "device_version": "1.0.0", diff --git a/keyboards/psuieee/pluto12/keyboard.json b/keyboards/psuieee/pluto12/keyboard.json index 02db5bc0a1..815c3b5949 100644 --- a/keyboards/psuieee/pluto12/keyboard.json +++ b/keyboards/psuieee/pluto12/keyboard.json @@ -31,8 +31,7 @@ {"pin_a": "B6", "pin_b": "B2"} ] }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/pteron36/keyboard.json b/keyboards/pteron36/keyboard.json index 783e1e8db0..5daca888e9 100644 --- a/keyboards/pteron36/keyboard.json +++ b/keyboards/pteron36/keyboard.json @@ -54,8 +54,7 @@ "ws2812": { "pin": "B6" }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "community_layouts": ["split_3x5_3"], "layouts": { "LAYOUT_split_3x5_3": { diff --git a/keyboards/rainkeebs/rainkeeb/keyboard.json b/keyboards/rainkeebs/rainkeeb/keyboard.json index 2d4a2ac5b9..b14ea45dde 100644 --- a/keyboards/rainkeebs/rainkeeb/keyboard.json +++ b/keyboards/rainkeebs/rainkeeb/keyboard.json @@ -32,8 +32,7 @@ {"pin_a": "B2", "pin_b": "B6"} ] }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/rart/rart4x4/keyboard.json b/keyboards/rart/rart4x4/keyboard.json index a18e4a4606..13d7ca3345 100644 --- a/keyboards/rart/rart4x4/keyboard.json +++ b/keyboards/rart/rart4x4/keyboard.json @@ -54,8 +54,7 @@ {"pin_a": "D7", "pin_b": "E6"} ] }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "community_layouts": ["ortho_4x4"], "layouts": { "LAYOUT_ortho_4x4": { diff --git a/keyboards/rart/rart67m/keyboard.json b/keyboards/rart/rart67m/keyboard.json index bade7834fd..a9ab73ce57 100644 --- a/keyboards/rart/rart67m/keyboard.json +++ b/keyboards/rart/rart67m/keyboard.json @@ -26,8 +26,7 @@ "rows": ["D3", "D2", "D4", "F6", "B3", "B4", "B2", "B5"] }, "diode_direction": "COL2ROW", - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layout_aliases": { "LAYOUT_all": "LAYOUT" }, diff --git a/keyboards/rart/rartlite/keyboard.json b/keyboards/rart/rartlite/keyboard.json index df9180d622..48325bf391 100644 --- a/keyboards/rart/rartlite/keyboard.json +++ b/keyboards/rart/rartlite/keyboard.json @@ -29,8 +29,7 @@ "num_lock": "F6", "on_state": 0 }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT_right_numpad": { "layout": [ diff --git a/keyboards/rart/rartpad/keyboard.json b/keyboards/rart/rartpad/keyboard.json index cc3f7120d2..70195fc4bf 100644 --- a/keyboards/rart/rartpad/keyboard.json +++ b/keyboards/rart/rartpad/keyboard.json @@ -57,8 +57,7 @@ "twinkle": true } }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "community_layouts": ["ortho_5x4", "numpad_5x4"], "layouts": { "LAYOUT_ortho_5x4": { diff --git a/keyboards/rate/pistachio_mp/keyboard.json b/keyboards/rate/pistachio_mp/keyboard.json index 71e3244523..cea6190b84 100644 --- a/keyboards/rate/pistachio_mp/keyboard.json +++ b/keyboards/rate/pistachio_mp/keyboard.json @@ -39,8 +39,7 @@ {"pin_a": "F4", "pin_b": "F5"} ] }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/recompile_keys/choco60/rev1/keyboard.json b/keyboards/recompile_keys/choco60/rev1/keyboard.json index 4e5a8903bd..6c0b363011 100644 --- a/keyboards/recompile_keys/choco60/rev1/keyboard.json +++ b/keyboards/recompile_keys/choco60/rev1/keyboard.json @@ -19,6 +19,5 @@ "pin": "D3" } }, - "processor": "atmega32u4", - "bootloader": "caterina" + "development_board": "promicro" } diff --git a/keyboards/recompile_keys/cocoa40/keyboard.json b/keyboards/recompile_keys/cocoa40/keyboard.json index 9fad026ea7..a576e54551 100644 --- a/keyboards/recompile_keys/cocoa40/keyboard.json +++ b/keyboards/recompile_keys/cocoa40/keyboard.json @@ -28,8 +28,7 @@ "pin": "D2" } }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/recompile_keys/nomu30/rev1/keyboard.json b/keyboards/recompile_keys/nomu30/rev1/keyboard.json index 01afb9fe7d..8865eb0535 100644 --- a/keyboards/recompile_keys/nomu30/rev1/keyboard.json +++ b/keyboards/recompile_keys/nomu30/rev1/keyboard.json @@ -10,6 +10,5 @@ "rows": ["D1", "D0", "D4"] }, "diode_direction": "COL2ROW", - "processor": "atmega32u4", - "bootloader": "caterina" + "development_board": "promicro" } diff --git a/keyboards/rect44/keyboard.json b/keyboards/rect44/keyboard.json index c863bec9a3..7e0202cde7 100644 --- a/keyboards/rect44/keyboard.json +++ b/keyboards/rect44/keyboard.json @@ -37,8 +37,7 @@ "rows": ["D3", "D2", "F5", "F4"] }, "diode_direction": "COL2ROW", - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/redox_media/keyboard.json b/keyboards/redox_media/keyboard.json index dba5657ea2..145d9116ca 100644 --- a/keyboards/redox_media/keyboard.json +++ b/keyboards/redox_media/keyboard.json @@ -36,8 +36,7 @@ "pin": "D0" } }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/reviung/reviung34/keyboard.json b/keyboards/reviung/reviung34/keyboard.json index 7495b7cc9d..d7e6fe422a 100755 --- a/keyboards/reviung/reviung34/keyboard.json +++ b/keyboards/reviung/reviung34/keyboard.json @@ -26,8 +26,7 @@ "rows": ["F4", "F5", "F6", "F7"] }, "diode_direction": "COL2ROW", - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "community_layouts": [ "split_3x5_2" ], diff --git a/keyboards/reviung/reviung39/keyboard.json b/keyboards/reviung/reviung39/keyboard.json index e18c1c163e..b57100d1eb 100644 --- a/keyboards/reviung/reviung39/keyboard.json +++ b/keyboards/reviung/reviung39/keyboard.json @@ -49,8 +49,7 @@ "rows": ["F4", "F5", "F6", "F7", "B1", "B3", "B2"] }, "diode_direction": "COL2ROW", - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layout_aliases": { "LAYOUT_reviung39": "LAYOUT" }, diff --git a/keyboards/reviung/reviung41/keyboard.json b/keyboards/reviung/reviung41/keyboard.json index b44827c3d2..f0ad524da2 100644 --- a/keyboards/reviung/reviung41/keyboard.json +++ b/keyboards/reviung/reviung41/keyboard.json @@ -49,8 +49,7 @@ "rows": ["F4", "F5", "F6", "F7", "B1", "B3", "B2"] }, "diode_direction": "COL2ROW", - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layout_aliases": { "LAYOUT_reviung41": "LAYOUT" }, diff --git a/keyboards/reviung/reviung5/keyboard.json b/keyboards/reviung/reviung5/keyboard.json index 7e7101c0ab..014cbb288a 100644 --- a/keyboards/reviung/reviung5/keyboard.json +++ b/keyboards/reviung/reviung5/keyboard.json @@ -53,8 +53,7 @@ {"pin_a": "D0", "pin_b": "D1"} ] }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layout_aliases": { "LAYOUT_reviung5": "LAYOUT" }, diff --git a/keyboards/reviung/reviung53/keyboard.json b/keyboards/reviung/reviung53/keyboard.json index 15f896e7d4..0468912f82 100644 --- a/keyboards/reviung/reviung53/keyboard.json +++ b/keyboards/reviung/reviung53/keyboard.json @@ -47,8 +47,7 @@ "rows": ["D0", "D4", "C6", "D7", "E6", "B4", "B5"] }, "diode_direction": "COL2ROW", - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layout_aliases": { "LAYOUT_reviung53": "LAYOUT" }, diff --git a/keyboards/rgbkb/zen/rev1/keyboard.json b/keyboards/rgbkb/zen/rev1/keyboard.json index b35381f607..94164016bb 100644 --- a/keyboards/rgbkb/zen/rev1/keyboard.json +++ b/keyboards/rgbkb/zen/rev1/keyboard.json @@ -38,8 +38,7 @@ "ws2812": { "pin": "D1" }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/rgbkb/zen/rev2/keyboard.json b/keyboards/rgbkb/zen/rev2/keyboard.json index 917274f186..d34fd7afb1 100644 --- a/keyboards/rgbkb/zen/rev2/keyboard.json +++ b/keyboards/rgbkb/zen/rev2/keyboard.json @@ -56,8 +56,7 @@ "ws2812": { "pin": "B6" }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/rpiguy9907/southpaw66/keyboard.json b/keyboards/rpiguy9907/southpaw66/keyboard.json index c751ee6d8e..980d217806 100644 --- a/keyboards/rpiguy9907/southpaw66/keyboard.json +++ b/keyboards/rpiguy9907/southpaw66/keyboard.json @@ -35,8 +35,7 @@ "tapping": { "term": 400 }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/rura66/rev1/keyboard.json b/keyboards/rura66/rev1/keyboard.json index cb9ad6f29a..3dc41aabd4 100644 --- a/keyboards/rura66/rev1/keyboard.json +++ b/keyboards/rura66/rev1/keyboard.json @@ -55,8 +55,7 @@ "ws2812": { "pin": "D3" }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/ryanbaekr/rb1/keyboard.json b/keyboards/ryanbaekr/rb1/keyboard.json index a7222869e0..8b1b1a5a82 100644 --- a/keyboards/ryanbaekr/rb1/keyboard.json +++ b/keyboards/ryanbaekr/rb1/keyboard.json @@ -7,8 +7,7 @@ "pid": "0x0001", "device_version": "0.0.3" }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "features": { "bootmagic": true, "extrakey": true, 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 } } diff --git a/quantum/quantum.c b/quantum/quantum.c index 0bb6ee0a91..cc20c7db2b 100644 --- a/quantum/quantum.c +++ b/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) @@ -174,10 +179,6 @@ __attribute__((weak)) bool pre_process_record_user(uint16_t keycode, keyrecord_t return true; } -__attribute__((weak)) bool process_action_kb(keyrecord_t *record) { - return true; -} - __attribute__((weak)) bool process_record_modules(uint16_t keycode, keyrecord_t *record) { return true; } @@ -292,9 +293,10 @@ void post_process_record_quantum(keyrecord_t *record) { post_process_record_kb(keycode, record); } -/* Core keycode function, hands off handling to other functions, - then processes internal quantum keycodes, and then processes - ACTIONs. */ +/** \brief Core keycode function + * + * Hands off handling to other quantum/process_keycode/ functions + */ bool process_record_quantum(keyrecord_t *record) { uint16_t keycode = get_record_keycode(record, true); @@ -439,85 +441,14 @@ bool process_record_quantum(keyrecord_t *record) { #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"); - } -#endif - return false; - 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(); - break; - case QK_ONE_SHOT_ON: - oneshot_enable(); - break; - case QK_ONE_SHOT_OFF: - oneshot_disable(); - break; -#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(); - } - } + process_oneshot(keycode, record) && #endif - } + process_quantum(keycode, record))) { + return false; } - return process_action_kb(record); + return true; } void set_single_default_layer(uint8_t default_layer) { diff --git a/quantum/quantum.h b/quantum/quantum.h index 3a994e9a03..0036cd784b 100644 --- a/quantum/quantum.h +++ b/quantum/quantum.h @@ -263,7 +263,6 @@ uint16_t get_event_keycode(keyevent_t event, bool update_layer_cache); bool pre_process_record_quantum(keyrecord_t *record); bool pre_process_record_kb(uint16_t keycode, keyrecord_t *record); bool pre_process_record_user(uint16_t keycode, keyrecord_t *record); -bool process_action_kb(keyrecord_t *record); bool process_record_kb(uint16_t keycode, keyrecord_t *record); bool process_record_user(uint16_t keycode, keyrecord_t *record); void post_process_record_kb(uint16_t keycode, keyrecord_t *record); @@ -1,3 +1,7 @@ +# THIS IS THE DEVELOP BRANCH + +Warning- This is the `develop` branch of QMK Firmware. You may encounter broken code here. Please see [Breaking Changes](https://docs.qmk.fm/#/breaking_changes) for more information. + # Quantum Mechanical Keyboard Firmware [](https://github.com/qmk/qmk_firmware/tags) |