summaryrefslogtreecommitdiff
path: root/quantum/quantum.c
diff options
context:
space:
mode:
authorDrashna Jaelre <drashna@live.com>2020-03-22 06:29:05 -0700
committerFlorian Didron <fdidron@users.noreply.github.com>2020-06-12 17:00:27 +0900
commita4fcea7a9045d6f31ffaec3bb8131a7c11f29a70 (patch)
treeec89c174497a6a00a3e621b37e62b803b36e022b /quantum/quantum.c
parent63df792fcc1b600e24c12102ce7f719d0ca9b09a (diff)
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
Diffstat (limited to 'quantum/quantum.c')
-rw-r--r--quantum/quantum.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/quantum/quantum.c b/quantum/quantum.c
index b31c98852c..354fa480bb 100644
--- a/quantum/quantum.c
+++ b/quantum/quantum.c
@@ -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