Add Post Processing to process_record (#4892)
* Improve process_record system Code based on @colinta's * Rename and better handle functions * Fix incorrect function call to process_record_user * Add documentation for post_process_record * Add both get_event_keycode and get_record_keycode functions And add some comments about these functions * Update code format * Cleanup merge artifacts
This commit is contained in:
committed by
Florian Didron
parent
63df792fcc
commit
a4fcea7a90
@@ -117,6 +117,10 @@ __attribute__((weak)) bool process_record_kb(uint16_t keycode, keyrecord_t *reco
|
||||
|
||||
__attribute__((weak)) bool process_record_user(uint16_t keycode, keyrecord_t *record) { return true; }
|
||||
|
||||
__attribute__((weak)) void post_process_record_kb(uint16_t keycode, keyrecord_t *record) { post_process_record_user(keycode, record); }
|
||||
|
||||
__attribute__((weak)) void post_process_record_user(uint16_t keycode, keyrecord_t *record) {}
|
||||
|
||||
void reset_keyboard(void) {
|
||||
clear_keyboard();
|
||||
#if defined(MIDI_ENABLE) && defined(MIDI_BASIC)
|
||||
@@ -169,9 +173,15 @@ uint16_t get_event_keycode(keyevent_t event) {
|
||||
return keymap_key_to_keycode(layer_switch_get_layer(event.key), event.key);
|
||||
}
|
||||
|
||||
/* Main keycode processing function. Hands off handling to other functions,
|
||||
* then processes internal Quantum keycodes, then processes ACTIONs.
|
||||
*/
|
||||
/* Get keycode, and then call keyboard function */
|
||||
void post_process_record_quantum(keyrecord_t *record) {
|
||||
uint16_t keycode = get_record_keycode(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. */
|
||||
bool process_record_quantum(keyrecord_t *record) {
|
||||
uint16_t keycode = get_record_keycode(record);
|
||||
|
||||
@@ -191,7 +201,7 @@ bool process_record_quantum(keyrecord_t *record) {
|
||||
|
||||
#ifdef WPM_ENABLE
|
||||
if (record->event.pressed) {
|
||||
update_wpm(keycode);
|
||||
update_wpm(keycode);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -665,7 +675,7 @@ void matrix_scan_quantum() {
|
||||
#endif
|
||||
|
||||
#ifdef WPM_ENABLE
|
||||
decay_wpm();
|
||||
decay_wpm();
|
||||
#endif
|
||||
|
||||
#ifdef HAPTIC_ENABLE
|
||||
|
||||
@@ -266,6 +266,8 @@ uint16_t get_event_keycode(keyevent_t event);
|
||||
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);
|
||||
void post_process_record_user(uint16_t keycode, keyrecord_t *record);
|
||||
|
||||
#ifndef BOOTMAGIC_LITE_COLUMN
|
||||
# define BOOTMAGIC_LITE_COLUMN 0
|
||||
|
||||
@@ -151,6 +151,8 @@ void process_record_nocache(keyrecord_t *record) { process_record(record); }
|
||||
|
||||
__attribute__((weak)) bool process_record_quantum(keyrecord_t *record) { return true; }
|
||||
|
||||
__attribute__((weak)) void post_process_record_quantum(keyrecord_t *record) {}
|
||||
|
||||
#ifndef NO_ACTION_TAPPING
|
||||
/** \brief Allows for handling tap-hold actions immediately instead of waiting for TAPPING_TERM or another keypress.
|
||||
*
|
||||
@@ -185,6 +187,11 @@ void process_record(keyrecord_t *record) {
|
||||
|
||||
if (!process_record_quantum(record)) return;
|
||||
|
||||
process_record_handler(record);
|
||||
post_process_record_quantum(record);
|
||||
}
|
||||
|
||||
void process_record_handler(keyrecord_t *record) {
|
||||
action_t action = store_or_get_action(record->event.pressed, record->event.key);
|
||||
dprint("ACTION: ");
|
||||
debug_action(action);
|
||||
@@ -988,7 +995,6 @@ bool is_tap_action(action_t action) {
|
||||
* FIXME: Needs documentation.
|
||||
*/
|
||||
void debug_event(keyevent_t event) { dprintf("%04X%c(%u)", (event.key.row << 8 | event.key.col), (event.pressed ? 'd' : 'u'), event.time); }
|
||||
|
||||
/** \brief Debug print (FIXME: Needs better description)
|
||||
*
|
||||
* FIXME: Needs documentation.
|
||||
|
||||
@@ -84,6 +84,8 @@ void process_hand_swap(keyevent_t *record);
|
||||
|
||||
void process_record_nocache(keyrecord_t *record);
|
||||
void process_record(keyrecord_t *record);
|
||||
void process_record_handler(keyrecord_t *record);
|
||||
void post_process_record_quantum(keyrecord_t *record);
|
||||
void process_action(keyrecord_t *record, action_t action);
|
||||
void register_code(uint8_t code);
|
||||
void unregister_code(uint8_t code);
|
||||
|
||||
Reference in New Issue
Block a user