~ruther/qmk_firmware

edaf6654143fdd2dffaaa9c3ba8db1c9b282b5d0 — Pablo Martínez 2 years ago 220dad2
[Enhancement] Decouple autocorrect logic (#21116)

M quantum/process_keycode/process_autocorrect.c => quantum/process_keycode/process_autocorrect.c +18 -1
@@ 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


@@ 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.

M quantum/process_keycode/process_autocorrect.h => quantum/process_keycode/process_autocorrect.h +1 -0
@@ 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);

Do not follow this link