diff options
author | Albert Y <76888457+filterpaper@users.noreply.github.com> | 2023-05-13 15:42:06 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-13 08:42:06 +0100 |
commit | 128f808496cf7800fde3c7508388745bd99e8016 (patch) | |
tree | 4acee52bde06ed861a96420c01bb140c6c478f15 /quantum | |
parent | 8cb13b67507246cc2b362dcf255c857d9192a1dd (diff) |
Add a user callback for pre process record (#20584)
Diffstat (limited to 'quantum')
-rw-r--r-- | quantum/action.c | 5 | ||||
-rw-r--r-- | quantum/quantum.c | 17 | ||||
-rw-r--r-- | quantum/quantum.h | 3 |
3 files changed, 16 insertions, 9 deletions
diff --git a/quantum/action.c b/quantum/action.c index a683ff1130..59bfefc495 100644 --- a/quantum/action.c +++ b/quantum/action.c @@ -30,6 +30,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #include "wait.h" #include "keycode_config.h" #include "debug.h" +#include "quantum.h" #ifdef BACKLIGHT_ENABLE # include "backlight.h" @@ -65,10 +66,6 @@ __attribute__((weak)) bool get_retro_tapping(uint16_t keycode, keyrecord_t *reco } #endif -__attribute__((weak)) bool pre_process_record_quantum(keyrecord_t *record) { - return true; -} - /** \brief Called to execute an action. * * FIXME: Needs documentation. diff --git a/quantum/quantum.c b/quantum/quantum.c index 0587f215fe..950be3182e 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -114,6 +114,14 @@ __attribute__((weak)) void tap_code16(uint16_t code) { tap_code16_delay(code, code == KC_CAPS_LOCK ? TAP_HOLD_CAPS_DELAY : TAP_CODE_DELAY); } +__attribute__((weak)) bool pre_process_record_kb(uint16_t keycode, keyrecord_t *record) { + return pre_process_record_user(keycode, record); +} + +__attribute__((weak)) bool pre_process_record_user(uint16_t keycode, keyrecord_t *record) { + return true; +} + __attribute__((weak)) bool process_action_kb(keyrecord_t *record) { return true; } @@ -202,14 +210,13 @@ uint16_t get_event_keycode(keyevent_t event, bool update_layer_cache) { /* Get keycode, and then process pre tapping functionality */ bool pre_process_record_quantum(keyrecord_t *record) { - if (!( + uint16_t keycode = get_record_keycode(record, true); #ifdef COMBO_ENABLE - process_combo(get_record_keycode(record, true), record) && -#endif - true)) { + if (!(process_combo(keycode, record))) { return false; } - return true; // continue processing +#endif + return pre_process_record_kb(keycode, record); } /* Get keycode, and then call keyboard function */ diff --git a/quantum/quantum.h b/quantum/quantum.h index 38186a48a3..fec92a5244 100644 --- a/quantum/quantum.h +++ b/quantum/quantum.h @@ -261,6 +261,9 @@ void set_single_persistent_default_layer(uint8_t default_layer); uint16_t get_record_keycode(keyrecord_t *record, bool update_layer_cache); 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); |