Skip to content

Commit

Permalink
[Enhancement] Decouple autocorrect logic (qmk#21116)
Browse files Browse the repository at this point in the history
  • Loading branch information
elpekenin authored Jun 4, 2023
1 parent 220dad2 commit edaf665
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 1 deletion.
19 changes: 18 additions & 1 deletion quantum/process_keycode/process_autocorrect.c
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ void autocorrect_toggle(void) {
}

/**
* @brief handler for determining if autocorrect should process keypress
* @brief handler for user to override whether autocorrect should process this keypress
*
* @param keycode Keycode registered by matrix press, per keymap
* @param record keyrecord_t structure
Expand All @@ -67,6 +67,23 @@ void autocorrect_toggle(void) {
* @return false Stop processing and escape from autocorrect.
*/
__attribute__((weak)) bool process_autocorrect_user(uint16_t *keycode, keyrecord_t *record, uint8_t *typo_buffer_size, uint8_t *mods) {
return process_autocorrect_default_handler(keycode, record, typo_buffer_size, mods);
}

/**
* @brief fallback handler for determining if autocorrect should process this keypress
* can be used by user callback to get the basic keycode being "wrapped"
*
* NOTE: These values may have been edited by user callback before getting here
*
* @param keycode Keycode registered by matrix press, per keymap
* @param record keyrecord_t structure
* @param typo_buffer_size passed along to allow resetting of autocorrect buffer
* @param mods allow processing of mod status
* @return true Allow autocorection
* @return false Stop processing and escape from autocorrect.
*/
bool process_autocorrect_default_handler(uint16_t *keycode, keyrecord_t *record, uint8_t *typo_buffer_size, uint8_t *mods) {
// See quantum_keycodes.h for reference on these matched ranges.
switch (*keycode) {
// Exclude these keycodes from processing.
Expand Down
1 change: 1 addition & 0 deletions quantum/process_keycode/process_autocorrect.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

bool process_autocorrect(uint16_t keycode, keyrecord_t *record);
bool process_autocorrect_user(uint16_t *keycode, keyrecord_t *record, uint8_t *typo_buffer_size, uint8_t *mods);
bool process_autocorrect_default_handler(uint16_t *keycode, keyrecord_t *record, uint8_t *typo_buffer_size, uint8_t *mods);
bool apply_autocorrect(uint8_t backspaces, const char *str);

bool autocorrect_is_enabled(void);
Expand Down

0 comments on commit edaf665

Please sign in to comment.