~ruther/qmk_firmware

57f63e43d862d3c36ee1e530920f7ee40e9713a2 — Albert Y 3 years ago 463cb40
[Docs] Correct logic of tap hold statement (#14992)

Co-authored-by: filterpaper <filterpaper@localhost>
1 files changed, 10 insertions(+), 13 deletions(-)

M docs/mod_tap.md
M docs/mod_tap.md => docs/mod_tap.md +10 -13
@@ 83,32 83,29 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {

### Changing hold function

Likewise, the same custom code can also be used to intercept the hold function to send custom user key code. The following example uses `LT(0, kc)` (layer-tap key with no practical use because layer 0 is always active) to add cut, copy and paste function to X,C and V keys when they are held down:
Likewise, similar custom code can also be used to intercept the hold function to send custom user key code. The following example uses `LT(0, kc)` (layer-tap key with no practical use because layer 0 is always active) to add cut, copy and paste function to X,C and V keys when they are held down:

```c
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    switch (keycode) {
        case LT(0,KC_X):
            if (record->tap.count && record->event.pressed) {
                return true;         // Return true for normal processing of tap keycode
            } else if (record->event.pressed) {
            if (!record->tap.count && record->event.pressed) {
                tap_code16(C(KC_X)); // Intercept hold function to send Ctrl-X
                return false;
            }
            return false;
            return true;             // Return true for normal processing of tap keycode
        case LT(0,KC_C):
            if (record->tap.count && record->event.pressed) {
                return true;         // Return true for normal processing of tap keycode
            } else if (record->event.pressed) {
            if (!record->tap.count && record->event.pressed) {
                tap_code16(C(KC_C)); // Intercept hold function to send Ctrl-C
                return false;
            }
            return false;
            return true;             // Return true for normal processing of tap keycode
        case LT(0,KC_V):
            if (record->tap.count && record->event.pressed) {
                return true;         // Return true for normal processing of tap keycode
            } else if (record->event.pressed) {
            if (!record->tap.count && record->event.pressed) {
                tap_code16(C(KC_V)); // Intercept hold function to send Ctrl-V
                return false;
            }
            return false;
            return true;             // Return true for normal processing of tap keycode
    }
    return true;
}